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 opCreateReplicationGroup = "CreateReplicationGroup"
1043
1044// CreateReplicationGroupRequest generates a "aws/request.Request" representing the
1045// client's request for the CreateReplicationGroup 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 CreateReplicationGroup for more information on using the CreateReplicationGroup
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 CreateReplicationGroupRequest method.
1060//    req, resp := client.CreateReplicationGroupRequest(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/CreateReplicationGroup
1068func (c *ElastiCache) CreateReplicationGroupRequest(input *CreateReplicationGroupInput) (req *request.Request, output *CreateReplicationGroupOutput) {
1069	op := &request.Operation{
1070		Name:       opCreateReplicationGroup,
1071		HTTPMethod: "POST",
1072		HTTPPath:   "/",
1073	}
1074
1075	if input == nil {
1076		input = &CreateReplicationGroupInput{}
1077	}
1078
1079	output = &CreateReplicationGroupOutput{}
1080	req = c.newRequest(op, input, output)
1081	return
1082}
1083
1084// CreateReplicationGroup API operation for Amazon ElastiCache.
1085//
1086// Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled)
1087// replication group.
1088//
1089// A Redis (cluster mode disabled) replication group is a collection of clusters,
1090// where one of the clusters is a read/write primary and the others are read-only
1091// replicas. Writes to the primary are asynchronously propagated to the replicas.
1092//
1093// A Redis (cluster mode enabled) replication group is a collection of 1 to
1094// 90 node groups (shards). Each node group (shard) has one read/write primary
1095// node and up to 5 read-only replica nodes. Writes to the primary are asynchronously
1096// propagated to the replicas. Redis (cluster mode enabled) replication groups
1097// partition the data across node groups (shards).
1098//
1099// When a Redis (cluster mode disabled) replication group has been successfully
1100// created, you can add one or more read replicas to it, up to a total of 5
1101// read replicas. You cannot alter a Redis (cluster mode enabled) replication
1102// group after it has been created. However, if you need to increase or decrease
1103// the number of node groups (console: shards), you can avail yourself of ElastiCache
1104// for Redis' enhanced backup and restore. For more information, see Restoring
1105// From a Backup with Cluster Resizing (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-restoring.html)
1106// in the ElastiCache User Guide.
1107//
1108// This operation is valid for Redis only.
1109//
1110// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1111// with awserr.Error's Code and Message methods to get detailed information about
1112// the error.
1113//
1114// See the AWS API reference guide for Amazon ElastiCache's
1115// API operation CreateReplicationGroup for usage and error information.
1116//
1117// Returned Error Codes:
1118//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1119//   The requested cluster ID does not refer to an existing cluster.
1120//
1121//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1122//   The requested cluster is not in the available state.
1123//
1124//   * ErrCodeReplicationGroupAlreadyExistsFault "ReplicationGroupAlreadyExists"
1125//   The specified replication group already exists.
1126//
1127//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1128//   The requested cache node type is not available in the specified Availability
1129//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1130//   in the ElastiCache User Guide.
1131//
1132//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1133//   The requested cache security group name does not refer to an existing cache
1134//   security group.
1135//
1136//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1137//   The requested cache subnet group name does not refer to an existing cache
1138//   subnet group.
1139//
1140//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1141//   The request cannot be processed because it would exceed the allowed number
1142//   of clusters per customer.
1143//
1144//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
1145//   The request cannot be processed because it would exceed the allowed number
1146//   of cache nodes in a single cluster.
1147//
1148//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1149//   The request cannot be processed because it would exceed the allowed number
1150//   of cache nodes per customer.
1151//
1152//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1153//   The requested cache parameter group name does not refer to an existing cache
1154//   parameter group.
1155//
1156//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1157//   The VPC network is in an invalid state.
1158//
1159//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
1160//   The request cannot be processed because it would cause the resource to have
1161//   more than the allowed number of tags. The maximum number of tags permitted
1162//   on a resource is 50.
1163//
1164//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1165//   The request cannot be processed because it would exceed the maximum allowed
1166//   number of node groups (shards) in a single replication group. The default
1167//   maximum is 90
1168//
1169//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1170//   The value for a parameter is invalid.
1171//
1172//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1173//   Two or more incompatible parameters were specified.
1174//
1175// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
1176func (c *ElastiCache) CreateReplicationGroup(input *CreateReplicationGroupInput) (*CreateReplicationGroupOutput, error) {
1177	req, out := c.CreateReplicationGroupRequest(input)
1178	return out, req.Send()
1179}
1180
1181// CreateReplicationGroupWithContext is the same as CreateReplicationGroup with the addition of
1182// the ability to pass a context and additional request options.
1183//
1184// See CreateReplicationGroup for details on how to use this API operation.
1185//
1186// The context must be non-nil and will be used for request cancellation. If
1187// the context is nil a panic will occur. In the future the SDK may create
1188// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1189// for more information on using Contexts.
1190func (c *ElastiCache) CreateReplicationGroupWithContext(ctx aws.Context, input *CreateReplicationGroupInput, opts ...request.Option) (*CreateReplicationGroupOutput, error) {
1191	req, out := c.CreateReplicationGroupRequest(input)
1192	req.SetContext(ctx)
1193	req.ApplyOptions(opts...)
1194	return out, req.Send()
1195}
1196
1197const opCreateSnapshot = "CreateSnapshot"
1198
1199// CreateSnapshotRequest generates a "aws/request.Request" representing the
1200// client's request for the CreateSnapshot operation. The "output" return
1201// value will be populated with the request's response once the request completes
1202// successfully.
1203//
1204// Use "Send" method on the returned Request to send the API call to the service.
1205// the "output" return value is not valid until after Send returns without error.
1206//
1207// See CreateSnapshot for more information on using the CreateSnapshot
1208// API call, and error handling.
1209//
1210// This method is useful when you want to inject custom logic or configuration
1211// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1212//
1213//
1214//    // Example sending a request using the CreateSnapshotRequest method.
1215//    req, resp := client.CreateSnapshotRequest(params)
1216//
1217//    err := req.Send()
1218//    if err == nil { // resp is now filled
1219//        fmt.Println(resp)
1220//    }
1221//
1222// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1223func (c *ElastiCache) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *CreateSnapshotOutput) {
1224	op := &request.Operation{
1225		Name:       opCreateSnapshot,
1226		HTTPMethod: "POST",
1227		HTTPPath:   "/",
1228	}
1229
1230	if input == nil {
1231		input = &CreateSnapshotInput{}
1232	}
1233
1234	output = &CreateSnapshotOutput{}
1235	req = c.newRequest(op, input, output)
1236	return
1237}
1238
1239// CreateSnapshot API operation for Amazon ElastiCache.
1240//
1241// Creates a copy of an entire cluster or replication group at a specific moment
1242// in time.
1243//
1244// This operation is valid for Redis only.
1245//
1246// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1247// with awserr.Error's Code and Message methods to get detailed information about
1248// the error.
1249//
1250// See the AWS API reference guide for Amazon ElastiCache's
1251// API operation CreateSnapshot for usage and error information.
1252//
1253// Returned Error Codes:
1254//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1255//   You already have a snapshot with the given name.
1256//
1257//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1258//   The requested cluster ID does not refer to an existing cluster.
1259//
1260//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1261//   The specified replication group does not exist.
1262//
1263//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1264//   The requested cluster is not in the available state.
1265//
1266//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1267//   The requested replication group is not in the available state.
1268//
1269//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1270//   The request cannot be processed because it would exceed the maximum number
1271//   of snapshots.
1272//
1273//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1274//   You attempted one of the following operations:
1275//
1276//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1277//      node.
1278//
1279//      * Creating a snapshot of a cluster that is running Memcached rather than
1280//      Redis.
1281//
1282//   Neither of these are supported by ElastiCache.
1283//
1284//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1285//   Two or more incompatible parameters were specified.
1286//
1287//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1288//   The value for a parameter is invalid.
1289//
1290// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1291func (c *ElastiCache) CreateSnapshot(input *CreateSnapshotInput) (*CreateSnapshotOutput, error) {
1292	req, out := c.CreateSnapshotRequest(input)
1293	return out, req.Send()
1294}
1295
1296// CreateSnapshotWithContext is the same as CreateSnapshot with the addition of
1297// the ability to pass a context and additional request options.
1298//
1299// See CreateSnapshot for details on how to use this API operation.
1300//
1301// The context must be non-nil and will be used for request cancellation. If
1302// the context is nil a panic will occur. In the future the SDK may create
1303// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1304// for more information on using Contexts.
1305func (c *ElastiCache) CreateSnapshotWithContext(ctx aws.Context, input *CreateSnapshotInput, opts ...request.Option) (*CreateSnapshotOutput, error) {
1306	req, out := c.CreateSnapshotRequest(input)
1307	req.SetContext(ctx)
1308	req.ApplyOptions(opts...)
1309	return out, req.Send()
1310}
1311
1312const opDecreaseReplicaCount = "DecreaseReplicaCount"
1313
1314// DecreaseReplicaCountRequest generates a "aws/request.Request" representing the
1315// client's request for the DecreaseReplicaCount operation. The "output" return
1316// value will be populated with the request's response once the request completes
1317// successfully.
1318//
1319// Use "Send" method on the returned Request to send the API call to the service.
1320// the "output" return value is not valid until after Send returns without error.
1321//
1322// See DecreaseReplicaCount for more information on using the DecreaseReplicaCount
1323// API call, and error handling.
1324//
1325// This method is useful when you want to inject custom logic or configuration
1326// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1327//
1328//
1329//    // Example sending a request using the DecreaseReplicaCountRequest method.
1330//    req, resp := client.DecreaseReplicaCountRequest(params)
1331//
1332//    err := req.Send()
1333//    if err == nil { // resp is now filled
1334//        fmt.Println(resp)
1335//    }
1336//
1337// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1338func (c *ElastiCache) DecreaseReplicaCountRequest(input *DecreaseReplicaCountInput) (req *request.Request, output *DecreaseReplicaCountOutput) {
1339	op := &request.Operation{
1340		Name:       opDecreaseReplicaCount,
1341		HTTPMethod: "POST",
1342		HTTPPath:   "/",
1343	}
1344
1345	if input == nil {
1346		input = &DecreaseReplicaCountInput{}
1347	}
1348
1349	output = &DecreaseReplicaCountOutput{}
1350	req = c.newRequest(op, input, output)
1351	return
1352}
1353
1354// DecreaseReplicaCount API operation for Amazon ElastiCache.
1355//
1356// Dynamically decreases the number of replics in a Redis (cluster mode disabled)
1357// replication group or the number of replica nodes in one or more node groups
1358// (shards) of a Redis (cluster mode enabled) replication group. This operation
1359// is performed with no cluster down time.
1360//
1361// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1362// with awserr.Error's Code and Message methods to get detailed information about
1363// the error.
1364//
1365// See the AWS API reference guide for Amazon ElastiCache's
1366// API operation DecreaseReplicaCount for usage and error information.
1367//
1368// Returned Error Codes:
1369//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1370//   The specified replication group does not exist.
1371//
1372//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1373//   The requested replication group is not in the available state.
1374//
1375//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1376//   The requested cluster is not in the available state.
1377//
1378//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1379//   The VPC network is in an invalid state.
1380//
1381//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1382//   The requested cache node type is not available in the specified Availability
1383//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1384//   in the ElastiCache User Guide.
1385//
1386//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1387//   The request cannot be processed because it would exceed the allowed number
1388//   of clusters per customer.
1389//
1390//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1391//   The request cannot be processed because it would exceed the maximum allowed
1392//   number of node groups (shards) in a single replication group. The default
1393//   maximum is 90
1394//
1395//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1396//   The request cannot be processed because it would exceed the allowed number
1397//   of cache nodes per customer.
1398//
1399//   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
1400//   The specified service linked role (SLR) was not found.
1401//
1402//   * ErrCodeNoOperationFault "NoOperationFault"
1403//   The operation was not performed because no changes were required.
1404//
1405//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1406//   The value for a parameter is invalid.
1407//
1408//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1409//   Two or more incompatible parameters were specified.
1410//
1411// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1412func (c *ElastiCache) DecreaseReplicaCount(input *DecreaseReplicaCountInput) (*DecreaseReplicaCountOutput, error) {
1413	req, out := c.DecreaseReplicaCountRequest(input)
1414	return out, req.Send()
1415}
1416
1417// DecreaseReplicaCountWithContext is the same as DecreaseReplicaCount with the addition of
1418// the ability to pass a context and additional request options.
1419//
1420// See DecreaseReplicaCount for details on how to use this API operation.
1421//
1422// The context must be non-nil and will be used for request cancellation. If
1423// the context is nil a panic will occur. In the future the SDK may create
1424// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1425// for more information on using Contexts.
1426func (c *ElastiCache) DecreaseReplicaCountWithContext(ctx aws.Context, input *DecreaseReplicaCountInput, opts ...request.Option) (*DecreaseReplicaCountOutput, error) {
1427	req, out := c.DecreaseReplicaCountRequest(input)
1428	req.SetContext(ctx)
1429	req.ApplyOptions(opts...)
1430	return out, req.Send()
1431}
1432
1433const opDeleteCacheCluster = "DeleteCacheCluster"
1434
1435// DeleteCacheClusterRequest generates a "aws/request.Request" representing the
1436// client's request for the DeleteCacheCluster operation. The "output" return
1437// value will be populated with the request's response once the request completes
1438// successfully.
1439//
1440// Use "Send" method on the returned Request to send the API call to the service.
1441// the "output" return value is not valid until after Send returns without error.
1442//
1443// See DeleteCacheCluster for more information on using the DeleteCacheCluster
1444// API call, and error handling.
1445//
1446// This method is useful when you want to inject custom logic or configuration
1447// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1448//
1449//
1450//    // Example sending a request using the DeleteCacheClusterRequest method.
1451//    req, resp := client.DeleteCacheClusterRequest(params)
1452//
1453//    err := req.Send()
1454//    if err == nil { // resp is now filled
1455//        fmt.Println(resp)
1456//    }
1457//
1458// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1459func (c *ElastiCache) DeleteCacheClusterRequest(input *DeleteCacheClusterInput) (req *request.Request, output *DeleteCacheClusterOutput) {
1460	op := &request.Operation{
1461		Name:       opDeleteCacheCluster,
1462		HTTPMethod: "POST",
1463		HTTPPath:   "/",
1464	}
1465
1466	if input == nil {
1467		input = &DeleteCacheClusterInput{}
1468	}
1469
1470	output = &DeleteCacheClusterOutput{}
1471	req = c.newRequest(op, input, output)
1472	return
1473}
1474
1475// DeleteCacheCluster API operation for Amazon ElastiCache.
1476//
1477// Deletes a previously provisioned cluster. DeleteCacheCluster deletes all
1478// associated cache nodes, node endpoints and the cluster itself. When you receive
1479// a successful response from this operation, Amazon ElastiCache immediately
1480// begins deleting the cluster; you cannot cancel or revert this operation.
1481//
1482// This operation is not valid for:
1483//
1484//    * Redis (cluster mode enabled) clusters
1485//
1486//    * A cluster that is the last read replica of a replication group
1487//
1488//    * A node group (shard) that has Multi-AZ mode enabled
1489//
1490//    * A cluster from a Redis (cluster mode enabled) replication group
1491//
1492//    * A cluster that is not in the available state
1493//
1494// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1495// with awserr.Error's Code and Message methods to get detailed information about
1496// the error.
1497//
1498// See the AWS API reference guide for Amazon ElastiCache's
1499// API operation DeleteCacheCluster for usage and error information.
1500//
1501// Returned Error Codes:
1502//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1503//   The requested cluster ID does not refer to an existing cluster.
1504//
1505//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1506//   The requested cluster is not in the available state.
1507//
1508//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1509//   You already have a snapshot with the given name.
1510//
1511//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1512//   You attempted one of the following operations:
1513//
1514//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1515//      node.
1516//
1517//      * Creating a snapshot of a cluster that is running Memcached rather than
1518//      Redis.
1519//
1520//   Neither of these are supported by ElastiCache.
1521//
1522//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1523//   The request cannot be processed because it would exceed the maximum number
1524//   of snapshots.
1525//
1526//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1527//   The value for a parameter is invalid.
1528//
1529//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1530//   Two or more incompatible parameters were specified.
1531//
1532// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1533func (c *ElastiCache) DeleteCacheCluster(input *DeleteCacheClusterInput) (*DeleteCacheClusterOutput, error) {
1534	req, out := c.DeleteCacheClusterRequest(input)
1535	return out, req.Send()
1536}
1537
1538// DeleteCacheClusterWithContext is the same as DeleteCacheCluster with the addition of
1539// the ability to pass a context and additional request options.
1540//
1541// See DeleteCacheCluster for details on how to use this API operation.
1542//
1543// The context must be non-nil and will be used for request cancellation. If
1544// the context is nil a panic will occur. In the future the SDK may create
1545// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1546// for more information on using Contexts.
1547func (c *ElastiCache) DeleteCacheClusterWithContext(ctx aws.Context, input *DeleteCacheClusterInput, opts ...request.Option) (*DeleteCacheClusterOutput, error) {
1548	req, out := c.DeleteCacheClusterRequest(input)
1549	req.SetContext(ctx)
1550	req.ApplyOptions(opts...)
1551	return out, req.Send()
1552}
1553
1554const opDeleteCacheParameterGroup = "DeleteCacheParameterGroup"
1555
1556// DeleteCacheParameterGroupRequest generates a "aws/request.Request" representing the
1557// client's request for the DeleteCacheParameterGroup operation. The "output" return
1558// value will be populated with the request's response once the request completes
1559// successfully.
1560//
1561// Use "Send" method on the returned Request to send the API call to the service.
1562// the "output" return value is not valid until after Send returns without error.
1563//
1564// See DeleteCacheParameterGroup for more information on using the DeleteCacheParameterGroup
1565// API call, and error handling.
1566//
1567// This method is useful when you want to inject custom logic or configuration
1568// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1569//
1570//
1571//    // Example sending a request using the DeleteCacheParameterGroupRequest method.
1572//    req, resp := client.DeleteCacheParameterGroupRequest(params)
1573//
1574//    err := req.Send()
1575//    if err == nil { // resp is now filled
1576//        fmt.Println(resp)
1577//    }
1578//
1579// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1580func (c *ElastiCache) DeleteCacheParameterGroupRequest(input *DeleteCacheParameterGroupInput) (req *request.Request, output *DeleteCacheParameterGroupOutput) {
1581	op := &request.Operation{
1582		Name:       opDeleteCacheParameterGroup,
1583		HTTPMethod: "POST",
1584		HTTPPath:   "/",
1585	}
1586
1587	if input == nil {
1588		input = &DeleteCacheParameterGroupInput{}
1589	}
1590
1591	output = &DeleteCacheParameterGroupOutput{}
1592	req = c.newRequest(op, input, output)
1593	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1594	return
1595}
1596
1597// DeleteCacheParameterGroup API operation for Amazon ElastiCache.
1598//
1599// Deletes the specified cache parameter group. You cannot delete a cache parameter
1600// group if it is associated with any cache clusters.
1601//
1602// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1603// with awserr.Error's Code and Message methods to get detailed information about
1604// the error.
1605//
1606// See the AWS API reference guide for Amazon ElastiCache's
1607// API operation DeleteCacheParameterGroup for usage and error information.
1608//
1609// Returned Error Codes:
1610//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
1611//   The current state of the cache parameter group does not allow the requested
1612//   operation to occur.
1613//
1614//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1615//   The requested cache parameter group name does not refer to an existing cache
1616//   parameter group.
1617//
1618//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1619//   The value for a parameter is invalid.
1620//
1621//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1622//   Two or more incompatible parameters were specified.
1623//
1624// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1625func (c *ElastiCache) DeleteCacheParameterGroup(input *DeleteCacheParameterGroupInput) (*DeleteCacheParameterGroupOutput, error) {
1626	req, out := c.DeleteCacheParameterGroupRequest(input)
1627	return out, req.Send()
1628}
1629
1630// DeleteCacheParameterGroupWithContext is the same as DeleteCacheParameterGroup with the addition of
1631// the ability to pass a context and additional request options.
1632//
1633// See DeleteCacheParameterGroup for details on how to use this API operation.
1634//
1635// The context must be non-nil and will be used for request cancellation. If
1636// the context is nil a panic will occur. In the future the SDK may create
1637// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1638// for more information on using Contexts.
1639func (c *ElastiCache) DeleteCacheParameterGroupWithContext(ctx aws.Context, input *DeleteCacheParameterGroupInput, opts ...request.Option) (*DeleteCacheParameterGroupOutput, error) {
1640	req, out := c.DeleteCacheParameterGroupRequest(input)
1641	req.SetContext(ctx)
1642	req.ApplyOptions(opts...)
1643	return out, req.Send()
1644}
1645
1646const opDeleteCacheSecurityGroup = "DeleteCacheSecurityGroup"
1647
1648// DeleteCacheSecurityGroupRequest generates a "aws/request.Request" representing the
1649// client's request for the DeleteCacheSecurityGroup operation. The "output" return
1650// value will be populated with the request's response once the request completes
1651// successfully.
1652//
1653// Use "Send" method on the returned Request to send the API call to the service.
1654// the "output" return value is not valid until after Send returns without error.
1655//
1656// See DeleteCacheSecurityGroup for more information on using the DeleteCacheSecurityGroup
1657// API call, and error handling.
1658//
1659// This method is useful when you want to inject custom logic or configuration
1660// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1661//
1662//
1663//    // Example sending a request using the DeleteCacheSecurityGroupRequest method.
1664//    req, resp := client.DeleteCacheSecurityGroupRequest(params)
1665//
1666//    err := req.Send()
1667//    if err == nil { // resp is now filled
1668//        fmt.Println(resp)
1669//    }
1670//
1671// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1672func (c *ElastiCache) DeleteCacheSecurityGroupRequest(input *DeleteCacheSecurityGroupInput) (req *request.Request, output *DeleteCacheSecurityGroupOutput) {
1673	op := &request.Operation{
1674		Name:       opDeleteCacheSecurityGroup,
1675		HTTPMethod: "POST",
1676		HTTPPath:   "/",
1677	}
1678
1679	if input == nil {
1680		input = &DeleteCacheSecurityGroupInput{}
1681	}
1682
1683	output = &DeleteCacheSecurityGroupOutput{}
1684	req = c.newRequest(op, input, output)
1685	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1686	return
1687}
1688
1689// DeleteCacheSecurityGroup API operation for Amazon ElastiCache.
1690//
1691// Deletes a cache security group.
1692//
1693// You cannot delete a cache security group if it is associated with any clusters.
1694//
1695// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1696// with awserr.Error's Code and Message methods to get detailed information about
1697// the error.
1698//
1699// See the AWS API reference guide for Amazon ElastiCache's
1700// API operation DeleteCacheSecurityGroup for usage and error information.
1701//
1702// Returned Error Codes:
1703//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
1704//   The current state of the cache security group does not allow deletion.
1705//
1706//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1707//   The requested cache security group name does not refer to an existing cache
1708//   security group.
1709//
1710//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1711//   The value for a parameter is invalid.
1712//
1713//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1714//   Two or more incompatible parameters were specified.
1715//
1716// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1717func (c *ElastiCache) DeleteCacheSecurityGroup(input *DeleteCacheSecurityGroupInput) (*DeleteCacheSecurityGroupOutput, error) {
1718	req, out := c.DeleteCacheSecurityGroupRequest(input)
1719	return out, req.Send()
1720}
1721
1722// DeleteCacheSecurityGroupWithContext is the same as DeleteCacheSecurityGroup with the addition of
1723// the ability to pass a context and additional request options.
1724//
1725// See DeleteCacheSecurityGroup for details on how to use this API operation.
1726//
1727// The context must be non-nil and will be used for request cancellation. If
1728// the context is nil a panic will occur. In the future the SDK may create
1729// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1730// for more information on using Contexts.
1731func (c *ElastiCache) DeleteCacheSecurityGroupWithContext(ctx aws.Context, input *DeleteCacheSecurityGroupInput, opts ...request.Option) (*DeleteCacheSecurityGroupOutput, error) {
1732	req, out := c.DeleteCacheSecurityGroupRequest(input)
1733	req.SetContext(ctx)
1734	req.ApplyOptions(opts...)
1735	return out, req.Send()
1736}
1737
1738const opDeleteCacheSubnetGroup = "DeleteCacheSubnetGroup"
1739
1740// DeleteCacheSubnetGroupRequest generates a "aws/request.Request" representing the
1741// client's request for the DeleteCacheSubnetGroup operation. The "output" return
1742// value will be populated with the request's response once the request completes
1743// successfully.
1744//
1745// Use "Send" method on the returned Request to send the API call to the service.
1746// the "output" return value is not valid until after Send returns without error.
1747//
1748// See DeleteCacheSubnetGroup for more information on using the DeleteCacheSubnetGroup
1749// API call, and error handling.
1750//
1751// This method is useful when you want to inject custom logic or configuration
1752// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1753//
1754//
1755//    // Example sending a request using the DeleteCacheSubnetGroupRequest method.
1756//    req, resp := client.DeleteCacheSubnetGroupRequest(params)
1757//
1758//    err := req.Send()
1759//    if err == nil { // resp is now filled
1760//        fmt.Println(resp)
1761//    }
1762//
1763// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1764func (c *ElastiCache) DeleteCacheSubnetGroupRequest(input *DeleteCacheSubnetGroupInput) (req *request.Request, output *DeleteCacheSubnetGroupOutput) {
1765	op := &request.Operation{
1766		Name:       opDeleteCacheSubnetGroup,
1767		HTTPMethod: "POST",
1768		HTTPPath:   "/",
1769	}
1770
1771	if input == nil {
1772		input = &DeleteCacheSubnetGroupInput{}
1773	}
1774
1775	output = &DeleteCacheSubnetGroupOutput{}
1776	req = c.newRequest(op, input, output)
1777	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1778	return
1779}
1780
1781// DeleteCacheSubnetGroup API operation for Amazon ElastiCache.
1782//
1783// Deletes a cache subnet group.
1784//
1785// You cannot delete a cache subnet group if it is associated with any clusters.
1786//
1787// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1788// with awserr.Error's Code and Message methods to get detailed information about
1789// the error.
1790//
1791// See the AWS API reference guide for Amazon ElastiCache's
1792// API operation DeleteCacheSubnetGroup for usage and error information.
1793//
1794// Returned Error Codes:
1795//   * ErrCodeCacheSubnetGroupInUse "CacheSubnetGroupInUse"
1796//   The requested cache subnet group is currently in use.
1797//
1798//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1799//   The requested cache subnet group name does not refer to an existing cache
1800//   subnet group.
1801//
1802// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1803func (c *ElastiCache) DeleteCacheSubnetGroup(input *DeleteCacheSubnetGroupInput) (*DeleteCacheSubnetGroupOutput, error) {
1804	req, out := c.DeleteCacheSubnetGroupRequest(input)
1805	return out, req.Send()
1806}
1807
1808// DeleteCacheSubnetGroupWithContext is the same as DeleteCacheSubnetGroup with the addition of
1809// the ability to pass a context and additional request options.
1810//
1811// See DeleteCacheSubnetGroup for details on how to use this API operation.
1812//
1813// The context must be non-nil and will be used for request cancellation. If
1814// the context is nil a panic will occur. In the future the SDK may create
1815// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1816// for more information on using Contexts.
1817func (c *ElastiCache) DeleteCacheSubnetGroupWithContext(ctx aws.Context, input *DeleteCacheSubnetGroupInput, opts ...request.Option) (*DeleteCacheSubnetGroupOutput, error) {
1818	req, out := c.DeleteCacheSubnetGroupRequest(input)
1819	req.SetContext(ctx)
1820	req.ApplyOptions(opts...)
1821	return out, req.Send()
1822}
1823
1824const opDeleteReplicationGroup = "DeleteReplicationGroup"
1825
1826// DeleteReplicationGroupRequest generates a "aws/request.Request" representing the
1827// client's request for the DeleteReplicationGroup operation. The "output" return
1828// value will be populated with the request's response once the request completes
1829// successfully.
1830//
1831// Use "Send" method on the returned Request to send the API call to the service.
1832// the "output" return value is not valid until after Send returns without error.
1833//
1834// See DeleteReplicationGroup for more information on using the DeleteReplicationGroup
1835// API call, and error handling.
1836//
1837// This method is useful when you want to inject custom logic or configuration
1838// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1839//
1840//
1841//    // Example sending a request using the DeleteReplicationGroupRequest method.
1842//    req, resp := client.DeleteReplicationGroupRequest(params)
1843//
1844//    err := req.Send()
1845//    if err == nil { // resp is now filled
1846//        fmt.Println(resp)
1847//    }
1848//
1849// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
1850func (c *ElastiCache) DeleteReplicationGroupRequest(input *DeleteReplicationGroupInput) (req *request.Request, output *DeleteReplicationGroupOutput) {
1851	op := &request.Operation{
1852		Name:       opDeleteReplicationGroup,
1853		HTTPMethod: "POST",
1854		HTTPPath:   "/",
1855	}
1856
1857	if input == nil {
1858		input = &DeleteReplicationGroupInput{}
1859	}
1860
1861	output = &DeleteReplicationGroupOutput{}
1862	req = c.newRequest(op, input, output)
1863	return
1864}
1865
1866// DeleteReplicationGroup API operation for Amazon ElastiCache.
1867//
1868// Deletes an existing replication group. By default, this operation deletes
1869// the entire replication group, including the primary/primaries and all of
1870// the read replicas. If the replication group has only one primary, you can
1871// optionally delete only the read replicas, while retaining the primary by
1872// setting RetainPrimaryCluster=true.
1873//
1874// When you receive a successful response from this operation, Amazon ElastiCache
1875// immediately begins deleting the selected resources; you cannot cancel or
1876// revert this operation.
1877//
1878// This operation is valid for Redis only.
1879//
1880// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1881// with awserr.Error's Code and Message methods to get detailed information about
1882// the error.
1883//
1884// See the AWS API reference guide for Amazon ElastiCache's
1885// API operation DeleteReplicationGroup for usage and error information.
1886//
1887// Returned Error Codes:
1888//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1889//   The specified replication group does not exist.
1890//
1891//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1892//   The requested replication group is not in the available state.
1893//
1894//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1895//   You already have a snapshot with the given name.
1896//
1897//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1898//   You attempted one of the following operations:
1899//
1900//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1901//      node.
1902//
1903//      * Creating a snapshot of a cluster that is running Memcached rather than
1904//      Redis.
1905//
1906//   Neither of these are supported by ElastiCache.
1907//
1908//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1909//   The request cannot be processed because it would exceed the maximum number
1910//   of snapshots.
1911//
1912//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1913//   The value for a parameter is invalid.
1914//
1915//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1916//   Two or more incompatible parameters were specified.
1917//
1918// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
1919func (c *ElastiCache) DeleteReplicationGroup(input *DeleteReplicationGroupInput) (*DeleteReplicationGroupOutput, error) {
1920	req, out := c.DeleteReplicationGroupRequest(input)
1921	return out, req.Send()
1922}
1923
1924// DeleteReplicationGroupWithContext is the same as DeleteReplicationGroup with the addition of
1925// the ability to pass a context and additional request options.
1926//
1927// See DeleteReplicationGroup for details on how to use this API operation.
1928//
1929// The context must be non-nil and will be used for request cancellation. If
1930// the context is nil a panic will occur. In the future the SDK may create
1931// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1932// for more information on using Contexts.
1933func (c *ElastiCache) DeleteReplicationGroupWithContext(ctx aws.Context, input *DeleteReplicationGroupInput, opts ...request.Option) (*DeleteReplicationGroupOutput, error) {
1934	req, out := c.DeleteReplicationGroupRequest(input)
1935	req.SetContext(ctx)
1936	req.ApplyOptions(opts...)
1937	return out, req.Send()
1938}
1939
1940const opDeleteSnapshot = "DeleteSnapshot"
1941
1942// DeleteSnapshotRequest generates a "aws/request.Request" representing the
1943// client's request for the DeleteSnapshot operation. The "output" return
1944// value will be populated with the request's response once the request completes
1945// successfully.
1946//
1947// Use "Send" method on the returned Request to send the API call to the service.
1948// the "output" return value is not valid until after Send returns without error.
1949//
1950// See DeleteSnapshot for more information on using the DeleteSnapshot
1951// API call, and error handling.
1952//
1953// This method is useful when you want to inject custom logic or configuration
1954// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1955//
1956//
1957//    // Example sending a request using the DeleteSnapshotRequest method.
1958//    req, resp := client.DeleteSnapshotRequest(params)
1959//
1960//    err := req.Send()
1961//    if err == nil { // resp is now filled
1962//        fmt.Println(resp)
1963//    }
1964//
1965// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
1966func (c *ElastiCache) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) {
1967	op := &request.Operation{
1968		Name:       opDeleteSnapshot,
1969		HTTPMethod: "POST",
1970		HTTPPath:   "/",
1971	}
1972
1973	if input == nil {
1974		input = &DeleteSnapshotInput{}
1975	}
1976
1977	output = &DeleteSnapshotOutput{}
1978	req = c.newRequest(op, input, output)
1979	return
1980}
1981
1982// DeleteSnapshot API operation for Amazon ElastiCache.
1983//
1984// Deletes an existing snapshot. When you receive a successful response from
1985// this operation, ElastiCache immediately begins deleting the snapshot; you
1986// cannot cancel or revert this operation.
1987//
1988// This operation is valid for Redis only.
1989//
1990// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1991// with awserr.Error's Code and Message methods to get detailed information about
1992// the error.
1993//
1994// See the AWS API reference guide for Amazon ElastiCache's
1995// API operation DeleteSnapshot for usage and error information.
1996//
1997// Returned Error Codes:
1998//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
1999//   The requested snapshot name does not refer to an existing snapshot.
2000//
2001//   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
2002//   The current state of the snapshot does not allow the requested operation
2003//   to occur.
2004//
2005//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2006//   The value for a parameter is invalid.
2007//
2008//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2009//   Two or more incompatible parameters were specified.
2010//
2011// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
2012func (c *ElastiCache) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) {
2013	req, out := c.DeleteSnapshotRequest(input)
2014	return out, req.Send()
2015}
2016
2017// DeleteSnapshotWithContext is the same as DeleteSnapshot with the addition of
2018// the ability to pass a context and additional request options.
2019//
2020// See DeleteSnapshot for details on how to use this API operation.
2021//
2022// The context must be non-nil and will be used for request cancellation. If
2023// the context is nil a panic will occur. In the future the SDK may create
2024// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2025// for more information on using Contexts.
2026func (c *ElastiCache) DeleteSnapshotWithContext(ctx aws.Context, input *DeleteSnapshotInput, opts ...request.Option) (*DeleteSnapshotOutput, error) {
2027	req, out := c.DeleteSnapshotRequest(input)
2028	req.SetContext(ctx)
2029	req.ApplyOptions(opts...)
2030	return out, req.Send()
2031}
2032
2033const opDescribeCacheClusters = "DescribeCacheClusters"
2034
2035// DescribeCacheClustersRequest generates a "aws/request.Request" representing the
2036// client's request for the DescribeCacheClusters operation. The "output" return
2037// value will be populated with the request's response once the request completes
2038// successfully.
2039//
2040// Use "Send" method on the returned Request to send the API call to the service.
2041// the "output" return value is not valid until after Send returns without error.
2042//
2043// See DescribeCacheClusters for more information on using the DescribeCacheClusters
2044// API call, and error handling.
2045//
2046// This method is useful when you want to inject custom logic or configuration
2047// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2048//
2049//
2050//    // Example sending a request using the DescribeCacheClustersRequest method.
2051//    req, resp := client.DescribeCacheClustersRequest(params)
2052//
2053//    err := req.Send()
2054//    if err == nil { // resp is now filled
2055//        fmt.Println(resp)
2056//    }
2057//
2058// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2059func (c *ElastiCache) DescribeCacheClustersRequest(input *DescribeCacheClustersInput) (req *request.Request, output *DescribeCacheClustersOutput) {
2060	op := &request.Operation{
2061		Name:       opDescribeCacheClusters,
2062		HTTPMethod: "POST",
2063		HTTPPath:   "/",
2064		Paginator: &request.Paginator{
2065			InputTokens:     []string{"Marker"},
2066			OutputTokens:    []string{"Marker"},
2067			LimitToken:      "MaxRecords",
2068			TruncationToken: "",
2069		},
2070	}
2071
2072	if input == nil {
2073		input = &DescribeCacheClustersInput{}
2074	}
2075
2076	output = &DescribeCacheClustersOutput{}
2077	req = c.newRequest(op, input, output)
2078	return
2079}
2080
2081// DescribeCacheClusters API operation for Amazon ElastiCache.
2082//
2083// Returns information about all provisioned clusters if no cluster identifier
2084// is specified, or about a specific cache cluster if a cluster identifier is
2085// supplied.
2086//
2087// By default, abbreviated information about the clusters is returned. You can
2088// use the optional ShowCacheNodeInfo flag to retrieve detailed information
2089// about the cache nodes associated with the clusters. These details include
2090// the DNS address and port for the cache node endpoint.
2091//
2092// If the cluster is in the creating state, only cluster-level information is
2093// displayed until all of the nodes are successfully provisioned.
2094//
2095// If the cluster is in the deleting state, only cluster-level information is
2096// displayed.
2097//
2098// If cache nodes are currently being added to the cluster, node endpoint information
2099// and creation time for the additional nodes are not displayed until they are
2100// completely provisioned. When the cluster state is available, the cluster
2101// is ready for use.
2102//
2103// If cache nodes are currently being removed from the cluster, no endpoint
2104// information for the removed nodes is displayed.
2105//
2106// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2107// with awserr.Error's Code and Message methods to get detailed information about
2108// the error.
2109//
2110// See the AWS API reference guide for Amazon ElastiCache's
2111// API operation DescribeCacheClusters for usage and error information.
2112//
2113// Returned Error Codes:
2114//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
2115//   The requested cluster ID does not refer to an existing cluster.
2116//
2117//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2118//   The value for a parameter is invalid.
2119//
2120//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2121//   Two or more incompatible parameters were specified.
2122//
2123// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2124func (c *ElastiCache) DescribeCacheClusters(input *DescribeCacheClustersInput) (*DescribeCacheClustersOutput, error) {
2125	req, out := c.DescribeCacheClustersRequest(input)
2126	return out, req.Send()
2127}
2128
2129// DescribeCacheClustersWithContext is the same as DescribeCacheClusters with the addition of
2130// the ability to pass a context and additional request options.
2131//
2132// See DescribeCacheClusters for details on how to use this API operation.
2133//
2134// The context must be non-nil and will be used for request cancellation. If
2135// the context is nil a panic will occur. In the future the SDK may create
2136// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2137// for more information on using Contexts.
2138func (c *ElastiCache) DescribeCacheClustersWithContext(ctx aws.Context, input *DescribeCacheClustersInput, opts ...request.Option) (*DescribeCacheClustersOutput, error) {
2139	req, out := c.DescribeCacheClustersRequest(input)
2140	req.SetContext(ctx)
2141	req.ApplyOptions(opts...)
2142	return out, req.Send()
2143}
2144
2145// DescribeCacheClustersPages iterates over the pages of a DescribeCacheClusters operation,
2146// calling the "fn" function with the response data for each page. To stop
2147// iterating, return false from the fn function.
2148//
2149// See DescribeCacheClusters method for more information on how to use this operation.
2150//
2151// Note: This operation can generate multiple requests to a service.
2152//
2153//    // Example iterating over at most 3 pages of a DescribeCacheClusters operation.
2154//    pageNum := 0
2155//    err := client.DescribeCacheClustersPages(params,
2156//        func(page *elasticache.DescribeCacheClustersOutput, lastPage bool) bool {
2157//            pageNum++
2158//            fmt.Println(page)
2159//            return pageNum <= 3
2160//        })
2161//
2162func (c *ElastiCache) DescribeCacheClustersPages(input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool) error {
2163	return c.DescribeCacheClustersPagesWithContext(aws.BackgroundContext(), input, fn)
2164}
2165
2166// DescribeCacheClustersPagesWithContext same as DescribeCacheClustersPages except
2167// it takes a Context and allows setting request options on the pages.
2168//
2169// The context must be non-nil and will be used for request cancellation. If
2170// the context is nil a panic will occur. In the future the SDK may create
2171// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2172// for more information on using Contexts.
2173func (c *ElastiCache) DescribeCacheClustersPagesWithContext(ctx aws.Context, input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool, opts ...request.Option) error {
2174	p := request.Pagination{
2175		NewRequest: func() (*request.Request, error) {
2176			var inCpy *DescribeCacheClustersInput
2177			if input != nil {
2178				tmp := *input
2179				inCpy = &tmp
2180			}
2181			req, _ := c.DescribeCacheClustersRequest(inCpy)
2182			req.SetContext(ctx)
2183			req.ApplyOptions(opts...)
2184			return req, nil
2185		},
2186	}
2187
2188	for p.Next() {
2189		if !fn(p.Page().(*DescribeCacheClustersOutput), !p.HasNextPage()) {
2190			break
2191		}
2192	}
2193
2194	return p.Err()
2195}
2196
2197const opDescribeCacheEngineVersions = "DescribeCacheEngineVersions"
2198
2199// DescribeCacheEngineVersionsRequest generates a "aws/request.Request" representing the
2200// client's request for the DescribeCacheEngineVersions operation. The "output" return
2201// value will be populated with the request's response once the request completes
2202// successfully.
2203//
2204// Use "Send" method on the returned Request to send the API call to the service.
2205// the "output" return value is not valid until after Send returns without error.
2206//
2207// See DescribeCacheEngineVersions for more information on using the DescribeCacheEngineVersions
2208// API call, and error handling.
2209//
2210// This method is useful when you want to inject custom logic or configuration
2211// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2212//
2213//
2214//    // Example sending a request using the DescribeCacheEngineVersionsRequest method.
2215//    req, resp := client.DescribeCacheEngineVersionsRequest(params)
2216//
2217//    err := req.Send()
2218//    if err == nil { // resp is now filled
2219//        fmt.Println(resp)
2220//    }
2221//
2222// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2223func (c *ElastiCache) DescribeCacheEngineVersionsRequest(input *DescribeCacheEngineVersionsInput) (req *request.Request, output *DescribeCacheEngineVersionsOutput) {
2224	op := &request.Operation{
2225		Name:       opDescribeCacheEngineVersions,
2226		HTTPMethod: "POST",
2227		HTTPPath:   "/",
2228		Paginator: &request.Paginator{
2229			InputTokens:     []string{"Marker"},
2230			OutputTokens:    []string{"Marker"},
2231			LimitToken:      "MaxRecords",
2232			TruncationToken: "",
2233		},
2234	}
2235
2236	if input == nil {
2237		input = &DescribeCacheEngineVersionsInput{}
2238	}
2239
2240	output = &DescribeCacheEngineVersionsOutput{}
2241	req = c.newRequest(op, input, output)
2242	return
2243}
2244
2245// DescribeCacheEngineVersions API operation for Amazon ElastiCache.
2246//
2247// Returns a list of the available cache engines and their versions.
2248//
2249// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2250// with awserr.Error's Code and Message methods to get detailed information about
2251// the error.
2252//
2253// See the AWS API reference guide for Amazon ElastiCache's
2254// API operation DescribeCacheEngineVersions for usage and error information.
2255// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2256func (c *ElastiCache) DescribeCacheEngineVersions(input *DescribeCacheEngineVersionsInput) (*DescribeCacheEngineVersionsOutput, error) {
2257	req, out := c.DescribeCacheEngineVersionsRequest(input)
2258	return out, req.Send()
2259}
2260
2261// DescribeCacheEngineVersionsWithContext is the same as DescribeCacheEngineVersions with the addition of
2262// the ability to pass a context and additional request options.
2263//
2264// See DescribeCacheEngineVersions for details on how to use this API operation.
2265//
2266// The context must be non-nil and will be used for request cancellation. If
2267// the context is nil a panic will occur. In the future the SDK may create
2268// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2269// for more information on using Contexts.
2270func (c *ElastiCache) DescribeCacheEngineVersionsWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, opts ...request.Option) (*DescribeCacheEngineVersionsOutput, error) {
2271	req, out := c.DescribeCacheEngineVersionsRequest(input)
2272	req.SetContext(ctx)
2273	req.ApplyOptions(opts...)
2274	return out, req.Send()
2275}
2276
2277// DescribeCacheEngineVersionsPages iterates over the pages of a DescribeCacheEngineVersions operation,
2278// calling the "fn" function with the response data for each page. To stop
2279// iterating, return false from the fn function.
2280//
2281// See DescribeCacheEngineVersions method for more information on how to use this operation.
2282//
2283// Note: This operation can generate multiple requests to a service.
2284//
2285//    // Example iterating over at most 3 pages of a DescribeCacheEngineVersions operation.
2286//    pageNum := 0
2287//    err := client.DescribeCacheEngineVersionsPages(params,
2288//        func(page *elasticache.DescribeCacheEngineVersionsOutput, lastPage bool) bool {
2289//            pageNum++
2290//            fmt.Println(page)
2291//            return pageNum <= 3
2292//        })
2293//
2294func (c *ElastiCache) DescribeCacheEngineVersionsPages(input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool) error {
2295	return c.DescribeCacheEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
2296}
2297
2298// DescribeCacheEngineVersionsPagesWithContext same as DescribeCacheEngineVersionsPages except
2299// it takes a Context and allows setting request options on the pages.
2300//
2301// The context must be non-nil and will be used for request cancellation. If
2302// the context is nil a panic will occur. In the future the SDK may create
2303// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2304// for more information on using Contexts.
2305func (c *ElastiCache) DescribeCacheEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool, opts ...request.Option) error {
2306	p := request.Pagination{
2307		NewRequest: func() (*request.Request, error) {
2308			var inCpy *DescribeCacheEngineVersionsInput
2309			if input != nil {
2310				tmp := *input
2311				inCpy = &tmp
2312			}
2313			req, _ := c.DescribeCacheEngineVersionsRequest(inCpy)
2314			req.SetContext(ctx)
2315			req.ApplyOptions(opts...)
2316			return req, nil
2317		},
2318	}
2319
2320	for p.Next() {
2321		if !fn(p.Page().(*DescribeCacheEngineVersionsOutput), !p.HasNextPage()) {
2322			break
2323		}
2324	}
2325
2326	return p.Err()
2327}
2328
2329const opDescribeCacheParameterGroups = "DescribeCacheParameterGroups"
2330
2331// DescribeCacheParameterGroupsRequest generates a "aws/request.Request" representing the
2332// client's request for the DescribeCacheParameterGroups operation. The "output" return
2333// value will be populated with the request's response once the request completes
2334// successfully.
2335//
2336// Use "Send" method on the returned Request to send the API call to the service.
2337// the "output" return value is not valid until after Send returns without error.
2338//
2339// See DescribeCacheParameterGroups for more information on using the DescribeCacheParameterGroups
2340// API call, and error handling.
2341//
2342// This method is useful when you want to inject custom logic or configuration
2343// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2344//
2345//
2346//    // Example sending a request using the DescribeCacheParameterGroupsRequest method.
2347//    req, resp := client.DescribeCacheParameterGroupsRequest(params)
2348//
2349//    err := req.Send()
2350//    if err == nil { // resp is now filled
2351//        fmt.Println(resp)
2352//    }
2353//
2354// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2355func (c *ElastiCache) DescribeCacheParameterGroupsRequest(input *DescribeCacheParameterGroupsInput) (req *request.Request, output *DescribeCacheParameterGroupsOutput) {
2356	op := &request.Operation{
2357		Name:       opDescribeCacheParameterGroups,
2358		HTTPMethod: "POST",
2359		HTTPPath:   "/",
2360		Paginator: &request.Paginator{
2361			InputTokens:     []string{"Marker"},
2362			OutputTokens:    []string{"Marker"},
2363			LimitToken:      "MaxRecords",
2364			TruncationToken: "",
2365		},
2366	}
2367
2368	if input == nil {
2369		input = &DescribeCacheParameterGroupsInput{}
2370	}
2371
2372	output = &DescribeCacheParameterGroupsOutput{}
2373	req = c.newRequest(op, input, output)
2374	return
2375}
2376
2377// DescribeCacheParameterGroups API operation for Amazon ElastiCache.
2378//
2379// Returns a list of cache parameter group descriptions. If a cache parameter
2380// group name is specified, the list contains only the descriptions for that
2381// group.
2382//
2383// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2384// with awserr.Error's Code and Message methods to get detailed information about
2385// the error.
2386//
2387// See the AWS API reference guide for Amazon ElastiCache's
2388// API operation DescribeCacheParameterGroups for usage and error information.
2389//
2390// Returned Error Codes:
2391//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2392//   The requested cache parameter group name does not refer to an existing cache
2393//   parameter group.
2394//
2395//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2396//   The value for a parameter is invalid.
2397//
2398//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2399//   Two or more incompatible parameters were specified.
2400//
2401// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2402func (c *ElastiCache) DescribeCacheParameterGroups(input *DescribeCacheParameterGroupsInput) (*DescribeCacheParameterGroupsOutput, error) {
2403	req, out := c.DescribeCacheParameterGroupsRequest(input)
2404	return out, req.Send()
2405}
2406
2407// DescribeCacheParameterGroupsWithContext is the same as DescribeCacheParameterGroups with the addition of
2408// the ability to pass a context and additional request options.
2409//
2410// See DescribeCacheParameterGroups for details on how to use this API operation.
2411//
2412// The context must be non-nil and will be used for request cancellation. If
2413// the context is nil a panic will occur. In the future the SDK may create
2414// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2415// for more information on using Contexts.
2416func (c *ElastiCache) DescribeCacheParameterGroupsWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, opts ...request.Option) (*DescribeCacheParameterGroupsOutput, error) {
2417	req, out := c.DescribeCacheParameterGroupsRequest(input)
2418	req.SetContext(ctx)
2419	req.ApplyOptions(opts...)
2420	return out, req.Send()
2421}
2422
2423// DescribeCacheParameterGroupsPages iterates over the pages of a DescribeCacheParameterGroups operation,
2424// calling the "fn" function with the response data for each page. To stop
2425// iterating, return false from the fn function.
2426//
2427// See DescribeCacheParameterGroups method for more information on how to use this operation.
2428//
2429// Note: This operation can generate multiple requests to a service.
2430//
2431//    // Example iterating over at most 3 pages of a DescribeCacheParameterGroups operation.
2432//    pageNum := 0
2433//    err := client.DescribeCacheParameterGroupsPages(params,
2434//        func(page *elasticache.DescribeCacheParameterGroupsOutput, lastPage bool) bool {
2435//            pageNum++
2436//            fmt.Println(page)
2437//            return pageNum <= 3
2438//        })
2439//
2440func (c *ElastiCache) DescribeCacheParameterGroupsPages(input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool) error {
2441	return c.DescribeCacheParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2442}
2443
2444// DescribeCacheParameterGroupsPagesWithContext same as DescribeCacheParameterGroupsPages except
2445// it takes a Context and allows setting request options on the pages.
2446//
2447// The context must be non-nil and will be used for request cancellation. If
2448// the context is nil a panic will occur. In the future the SDK may create
2449// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2450// for more information on using Contexts.
2451func (c *ElastiCache) DescribeCacheParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool, opts ...request.Option) error {
2452	p := request.Pagination{
2453		NewRequest: func() (*request.Request, error) {
2454			var inCpy *DescribeCacheParameterGroupsInput
2455			if input != nil {
2456				tmp := *input
2457				inCpy = &tmp
2458			}
2459			req, _ := c.DescribeCacheParameterGroupsRequest(inCpy)
2460			req.SetContext(ctx)
2461			req.ApplyOptions(opts...)
2462			return req, nil
2463		},
2464	}
2465
2466	for p.Next() {
2467		if !fn(p.Page().(*DescribeCacheParameterGroupsOutput), !p.HasNextPage()) {
2468			break
2469		}
2470	}
2471
2472	return p.Err()
2473}
2474
2475const opDescribeCacheParameters = "DescribeCacheParameters"
2476
2477// DescribeCacheParametersRequest generates a "aws/request.Request" representing the
2478// client's request for the DescribeCacheParameters operation. The "output" return
2479// value will be populated with the request's response once the request completes
2480// successfully.
2481//
2482// Use "Send" method on the returned Request to send the API call to the service.
2483// the "output" return value is not valid until after Send returns without error.
2484//
2485// See DescribeCacheParameters for more information on using the DescribeCacheParameters
2486// API call, and error handling.
2487//
2488// This method is useful when you want to inject custom logic or configuration
2489// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2490//
2491//
2492//    // Example sending a request using the DescribeCacheParametersRequest method.
2493//    req, resp := client.DescribeCacheParametersRequest(params)
2494//
2495//    err := req.Send()
2496//    if err == nil { // resp is now filled
2497//        fmt.Println(resp)
2498//    }
2499//
2500// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2501func (c *ElastiCache) DescribeCacheParametersRequest(input *DescribeCacheParametersInput) (req *request.Request, output *DescribeCacheParametersOutput) {
2502	op := &request.Operation{
2503		Name:       opDescribeCacheParameters,
2504		HTTPMethod: "POST",
2505		HTTPPath:   "/",
2506		Paginator: &request.Paginator{
2507			InputTokens:     []string{"Marker"},
2508			OutputTokens:    []string{"Marker"},
2509			LimitToken:      "MaxRecords",
2510			TruncationToken: "",
2511		},
2512	}
2513
2514	if input == nil {
2515		input = &DescribeCacheParametersInput{}
2516	}
2517
2518	output = &DescribeCacheParametersOutput{}
2519	req = c.newRequest(op, input, output)
2520	return
2521}
2522
2523// DescribeCacheParameters API operation for Amazon ElastiCache.
2524//
2525// Returns the detailed parameter list for a particular cache parameter group.
2526//
2527// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2528// with awserr.Error's Code and Message methods to get detailed information about
2529// the error.
2530//
2531// See the AWS API reference guide for Amazon ElastiCache's
2532// API operation DescribeCacheParameters for usage and error information.
2533//
2534// Returned Error Codes:
2535//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2536//   The requested cache parameter group name does not refer to an existing cache
2537//   parameter group.
2538//
2539//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2540//   The value for a parameter is invalid.
2541//
2542//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2543//   Two or more incompatible parameters were specified.
2544//
2545// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2546func (c *ElastiCache) DescribeCacheParameters(input *DescribeCacheParametersInput) (*DescribeCacheParametersOutput, error) {
2547	req, out := c.DescribeCacheParametersRequest(input)
2548	return out, req.Send()
2549}
2550
2551// DescribeCacheParametersWithContext is the same as DescribeCacheParameters with the addition of
2552// the ability to pass a context and additional request options.
2553//
2554// See DescribeCacheParameters for details on how to use this API operation.
2555//
2556// The context must be non-nil and will be used for request cancellation. If
2557// the context is nil a panic will occur. In the future the SDK may create
2558// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2559// for more information on using Contexts.
2560func (c *ElastiCache) DescribeCacheParametersWithContext(ctx aws.Context, input *DescribeCacheParametersInput, opts ...request.Option) (*DescribeCacheParametersOutput, error) {
2561	req, out := c.DescribeCacheParametersRequest(input)
2562	req.SetContext(ctx)
2563	req.ApplyOptions(opts...)
2564	return out, req.Send()
2565}
2566
2567// DescribeCacheParametersPages iterates over the pages of a DescribeCacheParameters operation,
2568// calling the "fn" function with the response data for each page. To stop
2569// iterating, return false from the fn function.
2570//
2571// See DescribeCacheParameters method for more information on how to use this operation.
2572//
2573// Note: This operation can generate multiple requests to a service.
2574//
2575//    // Example iterating over at most 3 pages of a DescribeCacheParameters operation.
2576//    pageNum := 0
2577//    err := client.DescribeCacheParametersPages(params,
2578//        func(page *elasticache.DescribeCacheParametersOutput, lastPage bool) bool {
2579//            pageNum++
2580//            fmt.Println(page)
2581//            return pageNum <= 3
2582//        })
2583//
2584func (c *ElastiCache) DescribeCacheParametersPages(input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool) error {
2585	return c.DescribeCacheParametersPagesWithContext(aws.BackgroundContext(), input, fn)
2586}
2587
2588// DescribeCacheParametersPagesWithContext same as DescribeCacheParametersPages except
2589// it takes a Context and allows setting request options on the pages.
2590//
2591// The context must be non-nil and will be used for request cancellation. If
2592// the context is nil a panic will occur. In the future the SDK may create
2593// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2594// for more information on using Contexts.
2595func (c *ElastiCache) DescribeCacheParametersPagesWithContext(ctx aws.Context, input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool, opts ...request.Option) error {
2596	p := request.Pagination{
2597		NewRequest: func() (*request.Request, error) {
2598			var inCpy *DescribeCacheParametersInput
2599			if input != nil {
2600				tmp := *input
2601				inCpy = &tmp
2602			}
2603			req, _ := c.DescribeCacheParametersRequest(inCpy)
2604			req.SetContext(ctx)
2605			req.ApplyOptions(opts...)
2606			return req, nil
2607		},
2608	}
2609
2610	for p.Next() {
2611		if !fn(p.Page().(*DescribeCacheParametersOutput), !p.HasNextPage()) {
2612			break
2613		}
2614	}
2615
2616	return p.Err()
2617}
2618
2619const opDescribeCacheSecurityGroups = "DescribeCacheSecurityGroups"
2620
2621// DescribeCacheSecurityGroupsRequest generates a "aws/request.Request" representing the
2622// client's request for the DescribeCacheSecurityGroups operation. The "output" return
2623// value will be populated with the request's response once the request completes
2624// successfully.
2625//
2626// Use "Send" method on the returned Request to send the API call to the service.
2627// the "output" return value is not valid until after Send returns without error.
2628//
2629// See DescribeCacheSecurityGroups for more information on using the DescribeCacheSecurityGroups
2630// API call, and error handling.
2631//
2632// This method is useful when you want to inject custom logic or configuration
2633// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2634//
2635//
2636//    // Example sending a request using the DescribeCacheSecurityGroupsRequest method.
2637//    req, resp := client.DescribeCacheSecurityGroupsRequest(params)
2638//
2639//    err := req.Send()
2640//    if err == nil { // resp is now filled
2641//        fmt.Println(resp)
2642//    }
2643//
2644// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2645func (c *ElastiCache) DescribeCacheSecurityGroupsRequest(input *DescribeCacheSecurityGroupsInput) (req *request.Request, output *DescribeCacheSecurityGroupsOutput) {
2646	op := &request.Operation{
2647		Name:       opDescribeCacheSecurityGroups,
2648		HTTPMethod: "POST",
2649		HTTPPath:   "/",
2650		Paginator: &request.Paginator{
2651			InputTokens:     []string{"Marker"},
2652			OutputTokens:    []string{"Marker"},
2653			LimitToken:      "MaxRecords",
2654			TruncationToken: "",
2655		},
2656	}
2657
2658	if input == nil {
2659		input = &DescribeCacheSecurityGroupsInput{}
2660	}
2661
2662	output = &DescribeCacheSecurityGroupsOutput{}
2663	req = c.newRequest(op, input, output)
2664	return
2665}
2666
2667// DescribeCacheSecurityGroups API operation for Amazon ElastiCache.
2668//
2669// Returns a list of cache security group descriptions. If a cache security
2670// group name is specified, the list contains only the description of that group.
2671// This applicable only when you have ElastiCache in Classic setup
2672//
2673// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2674// with awserr.Error's Code and Message methods to get detailed information about
2675// the error.
2676//
2677// See the AWS API reference guide for Amazon ElastiCache's
2678// API operation DescribeCacheSecurityGroups for usage and error information.
2679//
2680// Returned Error Codes:
2681//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
2682//   The requested cache security group name does not refer to an existing cache
2683//   security group.
2684//
2685//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2686//   The value for a parameter is invalid.
2687//
2688//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2689//   Two or more incompatible parameters were specified.
2690//
2691// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2692func (c *ElastiCache) DescribeCacheSecurityGroups(input *DescribeCacheSecurityGroupsInput) (*DescribeCacheSecurityGroupsOutput, error) {
2693	req, out := c.DescribeCacheSecurityGroupsRequest(input)
2694	return out, req.Send()
2695}
2696
2697// DescribeCacheSecurityGroupsWithContext is the same as DescribeCacheSecurityGroups with the addition of
2698// the ability to pass a context and additional request options.
2699//
2700// See DescribeCacheSecurityGroups for details on how to use this API operation.
2701//
2702// The context must be non-nil and will be used for request cancellation. If
2703// the context is nil a panic will occur. In the future the SDK may create
2704// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2705// for more information on using Contexts.
2706func (c *ElastiCache) DescribeCacheSecurityGroupsWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, opts ...request.Option) (*DescribeCacheSecurityGroupsOutput, error) {
2707	req, out := c.DescribeCacheSecurityGroupsRequest(input)
2708	req.SetContext(ctx)
2709	req.ApplyOptions(opts...)
2710	return out, req.Send()
2711}
2712
2713// DescribeCacheSecurityGroupsPages iterates over the pages of a DescribeCacheSecurityGroups operation,
2714// calling the "fn" function with the response data for each page. To stop
2715// iterating, return false from the fn function.
2716//
2717// See DescribeCacheSecurityGroups method for more information on how to use this operation.
2718//
2719// Note: This operation can generate multiple requests to a service.
2720//
2721//    // Example iterating over at most 3 pages of a DescribeCacheSecurityGroups operation.
2722//    pageNum := 0
2723//    err := client.DescribeCacheSecurityGroupsPages(params,
2724//        func(page *elasticache.DescribeCacheSecurityGroupsOutput, lastPage bool) bool {
2725//            pageNum++
2726//            fmt.Println(page)
2727//            return pageNum <= 3
2728//        })
2729//
2730func (c *ElastiCache) DescribeCacheSecurityGroupsPages(input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool) error {
2731	return c.DescribeCacheSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2732}
2733
2734// DescribeCacheSecurityGroupsPagesWithContext same as DescribeCacheSecurityGroupsPages except
2735// it takes a Context and allows setting request options on the pages.
2736//
2737// The context must be non-nil and will be used for request cancellation. If
2738// the context is nil a panic will occur. In the future the SDK may create
2739// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2740// for more information on using Contexts.
2741func (c *ElastiCache) DescribeCacheSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
2742	p := request.Pagination{
2743		NewRequest: func() (*request.Request, error) {
2744			var inCpy *DescribeCacheSecurityGroupsInput
2745			if input != nil {
2746				tmp := *input
2747				inCpy = &tmp
2748			}
2749			req, _ := c.DescribeCacheSecurityGroupsRequest(inCpy)
2750			req.SetContext(ctx)
2751			req.ApplyOptions(opts...)
2752			return req, nil
2753		},
2754	}
2755
2756	for p.Next() {
2757		if !fn(p.Page().(*DescribeCacheSecurityGroupsOutput), !p.HasNextPage()) {
2758			break
2759		}
2760	}
2761
2762	return p.Err()
2763}
2764
2765const opDescribeCacheSubnetGroups = "DescribeCacheSubnetGroups"
2766
2767// DescribeCacheSubnetGroupsRequest generates a "aws/request.Request" representing the
2768// client's request for the DescribeCacheSubnetGroups operation. The "output" return
2769// value will be populated with the request's response once the request completes
2770// successfully.
2771//
2772// Use "Send" method on the returned Request to send the API call to the service.
2773// the "output" return value is not valid until after Send returns without error.
2774//
2775// See DescribeCacheSubnetGroups for more information on using the DescribeCacheSubnetGroups
2776// API call, and error handling.
2777//
2778// This method is useful when you want to inject custom logic or configuration
2779// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2780//
2781//
2782//    // Example sending a request using the DescribeCacheSubnetGroupsRequest method.
2783//    req, resp := client.DescribeCacheSubnetGroupsRequest(params)
2784//
2785//    err := req.Send()
2786//    if err == nil { // resp is now filled
2787//        fmt.Println(resp)
2788//    }
2789//
2790// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
2791func (c *ElastiCache) DescribeCacheSubnetGroupsRequest(input *DescribeCacheSubnetGroupsInput) (req *request.Request, output *DescribeCacheSubnetGroupsOutput) {
2792	op := &request.Operation{
2793		Name:       opDescribeCacheSubnetGroups,
2794		HTTPMethod: "POST",
2795		HTTPPath:   "/",
2796		Paginator: &request.Paginator{
2797			InputTokens:     []string{"Marker"},
2798			OutputTokens:    []string{"Marker"},
2799			LimitToken:      "MaxRecords",
2800			TruncationToken: "",
2801		},
2802	}
2803
2804	if input == nil {
2805		input = &DescribeCacheSubnetGroupsInput{}
2806	}
2807
2808	output = &DescribeCacheSubnetGroupsOutput{}
2809	req = c.newRequest(op, input, output)
2810	return
2811}
2812
2813// DescribeCacheSubnetGroups API operation for Amazon ElastiCache.
2814//
2815// Returns a list of cache subnet group descriptions. If a subnet group name
2816// is specified, the list contains only the description of that group. This
2817// is applicable only when you have ElastiCache in VPC setup. All ElastiCache
2818// clusters now launch in VPC by default.
2819//
2820// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2821// with awserr.Error's Code and Message methods to get detailed information about
2822// the error.
2823//
2824// See the AWS API reference guide for Amazon ElastiCache's
2825// API operation DescribeCacheSubnetGroups for usage and error information.
2826//
2827// Returned Error Codes:
2828//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
2829//   The requested cache subnet group name does not refer to an existing cache
2830//   subnet group.
2831//
2832// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
2833func (c *ElastiCache) DescribeCacheSubnetGroups(input *DescribeCacheSubnetGroupsInput) (*DescribeCacheSubnetGroupsOutput, error) {
2834	req, out := c.DescribeCacheSubnetGroupsRequest(input)
2835	return out, req.Send()
2836}
2837
2838// DescribeCacheSubnetGroupsWithContext is the same as DescribeCacheSubnetGroups with the addition of
2839// the ability to pass a context and additional request options.
2840//
2841// See DescribeCacheSubnetGroups for details on how to use this API operation.
2842//
2843// The context must be non-nil and will be used for request cancellation. If
2844// the context is nil a panic will occur. In the future the SDK may create
2845// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2846// for more information on using Contexts.
2847func (c *ElastiCache) DescribeCacheSubnetGroupsWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, opts ...request.Option) (*DescribeCacheSubnetGroupsOutput, error) {
2848	req, out := c.DescribeCacheSubnetGroupsRequest(input)
2849	req.SetContext(ctx)
2850	req.ApplyOptions(opts...)
2851	return out, req.Send()
2852}
2853
2854// DescribeCacheSubnetGroupsPages iterates over the pages of a DescribeCacheSubnetGroups operation,
2855// calling the "fn" function with the response data for each page. To stop
2856// iterating, return false from the fn function.
2857//
2858// See DescribeCacheSubnetGroups method for more information on how to use this operation.
2859//
2860// Note: This operation can generate multiple requests to a service.
2861//
2862//    // Example iterating over at most 3 pages of a DescribeCacheSubnetGroups operation.
2863//    pageNum := 0
2864//    err := client.DescribeCacheSubnetGroupsPages(params,
2865//        func(page *elasticache.DescribeCacheSubnetGroupsOutput, lastPage bool) bool {
2866//            pageNum++
2867//            fmt.Println(page)
2868//            return pageNum <= 3
2869//        })
2870//
2871func (c *ElastiCache) DescribeCacheSubnetGroupsPages(input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool) error {
2872	return c.DescribeCacheSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2873}
2874
2875// DescribeCacheSubnetGroupsPagesWithContext same as DescribeCacheSubnetGroupsPages except
2876// it takes a Context and allows setting request options on the pages.
2877//
2878// The context must be non-nil and will be used for request cancellation. If
2879// the context is nil a panic will occur. In the future the SDK may create
2880// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2881// for more information on using Contexts.
2882func (c *ElastiCache) DescribeCacheSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
2883	p := request.Pagination{
2884		NewRequest: func() (*request.Request, error) {
2885			var inCpy *DescribeCacheSubnetGroupsInput
2886			if input != nil {
2887				tmp := *input
2888				inCpy = &tmp
2889			}
2890			req, _ := c.DescribeCacheSubnetGroupsRequest(inCpy)
2891			req.SetContext(ctx)
2892			req.ApplyOptions(opts...)
2893			return req, nil
2894		},
2895	}
2896
2897	for p.Next() {
2898		if !fn(p.Page().(*DescribeCacheSubnetGroupsOutput), !p.HasNextPage()) {
2899			break
2900		}
2901	}
2902
2903	return p.Err()
2904}
2905
2906const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"
2907
2908// DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
2909// client's request for the DescribeEngineDefaultParameters operation. The "output" return
2910// value will be populated with the request's response once the request completes
2911// successfully.
2912//
2913// Use "Send" method on the returned Request to send the API call to the service.
2914// the "output" return value is not valid until after Send returns without error.
2915//
2916// See DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
2917// API call, and error handling.
2918//
2919// This method is useful when you want to inject custom logic or configuration
2920// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2921//
2922//
2923//    // Example sending a request using the DescribeEngineDefaultParametersRequest method.
2924//    req, resp := client.DescribeEngineDefaultParametersRequest(params)
2925//
2926//    err := req.Send()
2927//    if err == nil { // resp is now filled
2928//        fmt.Println(resp)
2929//    }
2930//
2931// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
2932func (c *ElastiCache) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
2933	op := &request.Operation{
2934		Name:       opDescribeEngineDefaultParameters,
2935		HTTPMethod: "POST",
2936		HTTPPath:   "/",
2937		Paginator: &request.Paginator{
2938			InputTokens:     []string{"Marker"},
2939			OutputTokens:    []string{"EngineDefaults.Marker"},
2940			LimitToken:      "MaxRecords",
2941			TruncationToken: "",
2942		},
2943	}
2944
2945	if input == nil {
2946		input = &DescribeEngineDefaultParametersInput{}
2947	}
2948
2949	output = &DescribeEngineDefaultParametersOutput{}
2950	req = c.newRequest(op, input, output)
2951	return
2952}
2953
2954// DescribeEngineDefaultParameters API operation for Amazon ElastiCache.
2955//
2956// Returns the default engine and system parameter information for the specified
2957// cache engine.
2958//
2959// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2960// with awserr.Error's Code and Message methods to get detailed information about
2961// the error.
2962//
2963// See the AWS API reference guide for Amazon ElastiCache's
2964// API operation DescribeEngineDefaultParameters for usage and error information.
2965//
2966// Returned Error Codes:
2967//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2968//   The value for a parameter is invalid.
2969//
2970//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2971//   Two or more incompatible parameters were specified.
2972//
2973// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
2974func (c *ElastiCache) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
2975	req, out := c.DescribeEngineDefaultParametersRequest(input)
2976	return out, req.Send()
2977}
2978
2979// DescribeEngineDefaultParametersWithContext is the same as DescribeEngineDefaultParameters with the addition of
2980// the ability to pass a context and additional request options.
2981//
2982// See DescribeEngineDefaultParameters for details on how to use this API operation.
2983//
2984// The context must be non-nil and will be used for request cancellation. If
2985// the context is nil a panic will occur. In the future the SDK may create
2986// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2987// for more information on using Contexts.
2988func (c *ElastiCache) DescribeEngineDefaultParametersWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, opts ...request.Option) (*DescribeEngineDefaultParametersOutput, error) {
2989	req, out := c.DescribeEngineDefaultParametersRequest(input)
2990	req.SetContext(ctx)
2991	req.ApplyOptions(opts...)
2992	return out, req.Send()
2993}
2994
2995// DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
2996// calling the "fn" function with the response data for each page. To stop
2997// iterating, return false from the fn function.
2998//
2999// See DescribeEngineDefaultParameters method for more information on how to use this operation.
3000//
3001// Note: This operation can generate multiple requests to a service.
3002//
3003//    // Example iterating over at most 3 pages of a DescribeEngineDefaultParameters operation.
3004//    pageNum := 0
3005//    err := client.DescribeEngineDefaultParametersPages(params,
3006//        func(page *elasticache.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
3007//            pageNum++
3008//            fmt.Println(page)
3009//            return pageNum <= 3
3010//        })
3011//
3012func (c *ElastiCache) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
3013	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
3014}
3015
3016// DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages except
3017// it takes a Context and allows setting request options on the pages.
3018//
3019// The context must be non-nil and will be used for request cancellation. If
3020// the context is nil a panic will occur. In the future the SDK may create
3021// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3022// for more information on using Contexts.
3023func (c *ElastiCache) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
3024	p := request.Pagination{
3025		NewRequest: func() (*request.Request, error) {
3026			var inCpy *DescribeEngineDefaultParametersInput
3027			if input != nil {
3028				tmp := *input
3029				inCpy = &tmp
3030			}
3031			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
3032			req.SetContext(ctx)
3033			req.ApplyOptions(opts...)
3034			return req, nil
3035		},
3036	}
3037
3038	for p.Next() {
3039		if !fn(p.Page().(*DescribeEngineDefaultParametersOutput), !p.HasNextPage()) {
3040			break
3041		}
3042	}
3043
3044	return p.Err()
3045}
3046
3047const opDescribeEvents = "DescribeEvents"
3048
3049// DescribeEventsRequest generates a "aws/request.Request" representing the
3050// client's request for the DescribeEvents operation. The "output" return
3051// value will be populated with the request's response once the request completes
3052// successfully.
3053//
3054// Use "Send" method on the returned Request to send the API call to the service.
3055// the "output" return value is not valid until after Send returns without error.
3056//
3057// See DescribeEvents for more information on using the DescribeEvents
3058// API call, and error handling.
3059//
3060// This method is useful when you want to inject custom logic or configuration
3061// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3062//
3063//
3064//    // Example sending a request using the DescribeEventsRequest method.
3065//    req, resp := client.DescribeEventsRequest(params)
3066//
3067//    err := req.Send()
3068//    if err == nil { // resp is now filled
3069//        fmt.Println(resp)
3070//    }
3071//
3072// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3073func (c *ElastiCache) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
3074	op := &request.Operation{
3075		Name:       opDescribeEvents,
3076		HTTPMethod: "POST",
3077		HTTPPath:   "/",
3078		Paginator: &request.Paginator{
3079			InputTokens:     []string{"Marker"},
3080			OutputTokens:    []string{"Marker"},
3081			LimitToken:      "MaxRecords",
3082			TruncationToken: "",
3083		},
3084	}
3085
3086	if input == nil {
3087		input = &DescribeEventsInput{}
3088	}
3089
3090	output = &DescribeEventsOutput{}
3091	req = c.newRequest(op, input, output)
3092	return
3093}
3094
3095// DescribeEvents API operation for Amazon ElastiCache.
3096//
3097// Returns events related to clusters, cache security groups, and cache parameter
3098// groups. You can obtain events specific to a particular cluster, cache security
3099// group, or cache parameter group by providing the name as a parameter.
3100//
3101// By default, only the events occurring within the last hour are returned;
3102// however, you can retrieve up to 14 days' worth of events if necessary.
3103//
3104// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3105// with awserr.Error's Code and Message methods to get detailed information about
3106// the error.
3107//
3108// See the AWS API reference guide for Amazon ElastiCache's
3109// API operation DescribeEvents for usage and error information.
3110//
3111// Returned Error Codes:
3112//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3113//   The value for a parameter is invalid.
3114//
3115//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3116//   Two or more incompatible parameters were specified.
3117//
3118// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3119func (c *ElastiCache) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
3120	req, out := c.DescribeEventsRequest(input)
3121	return out, req.Send()
3122}
3123
3124// DescribeEventsWithContext is the same as DescribeEvents with the addition of
3125// the ability to pass a context and additional request options.
3126//
3127// See DescribeEvents for details on how to use this API operation.
3128//
3129// The context must be non-nil and will be used for request cancellation. If
3130// the context is nil a panic will occur. In the future the SDK may create
3131// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3132// for more information on using Contexts.
3133func (c *ElastiCache) DescribeEventsWithContext(ctx aws.Context, input *DescribeEventsInput, opts ...request.Option) (*DescribeEventsOutput, error) {
3134	req, out := c.DescribeEventsRequest(input)
3135	req.SetContext(ctx)
3136	req.ApplyOptions(opts...)
3137	return out, req.Send()
3138}
3139
3140// DescribeEventsPages iterates over the pages of a DescribeEvents operation,
3141// calling the "fn" function with the response data for each page. To stop
3142// iterating, return false from the fn function.
3143//
3144// See DescribeEvents method for more information on how to use this operation.
3145//
3146// Note: This operation can generate multiple requests to a service.
3147//
3148//    // Example iterating over at most 3 pages of a DescribeEvents operation.
3149//    pageNum := 0
3150//    err := client.DescribeEventsPages(params,
3151//        func(page *elasticache.DescribeEventsOutput, lastPage bool) bool {
3152//            pageNum++
3153//            fmt.Println(page)
3154//            return pageNum <= 3
3155//        })
3156//
3157func (c *ElastiCache) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
3158	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
3159}
3160
3161// DescribeEventsPagesWithContext same as DescribeEventsPages except
3162// it takes a Context and allows setting request options on the pages.
3163//
3164// The context must be non-nil and will be used for request cancellation. If
3165// the context is nil a panic will occur. In the future the SDK may create
3166// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3167// for more information on using Contexts.
3168func (c *ElastiCache) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
3169	p := request.Pagination{
3170		NewRequest: func() (*request.Request, error) {
3171			var inCpy *DescribeEventsInput
3172			if input != nil {
3173				tmp := *input
3174				inCpy = &tmp
3175			}
3176			req, _ := c.DescribeEventsRequest(inCpy)
3177			req.SetContext(ctx)
3178			req.ApplyOptions(opts...)
3179			return req, nil
3180		},
3181	}
3182
3183	for p.Next() {
3184		if !fn(p.Page().(*DescribeEventsOutput), !p.HasNextPage()) {
3185			break
3186		}
3187	}
3188
3189	return p.Err()
3190}
3191
3192const opDescribeReplicationGroups = "DescribeReplicationGroups"
3193
3194// DescribeReplicationGroupsRequest generates a "aws/request.Request" representing the
3195// client's request for the DescribeReplicationGroups operation. The "output" return
3196// value will be populated with the request's response once the request completes
3197// successfully.
3198//
3199// Use "Send" method on the returned Request to send the API call to the service.
3200// the "output" return value is not valid until after Send returns without error.
3201//
3202// See DescribeReplicationGroups for more information on using the DescribeReplicationGroups
3203// API call, and error handling.
3204//
3205// This method is useful when you want to inject custom logic or configuration
3206// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3207//
3208//
3209//    // Example sending a request using the DescribeReplicationGroupsRequest method.
3210//    req, resp := client.DescribeReplicationGroupsRequest(params)
3211//
3212//    err := req.Send()
3213//    if err == nil { // resp is now filled
3214//        fmt.Println(resp)
3215//    }
3216//
3217// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3218func (c *ElastiCache) DescribeReplicationGroupsRequest(input *DescribeReplicationGroupsInput) (req *request.Request, output *DescribeReplicationGroupsOutput) {
3219	op := &request.Operation{
3220		Name:       opDescribeReplicationGroups,
3221		HTTPMethod: "POST",
3222		HTTPPath:   "/",
3223		Paginator: &request.Paginator{
3224			InputTokens:     []string{"Marker"},
3225			OutputTokens:    []string{"Marker"},
3226			LimitToken:      "MaxRecords",
3227			TruncationToken: "",
3228		},
3229	}
3230
3231	if input == nil {
3232		input = &DescribeReplicationGroupsInput{}
3233	}
3234
3235	output = &DescribeReplicationGroupsOutput{}
3236	req = c.newRequest(op, input, output)
3237	return
3238}
3239
3240// DescribeReplicationGroups API operation for Amazon ElastiCache.
3241//
3242// Returns information about a particular replication group. If no identifier
3243// is specified, DescribeReplicationGroups returns information about all replication
3244// groups.
3245//
3246// This operation is valid for Redis only.
3247//
3248// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3249// with awserr.Error's Code and Message methods to get detailed information about
3250// the error.
3251//
3252// See the AWS API reference guide for Amazon ElastiCache's
3253// API operation DescribeReplicationGroups for usage and error information.
3254//
3255// Returned Error Codes:
3256//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
3257//   The specified replication group does not exist.
3258//
3259//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3260//   The value for a parameter is invalid.
3261//
3262//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3263//   Two or more incompatible parameters were specified.
3264//
3265// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3266func (c *ElastiCache) DescribeReplicationGroups(input *DescribeReplicationGroupsInput) (*DescribeReplicationGroupsOutput, error) {
3267	req, out := c.DescribeReplicationGroupsRequest(input)
3268	return out, req.Send()
3269}
3270
3271// DescribeReplicationGroupsWithContext is the same as DescribeReplicationGroups with the addition of
3272// the ability to pass a context and additional request options.
3273//
3274// See DescribeReplicationGroups for details on how to use this API operation.
3275//
3276// The context must be non-nil and will be used for request cancellation. If
3277// the context is nil a panic will occur. In the future the SDK may create
3278// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3279// for more information on using Contexts.
3280func (c *ElastiCache) DescribeReplicationGroupsWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, opts ...request.Option) (*DescribeReplicationGroupsOutput, error) {
3281	req, out := c.DescribeReplicationGroupsRequest(input)
3282	req.SetContext(ctx)
3283	req.ApplyOptions(opts...)
3284	return out, req.Send()
3285}
3286
3287// DescribeReplicationGroupsPages iterates over the pages of a DescribeReplicationGroups operation,
3288// calling the "fn" function with the response data for each page. To stop
3289// iterating, return false from the fn function.
3290//
3291// See DescribeReplicationGroups method for more information on how to use this operation.
3292//
3293// Note: This operation can generate multiple requests to a service.
3294//
3295//    // Example iterating over at most 3 pages of a DescribeReplicationGroups operation.
3296//    pageNum := 0
3297//    err := client.DescribeReplicationGroupsPages(params,
3298//        func(page *elasticache.DescribeReplicationGroupsOutput, lastPage bool) bool {
3299//            pageNum++
3300//            fmt.Println(page)
3301//            return pageNum <= 3
3302//        })
3303//
3304func (c *ElastiCache) DescribeReplicationGroupsPages(input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool) error {
3305	return c.DescribeReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3306}
3307
3308// DescribeReplicationGroupsPagesWithContext same as DescribeReplicationGroupsPages except
3309// it takes a Context and allows setting request options on the pages.
3310//
3311// The context must be non-nil and will be used for request cancellation. If
3312// the context is nil a panic will occur. In the future the SDK may create
3313// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3314// for more information on using Contexts.
3315func (c *ElastiCache) DescribeReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
3316	p := request.Pagination{
3317		NewRequest: func() (*request.Request, error) {
3318			var inCpy *DescribeReplicationGroupsInput
3319			if input != nil {
3320				tmp := *input
3321				inCpy = &tmp
3322			}
3323			req, _ := c.DescribeReplicationGroupsRequest(inCpy)
3324			req.SetContext(ctx)
3325			req.ApplyOptions(opts...)
3326			return req, nil
3327		},
3328	}
3329
3330	for p.Next() {
3331		if !fn(p.Page().(*DescribeReplicationGroupsOutput), !p.HasNextPage()) {
3332			break
3333		}
3334	}
3335
3336	return p.Err()
3337}
3338
3339const opDescribeReservedCacheNodes = "DescribeReservedCacheNodes"
3340
3341// DescribeReservedCacheNodesRequest generates a "aws/request.Request" representing the
3342// client's request for the DescribeReservedCacheNodes operation. The "output" return
3343// value will be populated with the request's response once the request completes
3344// successfully.
3345//
3346// Use "Send" method on the returned Request to send the API call to the service.
3347// the "output" return value is not valid until after Send returns without error.
3348//
3349// See DescribeReservedCacheNodes for more information on using the DescribeReservedCacheNodes
3350// API call, and error handling.
3351//
3352// This method is useful when you want to inject custom logic or configuration
3353// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3354//
3355//
3356//    // Example sending a request using the DescribeReservedCacheNodesRequest method.
3357//    req, resp := client.DescribeReservedCacheNodesRequest(params)
3358//
3359//    err := req.Send()
3360//    if err == nil { // resp is now filled
3361//        fmt.Println(resp)
3362//    }
3363//
3364// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3365func (c *ElastiCache) DescribeReservedCacheNodesRequest(input *DescribeReservedCacheNodesInput) (req *request.Request, output *DescribeReservedCacheNodesOutput) {
3366	op := &request.Operation{
3367		Name:       opDescribeReservedCacheNodes,
3368		HTTPMethod: "POST",
3369		HTTPPath:   "/",
3370		Paginator: &request.Paginator{
3371			InputTokens:     []string{"Marker"},
3372			OutputTokens:    []string{"Marker"},
3373			LimitToken:      "MaxRecords",
3374			TruncationToken: "",
3375		},
3376	}
3377
3378	if input == nil {
3379		input = &DescribeReservedCacheNodesInput{}
3380	}
3381
3382	output = &DescribeReservedCacheNodesOutput{}
3383	req = c.newRequest(op, input, output)
3384	return
3385}
3386
3387// DescribeReservedCacheNodes API operation for Amazon ElastiCache.
3388//
3389// Returns information about reserved cache nodes for this account, or about
3390// a specified reserved cache node.
3391//
3392// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3393// with awserr.Error's Code and Message methods to get detailed information about
3394// the error.
3395//
3396// See the AWS API reference guide for Amazon ElastiCache's
3397// API operation DescribeReservedCacheNodes for usage and error information.
3398//
3399// Returned Error Codes:
3400//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
3401//   The requested reserved cache node was not found.
3402//
3403//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3404//   The value for a parameter is invalid.
3405//
3406//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3407//   Two or more incompatible parameters were specified.
3408//
3409// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3410func (c *ElastiCache) DescribeReservedCacheNodes(input *DescribeReservedCacheNodesInput) (*DescribeReservedCacheNodesOutput, error) {
3411	req, out := c.DescribeReservedCacheNodesRequest(input)
3412	return out, req.Send()
3413}
3414
3415// DescribeReservedCacheNodesWithContext is the same as DescribeReservedCacheNodes with the addition of
3416// the ability to pass a context and additional request options.
3417//
3418// See DescribeReservedCacheNodes for details on how to use this API operation.
3419//
3420// The context must be non-nil and will be used for request cancellation. If
3421// the context is nil a panic will occur. In the future the SDK may create
3422// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3423// for more information on using Contexts.
3424func (c *ElastiCache) DescribeReservedCacheNodesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, opts ...request.Option) (*DescribeReservedCacheNodesOutput, error) {
3425	req, out := c.DescribeReservedCacheNodesRequest(input)
3426	req.SetContext(ctx)
3427	req.ApplyOptions(opts...)
3428	return out, req.Send()
3429}
3430
3431// DescribeReservedCacheNodesPages iterates over the pages of a DescribeReservedCacheNodes operation,
3432// calling the "fn" function with the response data for each page. To stop
3433// iterating, return false from the fn function.
3434//
3435// See DescribeReservedCacheNodes method for more information on how to use this operation.
3436//
3437// Note: This operation can generate multiple requests to a service.
3438//
3439//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodes operation.
3440//    pageNum := 0
3441//    err := client.DescribeReservedCacheNodesPages(params,
3442//        func(page *elasticache.DescribeReservedCacheNodesOutput, lastPage bool) bool {
3443//            pageNum++
3444//            fmt.Println(page)
3445//            return pageNum <= 3
3446//        })
3447//
3448func (c *ElastiCache) DescribeReservedCacheNodesPages(input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool) error {
3449	return c.DescribeReservedCacheNodesPagesWithContext(aws.BackgroundContext(), input, fn)
3450}
3451
3452// DescribeReservedCacheNodesPagesWithContext same as DescribeReservedCacheNodesPages except
3453// it takes a Context and allows setting request options on the pages.
3454//
3455// The context must be non-nil and will be used for request cancellation. If
3456// the context is nil a panic will occur. In the future the SDK may create
3457// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3458// for more information on using Contexts.
3459func (c *ElastiCache) DescribeReservedCacheNodesPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool, opts ...request.Option) error {
3460	p := request.Pagination{
3461		NewRequest: func() (*request.Request, error) {
3462			var inCpy *DescribeReservedCacheNodesInput
3463			if input != nil {
3464				tmp := *input
3465				inCpy = &tmp
3466			}
3467			req, _ := c.DescribeReservedCacheNodesRequest(inCpy)
3468			req.SetContext(ctx)
3469			req.ApplyOptions(opts...)
3470			return req, nil
3471		},
3472	}
3473
3474	for p.Next() {
3475		if !fn(p.Page().(*DescribeReservedCacheNodesOutput), !p.HasNextPage()) {
3476			break
3477		}
3478	}
3479
3480	return p.Err()
3481}
3482
3483const opDescribeReservedCacheNodesOfferings = "DescribeReservedCacheNodesOfferings"
3484
3485// DescribeReservedCacheNodesOfferingsRequest generates a "aws/request.Request" representing the
3486// client's request for the DescribeReservedCacheNodesOfferings operation. The "output" return
3487// value will be populated with the request's response once the request completes
3488// successfully.
3489//
3490// Use "Send" method on the returned Request to send the API call to the service.
3491// the "output" return value is not valid until after Send returns without error.
3492//
3493// See DescribeReservedCacheNodesOfferings for more information on using the DescribeReservedCacheNodesOfferings
3494// API call, and error handling.
3495//
3496// This method is useful when you want to inject custom logic or configuration
3497// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3498//
3499//
3500//    // Example sending a request using the DescribeReservedCacheNodesOfferingsRequest method.
3501//    req, resp := client.DescribeReservedCacheNodesOfferingsRequest(params)
3502//
3503//    err := req.Send()
3504//    if err == nil { // resp is now filled
3505//        fmt.Println(resp)
3506//    }
3507//
3508// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3509func (c *ElastiCache) DescribeReservedCacheNodesOfferingsRequest(input *DescribeReservedCacheNodesOfferingsInput) (req *request.Request, output *DescribeReservedCacheNodesOfferingsOutput) {
3510	op := &request.Operation{
3511		Name:       opDescribeReservedCacheNodesOfferings,
3512		HTTPMethod: "POST",
3513		HTTPPath:   "/",
3514		Paginator: &request.Paginator{
3515			InputTokens:     []string{"Marker"},
3516			OutputTokens:    []string{"Marker"},
3517			LimitToken:      "MaxRecords",
3518			TruncationToken: "",
3519		},
3520	}
3521
3522	if input == nil {
3523		input = &DescribeReservedCacheNodesOfferingsInput{}
3524	}
3525
3526	output = &DescribeReservedCacheNodesOfferingsOutput{}
3527	req = c.newRequest(op, input, output)
3528	return
3529}
3530
3531// DescribeReservedCacheNodesOfferings API operation for Amazon ElastiCache.
3532//
3533// Lists available reserved cache node offerings.
3534//
3535// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3536// with awserr.Error's Code and Message methods to get detailed information about
3537// the error.
3538//
3539// See the AWS API reference guide for Amazon ElastiCache's
3540// API operation DescribeReservedCacheNodesOfferings for usage and error information.
3541//
3542// Returned Error Codes:
3543//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
3544//   The requested cache node offering does not exist.
3545//
3546//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3547//   The value for a parameter is invalid.
3548//
3549//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3550//   Two or more incompatible parameters were specified.
3551//
3552// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3553func (c *ElastiCache) DescribeReservedCacheNodesOfferings(input *DescribeReservedCacheNodesOfferingsInput) (*DescribeReservedCacheNodesOfferingsOutput, error) {
3554	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
3555	return out, req.Send()
3556}
3557
3558// DescribeReservedCacheNodesOfferingsWithContext is the same as DescribeReservedCacheNodesOfferings with the addition of
3559// the ability to pass a context and additional request options.
3560//
3561// See DescribeReservedCacheNodesOfferings for details on how to use this API operation.
3562//
3563// The context must be non-nil and will be used for request cancellation. If
3564// the context is nil a panic will occur. In the future the SDK may create
3565// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3566// for more information on using Contexts.
3567func (c *ElastiCache) DescribeReservedCacheNodesOfferingsWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, opts ...request.Option) (*DescribeReservedCacheNodesOfferingsOutput, error) {
3568	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
3569	req.SetContext(ctx)
3570	req.ApplyOptions(opts...)
3571	return out, req.Send()
3572}
3573
3574// DescribeReservedCacheNodesOfferingsPages iterates over the pages of a DescribeReservedCacheNodesOfferings operation,
3575// calling the "fn" function with the response data for each page. To stop
3576// iterating, return false from the fn function.
3577//
3578// See DescribeReservedCacheNodesOfferings method for more information on how to use this operation.
3579//
3580// Note: This operation can generate multiple requests to a service.
3581//
3582//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodesOfferings operation.
3583//    pageNum := 0
3584//    err := client.DescribeReservedCacheNodesOfferingsPages(params,
3585//        func(page *elasticache.DescribeReservedCacheNodesOfferingsOutput, lastPage bool) bool {
3586//            pageNum++
3587//            fmt.Println(page)
3588//            return pageNum <= 3
3589//        })
3590//
3591func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPages(input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool) error {
3592	return c.DescribeReservedCacheNodesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
3593}
3594
3595// DescribeReservedCacheNodesOfferingsPagesWithContext same as DescribeReservedCacheNodesOfferingsPages except
3596// it takes a Context and allows setting request options on the pages.
3597//
3598// The context must be non-nil and will be used for request cancellation. If
3599// the context is nil a panic will occur. In the future the SDK may create
3600// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3601// for more information on using Contexts.
3602func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool, opts ...request.Option) error {
3603	p := request.Pagination{
3604		NewRequest: func() (*request.Request, error) {
3605			var inCpy *DescribeReservedCacheNodesOfferingsInput
3606			if input != nil {
3607				tmp := *input
3608				inCpy = &tmp
3609			}
3610			req, _ := c.DescribeReservedCacheNodesOfferingsRequest(inCpy)
3611			req.SetContext(ctx)
3612			req.ApplyOptions(opts...)
3613			return req, nil
3614		},
3615	}
3616
3617	for p.Next() {
3618		if !fn(p.Page().(*DescribeReservedCacheNodesOfferingsOutput), !p.HasNextPage()) {
3619			break
3620		}
3621	}
3622
3623	return p.Err()
3624}
3625
3626const opDescribeServiceUpdates = "DescribeServiceUpdates"
3627
3628// DescribeServiceUpdatesRequest generates a "aws/request.Request" representing the
3629// client's request for the DescribeServiceUpdates operation. The "output" return
3630// value will be populated with the request's response once the request completes
3631// successfully.
3632//
3633// Use "Send" method on the returned Request to send the API call to the service.
3634// the "output" return value is not valid until after Send returns without error.
3635//
3636// See DescribeServiceUpdates for more information on using the DescribeServiceUpdates
3637// API call, and error handling.
3638//
3639// This method is useful when you want to inject custom logic or configuration
3640// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3641//
3642//
3643//    // Example sending a request using the DescribeServiceUpdatesRequest method.
3644//    req, resp := client.DescribeServiceUpdatesRequest(params)
3645//
3646//    err := req.Send()
3647//    if err == nil { // resp is now filled
3648//        fmt.Println(resp)
3649//    }
3650//
3651// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
3652func (c *ElastiCache) DescribeServiceUpdatesRequest(input *DescribeServiceUpdatesInput) (req *request.Request, output *DescribeServiceUpdatesOutput) {
3653	op := &request.Operation{
3654		Name:       opDescribeServiceUpdates,
3655		HTTPMethod: "POST",
3656		HTTPPath:   "/",
3657		Paginator: &request.Paginator{
3658			InputTokens:     []string{"Marker"},
3659			OutputTokens:    []string{"Marker"},
3660			LimitToken:      "MaxRecords",
3661			TruncationToken: "",
3662		},
3663	}
3664
3665	if input == nil {
3666		input = &DescribeServiceUpdatesInput{}
3667	}
3668
3669	output = &DescribeServiceUpdatesOutput{}
3670	req = c.newRequest(op, input, output)
3671	return
3672}
3673
3674// DescribeServiceUpdates API operation for Amazon ElastiCache.
3675//
3676// Returns details of the service updates
3677//
3678// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3679// with awserr.Error's Code and Message methods to get detailed information about
3680// the error.
3681//
3682// See the AWS API reference guide for Amazon ElastiCache's
3683// API operation DescribeServiceUpdates for usage and error information.
3684//
3685// Returned Error Codes:
3686//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
3687//   The service update doesn't exist
3688//
3689//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3690//   The value for a parameter is invalid.
3691//
3692//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3693//   Two or more incompatible parameters were specified.
3694//
3695// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
3696func (c *ElastiCache) DescribeServiceUpdates(input *DescribeServiceUpdatesInput) (*DescribeServiceUpdatesOutput, error) {
3697	req, out := c.DescribeServiceUpdatesRequest(input)
3698	return out, req.Send()
3699}
3700
3701// DescribeServiceUpdatesWithContext is the same as DescribeServiceUpdates with the addition of
3702// the ability to pass a context and additional request options.
3703//
3704// See DescribeServiceUpdates for details on how to use this API operation.
3705//
3706// The context must be non-nil and will be used for request cancellation. If
3707// the context is nil a panic will occur. In the future the SDK may create
3708// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3709// for more information on using Contexts.
3710func (c *ElastiCache) DescribeServiceUpdatesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, opts ...request.Option) (*DescribeServiceUpdatesOutput, error) {
3711	req, out := c.DescribeServiceUpdatesRequest(input)
3712	req.SetContext(ctx)
3713	req.ApplyOptions(opts...)
3714	return out, req.Send()
3715}
3716
3717// DescribeServiceUpdatesPages iterates over the pages of a DescribeServiceUpdates operation,
3718// calling the "fn" function with the response data for each page. To stop
3719// iterating, return false from the fn function.
3720//
3721// See DescribeServiceUpdates method for more information on how to use this operation.
3722//
3723// Note: This operation can generate multiple requests to a service.
3724//
3725//    // Example iterating over at most 3 pages of a DescribeServiceUpdates operation.
3726//    pageNum := 0
3727//    err := client.DescribeServiceUpdatesPages(params,
3728//        func(page *elasticache.DescribeServiceUpdatesOutput, lastPage bool) bool {
3729//            pageNum++
3730//            fmt.Println(page)
3731//            return pageNum <= 3
3732//        })
3733//
3734func (c *ElastiCache) DescribeServiceUpdatesPages(input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool) error {
3735	return c.DescribeServiceUpdatesPagesWithContext(aws.BackgroundContext(), input, fn)
3736}
3737
3738// DescribeServiceUpdatesPagesWithContext same as DescribeServiceUpdatesPages except
3739// it takes a Context and allows setting request options on the pages.
3740//
3741// The context must be non-nil and will be used for request cancellation. If
3742// the context is nil a panic will occur. In the future the SDK may create
3743// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3744// for more information on using Contexts.
3745func (c *ElastiCache) DescribeServiceUpdatesPagesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool, opts ...request.Option) error {
3746	p := request.Pagination{
3747		NewRequest: func() (*request.Request, error) {
3748			var inCpy *DescribeServiceUpdatesInput
3749			if input != nil {
3750				tmp := *input
3751				inCpy = &tmp
3752			}
3753			req, _ := c.DescribeServiceUpdatesRequest(inCpy)
3754			req.SetContext(ctx)
3755			req.ApplyOptions(opts...)
3756			return req, nil
3757		},
3758	}
3759
3760	for p.Next() {
3761		if !fn(p.Page().(*DescribeServiceUpdatesOutput), !p.HasNextPage()) {
3762			break
3763		}
3764	}
3765
3766	return p.Err()
3767}
3768
3769const opDescribeSnapshots = "DescribeSnapshots"
3770
3771// DescribeSnapshotsRequest generates a "aws/request.Request" representing the
3772// client's request for the DescribeSnapshots operation. The "output" return
3773// value will be populated with the request's response once the request completes
3774// successfully.
3775//
3776// Use "Send" method on the returned Request to send the API call to the service.
3777// the "output" return value is not valid until after Send returns without error.
3778//
3779// See DescribeSnapshots for more information on using the DescribeSnapshots
3780// API call, and error handling.
3781//
3782// This method is useful when you want to inject custom logic or configuration
3783// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3784//
3785//
3786//    // Example sending a request using the DescribeSnapshotsRequest method.
3787//    req, resp := client.DescribeSnapshotsRequest(params)
3788//
3789//    err := req.Send()
3790//    if err == nil { // resp is now filled
3791//        fmt.Println(resp)
3792//    }
3793//
3794// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
3795func (c *ElastiCache) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
3796	op := &request.Operation{
3797		Name:       opDescribeSnapshots,
3798		HTTPMethod: "POST",
3799		HTTPPath:   "/",
3800		Paginator: &request.Paginator{
3801			InputTokens:     []string{"Marker"},
3802			OutputTokens:    []string{"Marker"},
3803			LimitToken:      "MaxRecords",
3804			TruncationToken: "",
3805		},
3806	}
3807
3808	if input == nil {
3809		input = &DescribeSnapshotsInput{}
3810	}
3811
3812	output = &DescribeSnapshotsOutput{}
3813	req = c.newRequest(op, input, output)
3814	return
3815}
3816
3817// DescribeSnapshots API operation for Amazon ElastiCache.
3818//
3819// Returns information about cluster or replication group snapshots. By default,
3820// DescribeSnapshots lists all of your snapshots; it can optionally describe
3821// a single snapshot, or just the snapshots associated with a particular cache
3822// cluster.
3823//
3824// This operation is valid for Redis only.
3825//
3826// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3827// with awserr.Error's Code and Message methods to get detailed information about
3828// the error.
3829//
3830// See the AWS API reference guide for Amazon ElastiCache's
3831// API operation DescribeSnapshots for usage and error information.
3832//
3833// Returned Error Codes:
3834//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
3835//   The requested cluster ID does not refer to an existing cluster.
3836//
3837//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
3838//   The requested snapshot name does not refer to an existing snapshot.
3839//
3840//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3841//   The value for a parameter is invalid.
3842//
3843//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3844//   Two or more incompatible parameters were specified.
3845//
3846// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
3847func (c *ElastiCache) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
3848	req, out := c.DescribeSnapshotsRequest(input)
3849	return out, req.Send()
3850}
3851
3852// DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of
3853// the ability to pass a context and additional request options.
3854//
3855// See DescribeSnapshots for details on how to use this API operation.
3856//
3857// The context must be non-nil and will be used for request cancellation. If
3858// the context is nil a panic will occur. In the future the SDK may create
3859// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3860// for more information on using Contexts.
3861func (c *ElastiCache) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) {
3862	req, out := c.DescribeSnapshotsRequest(input)
3863	req.SetContext(ctx)
3864	req.ApplyOptions(opts...)
3865	return out, req.Send()
3866}
3867
3868// DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation,
3869// calling the "fn" function with the response data for each page. To stop
3870// iterating, return false from the fn function.
3871//
3872// See DescribeSnapshots method for more information on how to use this operation.
3873//
3874// Note: This operation can generate multiple requests to a service.
3875//
3876//    // Example iterating over at most 3 pages of a DescribeSnapshots operation.
3877//    pageNum := 0
3878//    err := client.DescribeSnapshotsPages(params,
3879//        func(page *elasticache.DescribeSnapshotsOutput, lastPage bool) bool {
3880//            pageNum++
3881//            fmt.Println(page)
3882//            return pageNum <= 3
3883//        })
3884//
3885func (c *ElastiCache) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error {
3886	return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
3887}
3888
3889// DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except
3890// it takes a Context and allows setting request options on the pages.
3891//
3892// The context must be non-nil and will be used for request cancellation. If
3893// the context is nil a panic will occur. In the future the SDK may create
3894// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3895// for more information on using Contexts.
3896func (c *ElastiCache) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error {
3897	p := request.Pagination{
3898		NewRequest: func() (*request.Request, error) {
3899			var inCpy *DescribeSnapshotsInput
3900			if input != nil {
3901				tmp := *input
3902				inCpy = &tmp
3903			}
3904			req, _ := c.DescribeSnapshotsRequest(inCpy)
3905			req.SetContext(ctx)
3906			req.ApplyOptions(opts...)
3907			return req, nil
3908		},
3909	}
3910
3911	for p.Next() {
3912		if !fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage()) {
3913			break
3914		}
3915	}
3916
3917	return p.Err()
3918}
3919
3920const opDescribeUpdateActions = "DescribeUpdateActions"
3921
3922// DescribeUpdateActionsRequest generates a "aws/request.Request" representing the
3923// client's request for the DescribeUpdateActions operation. The "output" return
3924// value will be populated with the request's response once the request completes
3925// successfully.
3926//
3927// Use "Send" method on the returned Request to send the API call to the service.
3928// the "output" return value is not valid until after Send returns without error.
3929//
3930// See DescribeUpdateActions for more information on using the DescribeUpdateActions
3931// API call, and error handling.
3932//
3933// This method is useful when you want to inject custom logic or configuration
3934// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3935//
3936//
3937//    // Example sending a request using the DescribeUpdateActionsRequest method.
3938//    req, resp := client.DescribeUpdateActionsRequest(params)
3939//
3940//    err := req.Send()
3941//    if err == nil { // resp is now filled
3942//        fmt.Println(resp)
3943//    }
3944//
3945// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
3946func (c *ElastiCache) DescribeUpdateActionsRequest(input *DescribeUpdateActionsInput) (req *request.Request, output *DescribeUpdateActionsOutput) {
3947	op := &request.Operation{
3948		Name:       opDescribeUpdateActions,
3949		HTTPMethod: "POST",
3950		HTTPPath:   "/",
3951		Paginator: &request.Paginator{
3952			InputTokens:     []string{"Marker"},
3953			OutputTokens:    []string{"Marker"},
3954			LimitToken:      "MaxRecords",
3955			TruncationToken: "",
3956		},
3957	}
3958
3959	if input == nil {
3960		input = &DescribeUpdateActionsInput{}
3961	}
3962
3963	output = &DescribeUpdateActionsOutput{}
3964	req = c.newRequest(op, input, output)
3965	return
3966}
3967
3968// DescribeUpdateActions API operation for Amazon ElastiCache.
3969//
3970// Returns details of the update actions
3971//
3972// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3973// with awserr.Error's Code and Message methods to get detailed information about
3974// the error.
3975//
3976// See the AWS API reference guide for Amazon ElastiCache's
3977// API operation DescribeUpdateActions for usage and error information.
3978//
3979// Returned Error Codes:
3980//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3981//   The value for a parameter is invalid.
3982//
3983//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3984//   Two or more incompatible parameters were specified.
3985//
3986// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
3987func (c *ElastiCache) DescribeUpdateActions(input *DescribeUpdateActionsInput) (*DescribeUpdateActionsOutput, error) {
3988	req, out := c.DescribeUpdateActionsRequest(input)
3989	return out, req.Send()
3990}
3991
3992// DescribeUpdateActionsWithContext is the same as DescribeUpdateActions with the addition of
3993// the ability to pass a context and additional request options.
3994//
3995// See DescribeUpdateActions for details on how to use this API operation.
3996//
3997// The context must be non-nil and will be used for request cancellation. If
3998// the context is nil a panic will occur. In the future the SDK may create
3999// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4000// for more information on using Contexts.
4001func (c *ElastiCache) DescribeUpdateActionsWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, opts ...request.Option) (*DescribeUpdateActionsOutput, error) {
4002	req, out := c.DescribeUpdateActionsRequest(input)
4003	req.SetContext(ctx)
4004	req.ApplyOptions(opts...)
4005	return out, req.Send()
4006}
4007
4008// DescribeUpdateActionsPages iterates over the pages of a DescribeUpdateActions operation,
4009// calling the "fn" function with the response data for each page. To stop
4010// iterating, return false from the fn function.
4011//
4012// See DescribeUpdateActions method for more information on how to use this operation.
4013//
4014// Note: This operation can generate multiple requests to a service.
4015//
4016//    // Example iterating over at most 3 pages of a DescribeUpdateActions operation.
4017//    pageNum := 0
4018//    err := client.DescribeUpdateActionsPages(params,
4019//        func(page *elasticache.DescribeUpdateActionsOutput, lastPage bool) bool {
4020//            pageNum++
4021//            fmt.Println(page)
4022//            return pageNum <= 3
4023//        })
4024//
4025func (c *ElastiCache) DescribeUpdateActionsPages(input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool) error {
4026	return c.DescribeUpdateActionsPagesWithContext(aws.BackgroundContext(), input, fn)
4027}
4028
4029// DescribeUpdateActionsPagesWithContext same as DescribeUpdateActionsPages except
4030// it takes a Context and allows setting request options on the pages.
4031//
4032// The context must be non-nil and will be used for request cancellation. If
4033// the context is nil a panic will occur. In the future the SDK may create
4034// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4035// for more information on using Contexts.
4036func (c *ElastiCache) DescribeUpdateActionsPagesWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool, opts ...request.Option) error {
4037	p := request.Pagination{
4038		NewRequest: func() (*request.Request, error) {
4039			var inCpy *DescribeUpdateActionsInput
4040			if input != nil {
4041				tmp := *input
4042				inCpy = &tmp
4043			}
4044			req, _ := c.DescribeUpdateActionsRequest(inCpy)
4045			req.SetContext(ctx)
4046			req.ApplyOptions(opts...)
4047			return req, nil
4048		},
4049	}
4050
4051	for p.Next() {
4052		if !fn(p.Page().(*DescribeUpdateActionsOutput), !p.HasNextPage()) {
4053			break
4054		}
4055	}
4056
4057	return p.Err()
4058}
4059
4060const opIncreaseReplicaCount = "IncreaseReplicaCount"
4061
4062// IncreaseReplicaCountRequest generates a "aws/request.Request" representing the
4063// client's request for the IncreaseReplicaCount operation. The "output" return
4064// value will be populated with the request's response once the request completes
4065// successfully.
4066//
4067// Use "Send" method on the returned Request to send the API call to the service.
4068// the "output" return value is not valid until after Send returns without error.
4069//
4070// See IncreaseReplicaCount for more information on using the IncreaseReplicaCount
4071// API call, and error handling.
4072//
4073// This method is useful when you want to inject custom logic or configuration
4074// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4075//
4076//
4077//    // Example sending a request using the IncreaseReplicaCountRequest method.
4078//    req, resp := client.IncreaseReplicaCountRequest(params)
4079//
4080//    err := req.Send()
4081//    if err == nil { // resp is now filled
4082//        fmt.Println(resp)
4083//    }
4084//
4085// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4086func (c *ElastiCache) IncreaseReplicaCountRequest(input *IncreaseReplicaCountInput) (req *request.Request, output *IncreaseReplicaCountOutput) {
4087	op := &request.Operation{
4088		Name:       opIncreaseReplicaCount,
4089		HTTPMethod: "POST",
4090		HTTPPath:   "/",
4091	}
4092
4093	if input == nil {
4094		input = &IncreaseReplicaCountInput{}
4095	}
4096
4097	output = &IncreaseReplicaCountOutput{}
4098	req = c.newRequest(op, input, output)
4099	return
4100}
4101
4102// IncreaseReplicaCount API operation for Amazon ElastiCache.
4103//
4104// Dynamically increases the number of replics in a Redis (cluster mode disabled)
4105// replication group or the number of replica nodes in one or more node groups
4106// (shards) of a Redis (cluster mode enabled) replication group. This operation
4107// is performed with no cluster down time.
4108//
4109// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4110// with awserr.Error's Code and Message methods to get detailed information about
4111// the error.
4112//
4113// See the AWS API reference guide for Amazon ElastiCache's
4114// API operation IncreaseReplicaCount for usage and error information.
4115//
4116// Returned Error Codes:
4117//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4118//   The specified replication group does not exist.
4119//
4120//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4121//   The requested replication group is not in the available state.
4122//
4123//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4124//   The requested cluster is not in the available state.
4125//
4126//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4127//   The VPC network is in an invalid state.
4128//
4129//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4130//   The requested cache node type is not available in the specified Availability
4131//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4132//   in the ElastiCache User Guide.
4133//
4134//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
4135//   The request cannot be processed because it would exceed the allowed number
4136//   of clusters per customer.
4137//
4138//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
4139//   The request cannot be processed because it would exceed the maximum allowed
4140//   number of node groups (shards) in a single replication group. The default
4141//   maximum is 90
4142//
4143//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4144//   The request cannot be processed because it would exceed the allowed number
4145//   of cache nodes per customer.
4146//
4147//   * ErrCodeNoOperationFault "NoOperationFault"
4148//   The operation was not performed because no changes were required.
4149//
4150//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
4151//   The KMS key supplied is not valid.
4152//
4153//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4154//   The value for a parameter is invalid.
4155//
4156//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4157//   Two or more incompatible parameters were specified.
4158//
4159// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4160func (c *ElastiCache) IncreaseReplicaCount(input *IncreaseReplicaCountInput) (*IncreaseReplicaCountOutput, error) {
4161	req, out := c.IncreaseReplicaCountRequest(input)
4162	return out, req.Send()
4163}
4164
4165// IncreaseReplicaCountWithContext is the same as IncreaseReplicaCount with the addition of
4166// the ability to pass a context and additional request options.
4167//
4168// See IncreaseReplicaCount for details on how to use this API operation.
4169//
4170// The context must be non-nil and will be used for request cancellation. If
4171// the context is nil a panic will occur. In the future the SDK may create
4172// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4173// for more information on using Contexts.
4174func (c *ElastiCache) IncreaseReplicaCountWithContext(ctx aws.Context, input *IncreaseReplicaCountInput, opts ...request.Option) (*IncreaseReplicaCountOutput, error) {
4175	req, out := c.IncreaseReplicaCountRequest(input)
4176	req.SetContext(ctx)
4177	req.ApplyOptions(opts...)
4178	return out, req.Send()
4179}
4180
4181const opListAllowedNodeTypeModifications = "ListAllowedNodeTypeModifications"
4182
4183// ListAllowedNodeTypeModificationsRequest generates a "aws/request.Request" representing the
4184// client's request for the ListAllowedNodeTypeModifications operation. The "output" return
4185// value will be populated with the request's response once the request completes
4186// successfully.
4187//
4188// Use "Send" method on the returned Request to send the API call to the service.
4189// the "output" return value is not valid until after Send returns without error.
4190//
4191// See ListAllowedNodeTypeModifications for more information on using the ListAllowedNodeTypeModifications
4192// API call, and error handling.
4193//
4194// This method is useful when you want to inject custom logic or configuration
4195// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4196//
4197//
4198//    // Example sending a request using the ListAllowedNodeTypeModificationsRequest method.
4199//    req, resp := client.ListAllowedNodeTypeModificationsRequest(params)
4200//
4201//    err := req.Send()
4202//    if err == nil { // resp is now filled
4203//        fmt.Println(resp)
4204//    }
4205//
4206// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4207func (c *ElastiCache) ListAllowedNodeTypeModificationsRequest(input *ListAllowedNodeTypeModificationsInput) (req *request.Request, output *ListAllowedNodeTypeModificationsOutput) {
4208	op := &request.Operation{
4209		Name:       opListAllowedNodeTypeModifications,
4210		HTTPMethod: "POST",
4211		HTTPPath:   "/",
4212	}
4213
4214	if input == nil {
4215		input = &ListAllowedNodeTypeModificationsInput{}
4216	}
4217
4218	output = &ListAllowedNodeTypeModificationsOutput{}
4219	req = c.newRequest(op, input, output)
4220	return
4221}
4222
4223// ListAllowedNodeTypeModifications API operation for Amazon ElastiCache.
4224//
4225// Lists all available node types that you can scale your Redis cluster's or
4226// replication group's current node type.
4227//
4228// When you use the ModifyCacheCluster or ModifyReplicationGroup operations
4229// to scale your cluster or replication group, the value of the CacheNodeType
4230// parameter must be one of the node types returned by this operation.
4231//
4232// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4233// with awserr.Error's Code and Message methods to get detailed information about
4234// the error.
4235//
4236// See the AWS API reference guide for Amazon ElastiCache's
4237// API operation ListAllowedNodeTypeModifications for usage and error information.
4238//
4239// Returned Error Codes:
4240//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4241//   The requested cluster ID does not refer to an existing cluster.
4242//
4243//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4244//   The specified replication group does not exist.
4245//
4246//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4247//   Two or more incompatible parameters were specified.
4248//
4249//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4250//   The value for a parameter is invalid.
4251//
4252// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4253func (c *ElastiCache) ListAllowedNodeTypeModifications(input *ListAllowedNodeTypeModificationsInput) (*ListAllowedNodeTypeModificationsOutput, error) {
4254	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4255	return out, req.Send()
4256}
4257
4258// ListAllowedNodeTypeModificationsWithContext is the same as ListAllowedNodeTypeModifications with the addition of
4259// the ability to pass a context and additional request options.
4260//
4261// See ListAllowedNodeTypeModifications for details on how to use this API operation.
4262//
4263// The context must be non-nil and will be used for request cancellation. If
4264// the context is nil a panic will occur. In the future the SDK may create
4265// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4266// for more information on using Contexts.
4267func (c *ElastiCache) ListAllowedNodeTypeModificationsWithContext(ctx aws.Context, input *ListAllowedNodeTypeModificationsInput, opts ...request.Option) (*ListAllowedNodeTypeModificationsOutput, error) {
4268	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4269	req.SetContext(ctx)
4270	req.ApplyOptions(opts...)
4271	return out, req.Send()
4272}
4273
4274const opListTagsForResource = "ListTagsForResource"
4275
4276// ListTagsForResourceRequest generates a "aws/request.Request" representing the
4277// client's request for the ListTagsForResource operation. The "output" return
4278// value will be populated with the request's response once the request completes
4279// successfully.
4280//
4281// Use "Send" method on the returned Request to send the API call to the service.
4282// the "output" return value is not valid until after Send returns without error.
4283//
4284// See ListTagsForResource for more information on using the ListTagsForResource
4285// API call, and error handling.
4286//
4287// This method is useful when you want to inject custom logic or configuration
4288// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4289//
4290//
4291//    // Example sending a request using the ListTagsForResourceRequest method.
4292//    req, resp := client.ListTagsForResourceRequest(params)
4293//
4294//    err := req.Send()
4295//    if err == nil { // resp is now filled
4296//        fmt.Println(resp)
4297//    }
4298//
4299// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
4300func (c *ElastiCache) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *TagListMessage) {
4301	op := &request.Operation{
4302		Name:       opListTagsForResource,
4303		HTTPMethod: "POST",
4304		HTTPPath:   "/",
4305	}
4306
4307	if input == nil {
4308		input = &ListTagsForResourceInput{}
4309	}
4310
4311	output = &TagListMessage{}
4312	req = c.newRequest(op, input, output)
4313	return
4314}
4315
4316// ListTagsForResource API operation for Amazon ElastiCache.
4317//
4318// Lists all cost allocation tags currently on the named resource. A cost allocation
4319// tag is a key-value pair where the key is case-sensitive and the value is
4320// optional. You can use cost allocation tags to categorize and track your AWS
4321// costs.
4322//
4323// If the cluster is not in the available state, ListTagsForResource returns
4324// an error.
4325//
4326// You can have a maximum of 50 cost allocation tags on an ElastiCache resource.
4327// For more information, see Monitoring Costs with Tags (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Tagging.html).
4328//
4329// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4330// with awserr.Error's Code and Message methods to get detailed information about
4331// the error.
4332//
4333// See the AWS API reference guide for Amazon ElastiCache's
4334// API operation ListTagsForResource for usage and error information.
4335//
4336// Returned Error Codes:
4337//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4338//   The requested cluster ID does not refer to an existing cluster.
4339//
4340//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
4341//   The requested snapshot name does not refer to an existing snapshot.
4342//
4343//   * ErrCodeInvalidARNFault "InvalidARN"
4344//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
4345//
4346// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
4347func (c *ElastiCache) ListTagsForResource(input *ListTagsForResourceInput) (*TagListMessage, error) {
4348	req, out := c.ListTagsForResourceRequest(input)
4349	return out, req.Send()
4350}
4351
4352// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
4353// the ability to pass a context and additional request options.
4354//
4355// See ListTagsForResource for details on how to use this API operation.
4356//
4357// The context must be non-nil and will be used for request cancellation. If
4358// the context is nil a panic will occur. In the future the SDK may create
4359// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4360// for more information on using Contexts.
4361func (c *ElastiCache) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*TagListMessage, error) {
4362	req, out := c.ListTagsForResourceRequest(input)
4363	req.SetContext(ctx)
4364	req.ApplyOptions(opts...)
4365	return out, req.Send()
4366}
4367
4368const opModifyCacheCluster = "ModifyCacheCluster"
4369
4370// ModifyCacheClusterRequest generates a "aws/request.Request" representing the
4371// client's request for the ModifyCacheCluster operation. The "output" return
4372// value will be populated with the request's response once the request completes
4373// successfully.
4374//
4375// Use "Send" method on the returned Request to send the API call to the service.
4376// the "output" return value is not valid until after Send returns without error.
4377//
4378// See ModifyCacheCluster for more information on using the ModifyCacheCluster
4379// API call, and error handling.
4380//
4381// This method is useful when you want to inject custom logic or configuration
4382// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4383//
4384//
4385//    // Example sending a request using the ModifyCacheClusterRequest method.
4386//    req, resp := client.ModifyCacheClusterRequest(params)
4387//
4388//    err := req.Send()
4389//    if err == nil { // resp is now filled
4390//        fmt.Println(resp)
4391//    }
4392//
4393// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
4394func (c *ElastiCache) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) (req *request.Request, output *ModifyCacheClusterOutput) {
4395	op := &request.Operation{
4396		Name:       opModifyCacheCluster,
4397		HTTPMethod: "POST",
4398		HTTPPath:   "/",
4399	}
4400
4401	if input == nil {
4402		input = &ModifyCacheClusterInput{}
4403	}
4404
4405	output = &ModifyCacheClusterOutput{}
4406	req = c.newRequest(op, input, output)
4407	return
4408}
4409
4410// ModifyCacheCluster API operation for Amazon ElastiCache.
4411//
4412// Modifies the settings for a cluster. You can use this operation to change
4413// one or more cluster configuration parameters by specifying the parameters
4414// and the new values.
4415//
4416// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4417// with awserr.Error's Code and Message methods to get detailed information about
4418// the error.
4419//
4420// See the AWS API reference guide for Amazon ElastiCache's
4421// API operation ModifyCacheCluster for usage and error information.
4422//
4423// Returned Error Codes:
4424//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4425//   The requested cluster is not in the available state.
4426//
4427//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
4428//   The current state of the cache security group does not allow deletion.
4429//
4430//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4431//   The requested cache node type is not available in the specified Availability
4432//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4433//   in the ElastiCache User Guide.
4434//
4435//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4436//   The requested cluster ID does not refer to an existing cluster.
4437//
4438//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
4439//   The request cannot be processed because it would exceed the allowed number
4440//   of cache nodes in a single cluster.
4441//
4442//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4443//   The request cannot be processed because it would exceed the allowed number
4444//   of cache nodes per customer.
4445//
4446//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
4447//   The requested cache security group name does not refer to an existing cache
4448//   security group.
4449//
4450//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
4451//   The requested cache parameter group name does not refer to an existing cache
4452//   parameter group.
4453//
4454//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4455//   The VPC network is in an invalid state.
4456//
4457//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4458//   The value for a parameter is invalid.
4459//
4460//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4461//   Two or more incompatible parameters were specified.
4462//
4463// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
4464func (c *ElastiCache) ModifyCacheCluster(input *ModifyCacheClusterInput) (*ModifyCacheClusterOutput, error) {
4465	req, out := c.ModifyCacheClusterRequest(input)
4466	return out, req.Send()
4467}
4468
4469// ModifyCacheClusterWithContext is the same as ModifyCacheCluster with the addition of
4470// the ability to pass a context and additional request options.
4471//
4472// See ModifyCacheCluster for details on how to use this API operation.
4473//
4474// The context must be non-nil and will be used for request cancellation. If
4475// the context is nil a panic will occur. In the future the SDK may create
4476// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4477// for more information on using Contexts.
4478func (c *ElastiCache) ModifyCacheClusterWithContext(ctx aws.Context, input *ModifyCacheClusterInput, opts ...request.Option) (*ModifyCacheClusterOutput, error) {
4479	req, out := c.ModifyCacheClusterRequest(input)
4480	req.SetContext(ctx)
4481	req.ApplyOptions(opts...)
4482	return out, req.Send()
4483}
4484
4485const opModifyCacheParameterGroup = "ModifyCacheParameterGroup"
4486
4487// ModifyCacheParameterGroupRequest generates a "aws/request.Request" representing the
4488// client's request for the ModifyCacheParameterGroup operation. The "output" return
4489// value will be populated with the request's response once the request completes
4490// successfully.
4491//
4492// Use "Send" method on the returned Request to send the API call to the service.
4493// the "output" return value is not valid until after Send returns without error.
4494//
4495// See ModifyCacheParameterGroup for more information on using the ModifyCacheParameterGroup
4496// API call, and error handling.
4497//
4498// This method is useful when you want to inject custom logic or configuration
4499// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4500//
4501//
4502//    // Example sending a request using the ModifyCacheParameterGroupRequest method.
4503//    req, resp := client.ModifyCacheParameterGroupRequest(params)
4504//
4505//    err := req.Send()
4506//    if err == nil { // resp is now filled
4507//        fmt.Println(resp)
4508//    }
4509//
4510// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
4511func (c *ElastiCache) ModifyCacheParameterGroupRequest(input *ModifyCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
4512	op := &request.Operation{
4513		Name:       opModifyCacheParameterGroup,
4514		HTTPMethod: "POST",
4515		HTTPPath:   "/",
4516	}
4517
4518	if input == nil {
4519		input = &ModifyCacheParameterGroupInput{}
4520	}
4521
4522	output = &CacheParameterGroupNameMessage{}
4523	req = c.newRequest(op, input, output)
4524	return
4525}
4526
4527// ModifyCacheParameterGroup API operation for Amazon ElastiCache.
4528//
4529// Modifies the parameters of a cache parameter group. You can modify up to
4530// 20 parameters in a single request by submitting a list parameter name and
4531// value pairs.
4532//
4533// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4534// with awserr.Error's Code and Message methods to get detailed information about
4535// the error.
4536//
4537// See the AWS API reference guide for Amazon ElastiCache's
4538// API operation ModifyCacheParameterGroup for usage and error information.
4539//
4540// Returned Error Codes:
4541//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
4542//   The requested cache parameter group name does not refer to an existing cache
4543//   parameter group.
4544//
4545//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
4546//   The current state of the cache parameter group does not allow the requested
4547//   operation to occur.
4548//
4549//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4550//   The value for a parameter is invalid.
4551//
4552//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4553//   Two or more incompatible parameters were specified.
4554//
4555// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
4556func (c *ElastiCache) ModifyCacheParameterGroup(input *ModifyCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
4557	req, out := c.ModifyCacheParameterGroupRequest(input)
4558	return out, req.Send()
4559}
4560
4561// ModifyCacheParameterGroupWithContext is the same as ModifyCacheParameterGroup with the addition of
4562// the ability to pass a context and additional request options.
4563//
4564// See ModifyCacheParameterGroup for details on how to use this API operation.
4565//
4566// The context must be non-nil and will be used for request cancellation. If
4567// the context is nil a panic will occur. In the future the SDK may create
4568// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4569// for more information on using Contexts.
4570func (c *ElastiCache) ModifyCacheParameterGroupWithContext(ctx aws.Context, input *ModifyCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
4571	req, out := c.ModifyCacheParameterGroupRequest(input)
4572	req.SetContext(ctx)
4573	req.ApplyOptions(opts...)
4574	return out, req.Send()
4575}
4576
4577const opModifyCacheSubnetGroup = "ModifyCacheSubnetGroup"
4578
4579// ModifyCacheSubnetGroupRequest generates a "aws/request.Request" representing the
4580// client's request for the ModifyCacheSubnetGroup operation. The "output" return
4581// value will be populated with the request's response once the request completes
4582// successfully.
4583//
4584// Use "Send" method on the returned Request to send the API call to the service.
4585// the "output" return value is not valid until after Send returns without error.
4586//
4587// See ModifyCacheSubnetGroup for more information on using the ModifyCacheSubnetGroup
4588// API call, and error handling.
4589//
4590// This method is useful when you want to inject custom logic or configuration
4591// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4592//
4593//
4594//    // Example sending a request using the ModifyCacheSubnetGroupRequest method.
4595//    req, resp := client.ModifyCacheSubnetGroupRequest(params)
4596//
4597//    err := req.Send()
4598//    if err == nil { // resp is now filled
4599//        fmt.Println(resp)
4600//    }
4601//
4602// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
4603func (c *ElastiCache) ModifyCacheSubnetGroupRequest(input *ModifyCacheSubnetGroupInput) (req *request.Request, output *ModifyCacheSubnetGroupOutput) {
4604	op := &request.Operation{
4605		Name:       opModifyCacheSubnetGroup,
4606		HTTPMethod: "POST",
4607		HTTPPath:   "/",
4608	}
4609
4610	if input == nil {
4611		input = &ModifyCacheSubnetGroupInput{}
4612	}
4613
4614	output = &ModifyCacheSubnetGroupOutput{}
4615	req = c.newRequest(op, input, output)
4616	return
4617}
4618
4619// ModifyCacheSubnetGroup API operation for Amazon ElastiCache.
4620//
4621// Modifies an existing cache subnet group.
4622//
4623// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4624// with awserr.Error's Code and Message methods to get detailed information about
4625// the error.
4626//
4627// See the AWS API reference guide for Amazon ElastiCache's
4628// API operation ModifyCacheSubnetGroup for usage and error information.
4629//
4630// Returned Error Codes:
4631//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
4632//   The requested cache subnet group name does not refer to an existing cache
4633//   subnet group.
4634//
4635//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
4636//   The request cannot be processed because it would exceed the allowed number
4637//   of subnets in a cache subnet group.
4638//
4639//   * ErrCodeSubnetInUse "SubnetInUse"
4640//   The requested subnet is being used by another cache subnet group.
4641//
4642//   * ErrCodeInvalidSubnet "InvalidSubnet"
4643//   An invalid subnet identifier was specified.
4644//
4645// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
4646func (c *ElastiCache) ModifyCacheSubnetGroup(input *ModifyCacheSubnetGroupInput) (*ModifyCacheSubnetGroupOutput, error) {
4647	req, out := c.ModifyCacheSubnetGroupRequest(input)
4648	return out, req.Send()
4649}
4650
4651// ModifyCacheSubnetGroupWithContext is the same as ModifyCacheSubnetGroup with the addition of
4652// the ability to pass a context and additional request options.
4653//
4654// See ModifyCacheSubnetGroup for details on how to use this API operation.
4655//
4656// The context must be non-nil and will be used for request cancellation. If
4657// the context is nil a panic will occur. In the future the SDK may create
4658// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4659// for more information on using Contexts.
4660func (c *ElastiCache) ModifyCacheSubnetGroupWithContext(ctx aws.Context, input *ModifyCacheSubnetGroupInput, opts ...request.Option) (*ModifyCacheSubnetGroupOutput, error) {
4661	req, out := c.ModifyCacheSubnetGroupRequest(input)
4662	req.SetContext(ctx)
4663	req.ApplyOptions(opts...)
4664	return out, req.Send()
4665}
4666
4667const opModifyReplicationGroup = "ModifyReplicationGroup"
4668
4669// ModifyReplicationGroupRequest generates a "aws/request.Request" representing the
4670// client's request for the ModifyReplicationGroup operation. The "output" return
4671// value will be populated with the request's response once the request completes
4672// successfully.
4673//
4674// Use "Send" method on the returned Request to send the API call to the service.
4675// the "output" return value is not valid until after Send returns without error.
4676//
4677// See ModifyReplicationGroup for more information on using the ModifyReplicationGroup
4678// API call, and error handling.
4679//
4680// This method is useful when you want to inject custom logic or configuration
4681// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4682//
4683//
4684//    // Example sending a request using the ModifyReplicationGroupRequest method.
4685//    req, resp := client.ModifyReplicationGroupRequest(params)
4686//
4687//    err := req.Send()
4688//    if err == nil { // resp is now filled
4689//        fmt.Println(resp)
4690//    }
4691//
4692// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
4693func (c *ElastiCache) ModifyReplicationGroupRequest(input *ModifyReplicationGroupInput) (req *request.Request, output *ModifyReplicationGroupOutput) {
4694	op := &request.Operation{
4695		Name:       opModifyReplicationGroup,
4696		HTTPMethod: "POST",
4697		HTTPPath:   "/",
4698	}
4699
4700	if input == nil {
4701		input = &ModifyReplicationGroupInput{}
4702	}
4703
4704	output = &ModifyReplicationGroupOutput{}
4705	req = c.newRequest(op, input, output)
4706	return
4707}
4708
4709// ModifyReplicationGroup API operation for Amazon ElastiCache.
4710//
4711// Modifies the settings for a replication group.
4712//
4713// For Redis (cluster mode enabled) clusters, this operation cannot be used
4714// to change a cluster's node type or engine version. For more information,
4715// see:
4716//
4717//    * Scaling for Amazon ElastiCache for Redis (cluster mode enabled) (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/scaling-redis-cluster-mode-enabled.html)
4718//    in the ElastiCache User Guide
4719//
4720//    * ModifyReplicationGroupShardConfiguration (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)
4721//    in the ElastiCache API Reference
4722//
4723// This operation is valid for Redis only.
4724//
4725// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4726// with awserr.Error's Code and Message methods to get detailed information about
4727// the error.
4728//
4729// See the AWS API reference guide for Amazon ElastiCache's
4730// API operation ModifyReplicationGroup for usage and error information.
4731//
4732// Returned Error Codes:
4733//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4734//   The specified replication group does not exist.
4735//
4736//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4737//   The requested replication group is not in the available state.
4738//
4739//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4740//   The requested cluster is not in the available state.
4741//
4742//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
4743//   The current state of the cache security group does not allow deletion.
4744//
4745//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4746//   The requested cache node type is not available in the specified Availability
4747//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4748//   in the ElastiCache User Guide.
4749//
4750//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4751//   The requested cluster ID does not refer to an existing cluster.
4752//
4753//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
4754//   The request cannot be processed because it would exceed the allowed number
4755//   of cache nodes in a single cluster.
4756//
4757//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4758//   The request cannot be processed because it would exceed the allowed number
4759//   of cache nodes per customer.
4760//
4761//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
4762//   The requested cache security group name does not refer to an existing cache
4763//   security group.
4764//
4765//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
4766//   The requested cache parameter group name does not refer to an existing cache
4767//   parameter group.
4768//
4769//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4770//   The VPC network is in an invalid state.
4771//
4772//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
4773//   The KMS key supplied is not valid.
4774//
4775//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4776//   The value for a parameter is invalid.
4777//
4778//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4779//   Two or more incompatible parameters were specified.
4780//
4781// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
4782func (c *ElastiCache) ModifyReplicationGroup(input *ModifyReplicationGroupInput) (*ModifyReplicationGroupOutput, error) {
4783	req, out := c.ModifyReplicationGroupRequest(input)
4784	return out, req.Send()
4785}
4786
4787// ModifyReplicationGroupWithContext is the same as ModifyReplicationGroup with the addition of
4788// the ability to pass a context and additional request options.
4789//
4790// See ModifyReplicationGroup for details on how to use this API operation.
4791//
4792// The context must be non-nil and will be used for request cancellation. If
4793// the context is nil a panic will occur. In the future the SDK may create
4794// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4795// for more information on using Contexts.
4796func (c *ElastiCache) ModifyReplicationGroupWithContext(ctx aws.Context, input *ModifyReplicationGroupInput, opts ...request.Option) (*ModifyReplicationGroupOutput, error) {
4797	req, out := c.ModifyReplicationGroupRequest(input)
4798	req.SetContext(ctx)
4799	req.ApplyOptions(opts...)
4800	return out, req.Send()
4801}
4802
4803const opModifyReplicationGroupShardConfiguration = "ModifyReplicationGroupShardConfiguration"
4804
4805// ModifyReplicationGroupShardConfigurationRequest generates a "aws/request.Request" representing the
4806// client's request for the ModifyReplicationGroupShardConfiguration operation. The "output" return
4807// value will be populated with the request's response once the request completes
4808// successfully.
4809//
4810// Use "Send" method on the returned Request to send the API call to the service.
4811// the "output" return value is not valid until after Send returns without error.
4812//
4813// See ModifyReplicationGroupShardConfiguration for more information on using the ModifyReplicationGroupShardConfiguration
4814// API call, and error handling.
4815//
4816// This method is useful when you want to inject custom logic or configuration
4817// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4818//
4819//
4820//    // Example sending a request using the ModifyReplicationGroupShardConfigurationRequest method.
4821//    req, resp := client.ModifyReplicationGroupShardConfigurationRequest(params)
4822//
4823//    err := req.Send()
4824//    if err == nil { // resp is now filled
4825//        fmt.Println(resp)
4826//    }
4827//
4828// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
4829func (c *ElastiCache) ModifyReplicationGroupShardConfigurationRequest(input *ModifyReplicationGroupShardConfigurationInput) (req *request.Request, output *ModifyReplicationGroupShardConfigurationOutput) {
4830	op := &request.Operation{
4831		Name:       opModifyReplicationGroupShardConfiguration,
4832		HTTPMethod: "POST",
4833		HTTPPath:   "/",
4834	}
4835
4836	if input == nil {
4837		input = &ModifyReplicationGroupShardConfigurationInput{}
4838	}
4839
4840	output = &ModifyReplicationGroupShardConfigurationOutput{}
4841	req = c.newRequest(op, input, output)
4842	return
4843}
4844
4845// ModifyReplicationGroupShardConfiguration API operation for Amazon ElastiCache.
4846//
4847// Modifies a replication group's shards (node groups) by allowing you to add
4848// shards, remove shards, or rebalance the keyspaces among exisiting shards.
4849//
4850// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4851// with awserr.Error's Code and Message methods to get detailed information about
4852// the error.
4853//
4854// See the AWS API reference guide for Amazon ElastiCache's
4855// API operation ModifyReplicationGroupShardConfiguration for usage and error information.
4856//
4857// Returned Error Codes:
4858//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4859//   The specified replication group does not exist.
4860//
4861//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4862//   The requested replication group is not in the available state.
4863//
4864//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4865//   The requested cluster is not in the available state.
4866//
4867//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4868//   The VPC network is in an invalid state.
4869//
4870//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4871//   The requested cache node type is not available in the specified Availability
4872//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4873//   in the ElastiCache User Guide.
4874//
4875//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
4876//   The request cannot be processed because it would exceed the maximum allowed
4877//   number of node groups (shards) in a single replication group. The default
4878//   maximum is 90
4879//
4880//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4881//   The request cannot be processed because it would exceed the allowed number
4882//   of cache nodes per customer.
4883//
4884//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
4885//   The KMS key supplied is not valid.
4886//
4887//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4888//   The value for a parameter is invalid.
4889//
4890//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4891//   Two or more incompatible parameters were specified.
4892//
4893// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
4894func (c *ElastiCache) ModifyReplicationGroupShardConfiguration(input *ModifyReplicationGroupShardConfigurationInput) (*ModifyReplicationGroupShardConfigurationOutput, error) {
4895	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
4896	return out, req.Send()
4897}
4898
4899// ModifyReplicationGroupShardConfigurationWithContext is the same as ModifyReplicationGroupShardConfiguration with the addition of
4900// the ability to pass a context and additional request options.
4901//
4902// See ModifyReplicationGroupShardConfiguration for details on how to use this API operation.
4903//
4904// The context must be non-nil and will be used for request cancellation. If
4905// the context is nil a panic will occur. In the future the SDK may create
4906// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4907// for more information on using Contexts.
4908func (c *ElastiCache) ModifyReplicationGroupShardConfigurationWithContext(ctx aws.Context, input *ModifyReplicationGroupShardConfigurationInput, opts ...request.Option) (*ModifyReplicationGroupShardConfigurationOutput, error) {
4909	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
4910	req.SetContext(ctx)
4911	req.ApplyOptions(opts...)
4912	return out, req.Send()
4913}
4914
4915const opPurchaseReservedCacheNodesOffering = "PurchaseReservedCacheNodesOffering"
4916
4917// PurchaseReservedCacheNodesOfferingRequest generates a "aws/request.Request" representing the
4918// client's request for the PurchaseReservedCacheNodesOffering operation. The "output" return
4919// value will be populated with the request's response once the request completes
4920// successfully.
4921//
4922// Use "Send" method on the returned Request to send the API call to the service.
4923// the "output" return value is not valid until after Send returns without error.
4924//
4925// See PurchaseReservedCacheNodesOffering for more information on using the PurchaseReservedCacheNodesOffering
4926// API call, and error handling.
4927//
4928// This method is useful when you want to inject custom logic or configuration
4929// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4930//
4931//
4932//    // Example sending a request using the PurchaseReservedCacheNodesOfferingRequest method.
4933//    req, resp := client.PurchaseReservedCacheNodesOfferingRequest(params)
4934//
4935//    err := req.Send()
4936//    if err == nil { // resp is now filled
4937//        fmt.Println(resp)
4938//    }
4939//
4940// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
4941func (c *ElastiCache) PurchaseReservedCacheNodesOfferingRequest(input *PurchaseReservedCacheNodesOfferingInput) (req *request.Request, output *PurchaseReservedCacheNodesOfferingOutput) {
4942	op := &request.Operation{
4943		Name:       opPurchaseReservedCacheNodesOffering,
4944		HTTPMethod: "POST",
4945		HTTPPath:   "/",
4946	}
4947
4948	if input == nil {
4949		input = &PurchaseReservedCacheNodesOfferingInput{}
4950	}
4951
4952	output = &PurchaseReservedCacheNodesOfferingOutput{}
4953	req = c.newRequest(op, input, output)
4954	return
4955}
4956
4957// PurchaseReservedCacheNodesOffering API operation for Amazon ElastiCache.
4958//
4959// Allows you to purchase a reserved cache node offering.
4960//
4961// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4962// with awserr.Error's Code and Message methods to get detailed information about
4963// the error.
4964//
4965// See the AWS API reference guide for Amazon ElastiCache's
4966// API operation PurchaseReservedCacheNodesOffering for usage and error information.
4967//
4968// Returned Error Codes:
4969//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
4970//   The requested cache node offering does not exist.
4971//
4972//   * ErrCodeReservedCacheNodeAlreadyExistsFault "ReservedCacheNodeAlreadyExists"
4973//   You already have a reservation with the given identifier.
4974//
4975//   * ErrCodeReservedCacheNodeQuotaExceededFault "ReservedCacheNodeQuotaExceeded"
4976//   The request cannot be processed because it would exceed the user's cache
4977//   node quota.
4978//
4979//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4980//   The value for a parameter is invalid.
4981//
4982//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4983//   Two or more incompatible parameters were specified.
4984//
4985// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
4986func (c *ElastiCache) PurchaseReservedCacheNodesOffering(input *PurchaseReservedCacheNodesOfferingInput) (*PurchaseReservedCacheNodesOfferingOutput, error) {
4987	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
4988	return out, req.Send()
4989}
4990
4991// PurchaseReservedCacheNodesOfferingWithContext is the same as PurchaseReservedCacheNodesOffering with the addition of
4992// the ability to pass a context and additional request options.
4993//
4994// See PurchaseReservedCacheNodesOffering for details on how to use this API operation.
4995//
4996// The context must be non-nil and will be used for request cancellation. If
4997// the context is nil a panic will occur. In the future the SDK may create
4998// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4999// for more information on using Contexts.
5000func (c *ElastiCache) PurchaseReservedCacheNodesOfferingWithContext(ctx aws.Context, input *PurchaseReservedCacheNodesOfferingInput, opts ...request.Option) (*PurchaseReservedCacheNodesOfferingOutput, error) {
5001	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
5002	req.SetContext(ctx)
5003	req.ApplyOptions(opts...)
5004	return out, req.Send()
5005}
5006
5007const opRebootCacheCluster = "RebootCacheCluster"
5008
5009// RebootCacheClusterRequest generates a "aws/request.Request" representing the
5010// client's request for the RebootCacheCluster operation. The "output" return
5011// value will be populated with the request's response once the request completes
5012// successfully.
5013//
5014// Use "Send" method on the returned Request to send the API call to the service.
5015// the "output" return value is not valid until after Send returns without error.
5016//
5017// See RebootCacheCluster for more information on using the RebootCacheCluster
5018// API call, and error handling.
5019//
5020// This method is useful when you want to inject custom logic or configuration
5021// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5022//
5023//
5024//    // Example sending a request using the RebootCacheClusterRequest method.
5025//    req, resp := client.RebootCacheClusterRequest(params)
5026//
5027//    err := req.Send()
5028//    if err == nil { // resp is now filled
5029//        fmt.Println(resp)
5030//    }
5031//
5032// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
5033func (c *ElastiCache) RebootCacheClusterRequest(input *RebootCacheClusterInput) (req *request.Request, output *RebootCacheClusterOutput) {
5034	op := &request.Operation{
5035		Name:       opRebootCacheCluster,
5036		HTTPMethod: "POST",
5037		HTTPPath:   "/",
5038	}
5039
5040	if input == nil {
5041		input = &RebootCacheClusterInput{}
5042	}
5043
5044	output = &RebootCacheClusterOutput{}
5045	req = c.newRequest(op, input, output)
5046	return
5047}
5048
5049// RebootCacheCluster API operation for Amazon ElastiCache.
5050//
5051// Reboots some, or all, of the cache nodes within a provisioned cluster. This
5052// operation applies any modified cache parameter groups to the cluster. The
5053// reboot operation takes place as soon as possible, and results in a momentary
5054// outage to the cluster. During the reboot, the cluster status is set to REBOOTING.
5055//
5056// The reboot causes the contents of the cache (for each cache node being rebooted)
5057// to be lost.
5058//
5059// When the reboot is complete, a cluster event is created.
5060//
5061// Rebooting a cluster is currently supported on Memcached and Redis (cluster
5062// mode disabled) clusters. Rebooting is not supported on Redis (cluster mode
5063// enabled) clusters.
5064//
5065// If you make changes to parameters that require a Redis (cluster mode enabled)
5066// cluster reboot for the changes to be applied, see Rebooting a Cluster (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html)
5067// for an alternate process.
5068//
5069// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5070// with awserr.Error's Code and Message methods to get detailed information about
5071// the error.
5072//
5073// See the AWS API reference guide for Amazon ElastiCache's
5074// API operation RebootCacheCluster for usage and error information.
5075//
5076// Returned Error Codes:
5077//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5078//   The requested cluster is not in the available state.
5079//
5080//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5081//   The requested cluster ID does not refer to an existing cluster.
5082//
5083// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
5084func (c *ElastiCache) RebootCacheCluster(input *RebootCacheClusterInput) (*RebootCacheClusterOutput, error) {
5085	req, out := c.RebootCacheClusterRequest(input)
5086	return out, req.Send()
5087}
5088
5089// RebootCacheClusterWithContext is the same as RebootCacheCluster with the addition of
5090// the ability to pass a context and additional request options.
5091//
5092// See RebootCacheCluster for details on how to use this API operation.
5093//
5094// The context must be non-nil and will be used for request cancellation. If
5095// the context is nil a panic will occur. In the future the SDK may create
5096// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5097// for more information on using Contexts.
5098func (c *ElastiCache) RebootCacheClusterWithContext(ctx aws.Context, input *RebootCacheClusterInput, opts ...request.Option) (*RebootCacheClusterOutput, error) {
5099	req, out := c.RebootCacheClusterRequest(input)
5100	req.SetContext(ctx)
5101	req.ApplyOptions(opts...)
5102	return out, req.Send()
5103}
5104
5105const opRemoveTagsFromResource = "RemoveTagsFromResource"
5106
5107// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
5108// client's request for the RemoveTagsFromResource operation. The "output" return
5109// value will be populated with the request's response once the request completes
5110// successfully.
5111//
5112// Use "Send" method on the returned Request to send the API call to the service.
5113// the "output" return value is not valid until after Send returns without error.
5114//
5115// See RemoveTagsFromResource for more information on using the RemoveTagsFromResource
5116// API call, and error handling.
5117//
5118// This method is useful when you want to inject custom logic or configuration
5119// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5120//
5121//
5122//    // Example sending a request using the RemoveTagsFromResourceRequest method.
5123//    req, resp := client.RemoveTagsFromResourceRequest(params)
5124//
5125//    err := req.Send()
5126//    if err == nil { // resp is now filled
5127//        fmt.Println(resp)
5128//    }
5129//
5130// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
5131func (c *ElastiCache) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *TagListMessage) {
5132	op := &request.Operation{
5133		Name:       opRemoveTagsFromResource,
5134		HTTPMethod: "POST",
5135		HTTPPath:   "/",
5136	}
5137
5138	if input == nil {
5139		input = &RemoveTagsFromResourceInput{}
5140	}
5141
5142	output = &TagListMessage{}
5143	req = c.newRequest(op, input, output)
5144	return
5145}
5146
5147// RemoveTagsFromResource API operation for Amazon ElastiCache.
5148//
5149// Removes the tags identified by the TagKeys list from the named resource.
5150//
5151// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5152// with awserr.Error's Code and Message methods to get detailed information about
5153// the error.
5154//
5155// See the AWS API reference guide for Amazon ElastiCache's
5156// API operation RemoveTagsFromResource for usage and error information.
5157//
5158// Returned Error Codes:
5159//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5160//   The requested cluster ID does not refer to an existing cluster.
5161//
5162//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
5163//   The requested snapshot name does not refer to an existing snapshot.
5164//
5165//   * ErrCodeInvalidARNFault "InvalidARN"
5166//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
5167//
5168//   * ErrCodeTagNotFoundFault "TagNotFound"
5169//   The requested tag was not found on this resource.
5170//
5171// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
5172func (c *ElastiCache) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*TagListMessage, error) {
5173	req, out := c.RemoveTagsFromResourceRequest(input)
5174	return out, req.Send()
5175}
5176
5177// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
5178// the ability to pass a context and additional request options.
5179//
5180// See RemoveTagsFromResource for details on how to use this API operation.
5181//
5182// The context must be non-nil and will be used for request cancellation. If
5183// the context is nil a panic will occur. In the future the SDK may create
5184// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5185// for more information on using Contexts.
5186func (c *ElastiCache) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*TagListMessage, error) {
5187	req, out := c.RemoveTagsFromResourceRequest(input)
5188	req.SetContext(ctx)
5189	req.ApplyOptions(opts...)
5190	return out, req.Send()
5191}
5192
5193const opResetCacheParameterGroup = "ResetCacheParameterGroup"
5194
5195// ResetCacheParameterGroupRequest generates a "aws/request.Request" representing the
5196// client's request for the ResetCacheParameterGroup operation. The "output" return
5197// value will be populated with the request's response once the request completes
5198// successfully.
5199//
5200// Use "Send" method on the returned Request to send the API call to the service.
5201// the "output" return value is not valid until after Send returns without error.
5202//
5203// See ResetCacheParameterGroup for more information on using the ResetCacheParameterGroup
5204// API call, and error handling.
5205//
5206// This method is useful when you want to inject custom logic or configuration
5207// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5208//
5209//
5210//    // Example sending a request using the ResetCacheParameterGroupRequest method.
5211//    req, resp := client.ResetCacheParameterGroupRequest(params)
5212//
5213//    err := req.Send()
5214//    if err == nil { // resp is now filled
5215//        fmt.Println(resp)
5216//    }
5217//
5218// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
5219func (c *ElastiCache) ResetCacheParameterGroupRequest(input *ResetCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
5220	op := &request.Operation{
5221		Name:       opResetCacheParameterGroup,
5222		HTTPMethod: "POST",
5223		HTTPPath:   "/",
5224	}
5225
5226	if input == nil {
5227		input = &ResetCacheParameterGroupInput{}
5228	}
5229
5230	output = &CacheParameterGroupNameMessage{}
5231	req = c.newRequest(op, input, output)
5232	return
5233}
5234
5235// ResetCacheParameterGroup API operation for Amazon ElastiCache.
5236//
5237// Modifies the parameters of a cache parameter group to the engine or system
5238// default value. You can reset specific parameters by submitting a list of
5239// parameter names. To reset the entire cache parameter group, specify the ResetAllParameters
5240// and CacheParameterGroupName parameters.
5241//
5242// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5243// with awserr.Error's Code and Message methods to get detailed information about
5244// the error.
5245//
5246// See the AWS API reference guide for Amazon ElastiCache's
5247// API operation ResetCacheParameterGroup for usage and error information.
5248//
5249// Returned Error Codes:
5250//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
5251//   The current state of the cache parameter group does not allow the requested
5252//   operation to occur.
5253//
5254//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5255//   The requested cache parameter group name does not refer to an existing cache
5256//   parameter group.
5257//
5258//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5259//   The value for a parameter is invalid.
5260//
5261//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5262//   Two or more incompatible parameters were specified.
5263//
5264// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
5265func (c *ElastiCache) ResetCacheParameterGroup(input *ResetCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
5266	req, out := c.ResetCacheParameterGroupRequest(input)
5267	return out, req.Send()
5268}
5269
5270// ResetCacheParameterGroupWithContext is the same as ResetCacheParameterGroup with the addition of
5271// the ability to pass a context and additional request options.
5272//
5273// See ResetCacheParameterGroup for details on how to use this API operation.
5274//
5275// The context must be non-nil and will be used for request cancellation. If
5276// the context is nil a panic will occur. In the future the SDK may create
5277// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5278// for more information on using Contexts.
5279func (c *ElastiCache) ResetCacheParameterGroupWithContext(ctx aws.Context, input *ResetCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
5280	req, out := c.ResetCacheParameterGroupRequest(input)
5281	req.SetContext(ctx)
5282	req.ApplyOptions(opts...)
5283	return out, req.Send()
5284}
5285
5286const opRevokeCacheSecurityGroupIngress = "RevokeCacheSecurityGroupIngress"
5287
5288// RevokeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
5289// client's request for the RevokeCacheSecurityGroupIngress operation. The "output" return
5290// value will be populated with the request's response once the request completes
5291// successfully.
5292//
5293// Use "Send" method on the returned Request to send the API call to the service.
5294// the "output" return value is not valid until after Send returns without error.
5295//
5296// See RevokeCacheSecurityGroupIngress for more information on using the RevokeCacheSecurityGroupIngress
5297// API call, and error handling.
5298//
5299// This method is useful when you want to inject custom logic or configuration
5300// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5301//
5302//
5303//    // Example sending a request using the RevokeCacheSecurityGroupIngressRequest method.
5304//    req, resp := client.RevokeCacheSecurityGroupIngressRequest(params)
5305//
5306//    err := req.Send()
5307//    if err == nil { // resp is now filled
5308//        fmt.Println(resp)
5309//    }
5310//
5311// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
5312func (c *ElastiCache) RevokeCacheSecurityGroupIngressRequest(input *RevokeCacheSecurityGroupIngressInput) (req *request.Request, output *RevokeCacheSecurityGroupIngressOutput) {
5313	op := &request.Operation{
5314		Name:       opRevokeCacheSecurityGroupIngress,
5315		HTTPMethod: "POST",
5316		HTTPPath:   "/",
5317	}
5318
5319	if input == nil {
5320		input = &RevokeCacheSecurityGroupIngressInput{}
5321	}
5322
5323	output = &RevokeCacheSecurityGroupIngressOutput{}
5324	req = c.newRequest(op, input, output)
5325	return
5326}
5327
5328// RevokeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
5329//
5330// Revokes ingress from a cache security group. Use this operation to disallow
5331// access from an Amazon EC2 security group that had been previously authorized.
5332//
5333// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5334// with awserr.Error's Code and Message methods to get detailed information about
5335// the error.
5336//
5337// See the AWS API reference guide for Amazon ElastiCache's
5338// API operation RevokeCacheSecurityGroupIngress for usage and error information.
5339//
5340// Returned Error Codes:
5341//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5342//   The requested cache security group name does not refer to an existing cache
5343//   security group.
5344//
5345//   * ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
5346//   The specified Amazon EC2 security group is not authorized for the specified
5347//   cache security group.
5348//
5349//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5350//   The current state of the cache security group does not allow deletion.
5351//
5352//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5353//   The value for a parameter is invalid.
5354//
5355//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5356//   Two or more incompatible parameters were specified.
5357//
5358// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
5359func (c *ElastiCache) RevokeCacheSecurityGroupIngress(input *RevokeCacheSecurityGroupIngressInput) (*RevokeCacheSecurityGroupIngressOutput, error) {
5360	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
5361	return out, req.Send()
5362}
5363
5364// RevokeCacheSecurityGroupIngressWithContext is the same as RevokeCacheSecurityGroupIngress with the addition of
5365// the ability to pass a context and additional request options.
5366//
5367// See RevokeCacheSecurityGroupIngress for details on how to use this API operation.
5368//
5369// The context must be non-nil and will be used for request cancellation. If
5370// the context is nil a panic will occur. In the future the SDK may create
5371// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5372// for more information on using Contexts.
5373func (c *ElastiCache) RevokeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeCacheSecurityGroupIngressInput, opts ...request.Option) (*RevokeCacheSecurityGroupIngressOutput, error) {
5374	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
5375	req.SetContext(ctx)
5376	req.ApplyOptions(opts...)
5377	return out, req.Send()
5378}
5379
5380const opStartMigration = "StartMigration"
5381
5382// StartMigrationRequest generates a "aws/request.Request" representing the
5383// client's request for the StartMigration operation. The "output" return
5384// value will be populated with the request's response once the request completes
5385// successfully.
5386//
5387// Use "Send" method on the returned Request to send the API call to the service.
5388// the "output" return value is not valid until after Send returns without error.
5389//
5390// See StartMigration for more information on using the StartMigration
5391// API call, and error handling.
5392//
5393// This method is useful when you want to inject custom logic or configuration
5394// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5395//
5396//
5397//    // Example sending a request using the StartMigrationRequest method.
5398//    req, resp := client.StartMigrationRequest(params)
5399//
5400//    err := req.Send()
5401//    if err == nil { // resp is now filled
5402//        fmt.Println(resp)
5403//    }
5404//
5405// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
5406func (c *ElastiCache) StartMigrationRequest(input *StartMigrationInput) (req *request.Request, output *StartMigrationOutput) {
5407	op := &request.Operation{
5408		Name:       opStartMigration,
5409		HTTPMethod: "POST",
5410		HTTPPath:   "/",
5411	}
5412
5413	if input == nil {
5414		input = &StartMigrationInput{}
5415	}
5416
5417	output = &StartMigrationOutput{}
5418	req = c.newRequest(op, input, output)
5419	return
5420}
5421
5422// StartMigration API operation for Amazon ElastiCache.
5423//
5424// Start the migration of data.
5425//
5426// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5427// with awserr.Error's Code and Message methods to get detailed information about
5428// the error.
5429//
5430// See the AWS API reference guide for Amazon ElastiCache's
5431// API operation StartMigration for usage and error information.
5432//
5433// Returned Error Codes:
5434//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5435//   The specified replication group does not exist.
5436//
5437//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5438//   The requested replication group is not in the available state.
5439//
5440//   * ErrCodeReplicationGroupAlreadyUnderMigrationFault "ReplicationGroupAlreadyUnderMigrationFault"
5441//   The targeted replication group is not available.
5442//
5443//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5444//   The value for a parameter is invalid.
5445//
5446// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
5447func (c *ElastiCache) StartMigration(input *StartMigrationInput) (*StartMigrationOutput, error) {
5448	req, out := c.StartMigrationRequest(input)
5449	return out, req.Send()
5450}
5451
5452// StartMigrationWithContext is the same as StartMigration with the addition of
5453// the ability to pass a context and additional request options.
5454//
5455// See StartMigration for details on how to use this API operation.
5456//
5457// The context must be non-nil and will be used for request cancellation. If
5458// the context is nil a panic will occur. In the future the SDK may create
5459// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5460// for more information on using Contexts.
5461func (c *ElastiCache) StartMigrationWithContext(ctx aws.Context, input *StartMigrationInput, opts ...request.Option) (*StartMigrationOutput, error) {
5462	req, out := c.StartMigrationRequest(input)
5463	req.SetContext(ctx)
5464	req.ApplyOptions(opts...)
5465	return out, req.Send()
5466}
5467
5468const opTestFailover = "TestFailover"
5469
5470// TestFailoverRequest generates a "aws/request.Request" representing the
5471// client's request for the TestFailover operation. The "output" return
5472// value will be populated with the request's response once the request completes
5473// successfully.
5474//
5475// Use "Send" method on the returned Request to send the API call to the service.
5476// the "output" return value is not valid until after Send returns without error.
5477//
5478// See TestFailover for more information on using the TestFailover
5479// API call, and error handling.
5480//
5481// This method is useful when you want to inject custom logic or configuration
5482// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5483//
5484//
5485//    // Example sending a request using the TestFailoverRequest method.
5486//    req, resp := client.TestFailoverRequest(params)
5487//
5488//    err := req.Send()
5489//    if err == nil { // resp is now filled
5490//        fmt.Println(resp)
5491//    }
5492//
5493// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
5494func (c *ElastiCache) TestFailoverRequest(input *TestFailoverInput) (req *request.Request, output *TestFailoverOutput) {
5495	op := &request.Operation{
5496		Name:       opTestFailover,
5497		HTTPMethod: "POST",
5498		HTTPPath:   "/",
5499	}
5500
5501	if input == nil {
5502		input = &TestFailoverInput{}
5503	}
5504
5505	output = &TestFailoverOutput{}
5506	req = c.newRequest(op, input, output)
5507	return
5508}
5509
5510// TestFailover API operation for Amazon ElastiCache.
5511//
5512// Represents the input of a TestFailover operation which test automatic failover
5513// on a specified node group (called shard in the console) in a replication
5514// group (called cluster in the console).
5515//
5516// Note the following
5517//
5518//    * A customer can use this operation to test automatic failover on up to
5519//    5 shards (called node groups in the ElastiCache API and AWS CLI) in any
5520//    rolling 24-hour period.
5521//
5522//    * If calling this operation on shards in different clusters (called replication
5523//    groups in the API and CLI), the calls can be made concurrently.
5524//
5525//    * If calling this operation multiple times on different shards in the
5526//    same Redis (cluster mode enabled) replication group, the first node replacement
5527//    must complete before a subsequent call can be made.
5528//
5529//    * To determine whether the node replacement is complete you can check
5530//    Events using the Amazon ElastiCache console, the AWS CLI, or the ElastiCache
5531//    API. Look for the following automatic failover related events, listed
5532//    here in order of occurrance: Replication group message: Test Failover
5533//    API called for node group <node-group-id> Cache cluster message: Failover
5534//    from master node <primary-node-id> to replica node <node-id> completed
5535//    Replication group message: Failover from master node <primary-node-id>
5536//    to replica node <node-id> completed Cache cluster message: Recovering
5537//    cache nodes <node-id> Cache cluster message: Finished recovery for cache
5538//    nodes <node-id> For more information see: Viewing ElastiCache Events (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ECEvents.Viewing.html)
5539//    in the ElastiCache User Guide DescribeEvents (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html)
5540//    in the ElastiCache API Reference
5541//
5542// Also see, Testing Multi-AZ with Automatic Failover (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html#auto-failover-test)
5543// in the ElastiCache User Guide.
5544//
5545// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5546// with awserr.Error's Code and Message methods to get detailed information about
5547// the error.
5548//
5549// See the AWS API reference guide for Amazon ElastiCache's
5550// API operation TestFailover for usage and error information.
5551//
5552// Returned Error Codes:
5553//   * ErrCodeAPICallRateForCustomerExceededFault "APICallRateForCustomerExceeded"
5554//   The customer has exceeded the allowed rate of API calls.
5555//
5556//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5557//   The requested cluster is not in the available state.
5558//
5559//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5560//   The requested replication group is not in the available state.
5561//
5562//   * ErrCodeNodeGroupNotFoundFault "NodeGroupNotFoundFault"
5563//   The node group specified by the NodeGroupId parameter could not be found.
5564//   Please verify that the node group exists and that you spelled the NodeGroupId
5565//   value correctly.
5566//
5567//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5568//   The specified replication group does not exist.
5569//
5570//   * ErrCodeTestFailoverNotAvailableFault "TestFailoverNotAvailableFault"
5571//   The TestFailover action is not available.
5572//
5573//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
5574//   The KMS key supplied is not valid.
5575//
5576//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5577//   The value for a parameter is invalid.
5578//
5579//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5580//   Two or more incompatible parameters were specified.
5581//
5582// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
5583func (c *ElastiCache) TestFailover(input *TestFailoverInput) (*TestFailoverOutput, error) {
5584	req, out := c.TestFailoverRequest(input)
5585	return out, req.Send()
5586}
5587
5588// TestFailoverWithContext is the same as TestFailover with the addition of
5589// the ability to pass a context and additional request options.
5590//
5591// See TestFailover for details on how to use this API operation.
5592//
5593// The context must be non-nil and will be used for request cancellation. If
5594// the context is nil a panic will occur. In the future the SDK may create
5595// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5596// for more information on using Contexts.
5597func (c *ElastiCache) TestFailoverWithContext(ctx aws.Context, input *TestFailoverInput, opts ...request.Option) (*TestFailoverOutput, error) {
5598	req, out := c.TestFailoverRequest(input)
5599	req.SetContext(ctx)
5600	req.ApplyOptions(opts...)
5601	return out, req.Send()
5602}
5603
5604// Represents the input of an AddTagsToResource operation.
5605type AddTagsToResourceInput struct {
5606	_ struct{} `type:"structure"`
5607
5608	// The Amazon Resource Name (ARN) of the resource to which the tags are to be
5609	// added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
5610	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. ElastiCache
5611	// resources are cluster and snapshot.
5612	//
5613	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
5614	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
5615	//
5616	// ResourceName is a required field
5617	ResourceName *string `type:"string" required:"true"`
5618
5619	// A list of cost allocation tags to be added to this resource. A tag is a key-value
5620	// pair. A tag key must be accompanied by a tag value.
5621	//
5622	// Tags is a required field
5623	Tags []*Tag `locationNameList:"Tag" type:"list" required:"true"`
5624}
5625
5626// String returns the string representation
5627func (s AddTagsToResourceInput) String() string {
5628	return awsutil.Prettify(s)
5629}
5630
5631// GoString returns the string representation
5632func (s AddTagsToResourceInput) GoString() string {
5633	return s.String()
5634}
5635
5636// Validate inspects the fields of the type to determine if they are valid.
5637func (s *AddTagsToResourceInput) Validate() error {
5638	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
5639	if s.ResourceName == nil {
5640		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
5641	}
5642	if s.Tags == nil {
5643		invalidParams.Add(request.NewErrParamRequired("Tags"))
5644	}
5645
5646	if invalidParams.Len() > 0 {
5647		return invalidParams
5648	}
5649	return nil
5650}
5651
5652// SetResourceName sets the ResourceName field's value.
5653func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
5654	s.ResourceName = &v
5655	return s
5656}
5657
5658// SetTags sets the Tags field's value.
5659func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
5660	s.Tags = v
5661	return s
5662}
5663
5664// Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
5665type AuthorizeCacheSecurityGroupIngressInput struct {
5666	_ struct{} `type:"structure"`
5667
5668	// The cache security group that allows network ingress.
5669	//
5670	// CacheSecurityGroupName is a required field
5671	CacheSecurityGroupName *string `type:"string" required:"true"`
5672
5673	// The Amazon EC2 security group to be authorized for ingress to the cache security
5674	// group.
5675	//
5676	// EC2SecurityGroupName is a required field
5677	EC2SecurityGroupName *string `type:"string" required:"true"`
5678
5679	// The AWS account number of the Amazon EC2 security group owner. Note that
5680	// this is not the same thing as an AWS access key ID - you must provide a valid
5681	// AWS account number for this parameter.
5682	//
5683	// EC2SecurityGroupOwnerId is a required field
5684	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
5685}
5686
5687// String returns the string representation
5688func (s AuthorizeCacheSecurityGroupIngressInput) String() string {
5689	return awsutil.Prettify(s)
5690}
5691
5692// GoString returns the string representation
5693func (s AuthorizeCacheSecurityGroupIngressInput) GoString() string {
5694	return s.String()
5695}
5696
5697// Validate inspects the fields of the type to determine if they are valid.
5698func (s *AuthorizeCacheSecurityGroupIngressInput) Validate() error {
5699	invalidParams := request.ErrInvalidParams{Context: "AuthorizeCacheSecurityGroupIngressInput"}
5700	if s.CacheSecurityGroupName == nil {
5701		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
5702	}
5703	if s.EC2SecurityGroupName == nil {
5704		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
5705	}
5706	if s.EC2SecurityGroupOwnerId == nil {
5707		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
5708	}
5709
5710	if invalidParams.Len() > 0 {
5711		return invalidParams
5712	}
5713	return nil
5714}
5715
5716// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
5717func (s *AuthorizeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
5718	s.CacheSecurityGroupName = &v
5719	return s
5720}
5721
5722// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
5723func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
5724	s.EC2SecurityGroupName = &v
5725	return s
5726}
5727
5728// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
5729func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeCacheSecurityGroupIngressInput {
5730	s.EC2SecurityGroupOwnerId = &v
5731	return s
5732}
5733
5734type AuthorizeCacheSecurityGroupIngressOutput struct {
5735	_ struct{} `type:"structure"`
5736
5737	// Represents the output of one of the following operations:
5738	//
5739	//    * AuthorizeCacheSecurityGroupIngress
5740	//
5741	//    * CreateCacheSecurityGroup
5742	//
5743	//    * RevokeCacheSecurityGroupIngress
5744	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
5745}
5746
5747// String returns the string representation
5748func (s AuthorizeCacheSecurityGroupIngressOutput) String() string {
5749	return awsutil.Prettify(s)
5750}
5751
5752// GoString returns the string representation
5753func (s AuthorizeCacheSecurityGroupIngressOutput) GoString() string {
5754	return s.String()
5755}
5756
5757// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
5758func (s *AuthorizeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *AuthorizeCacheSecurityGroupIngressOutput {
5759	s.CacheSecurityGroup = v
5760	return s
5761}
5762
5763// Describes an Availability Zone in which the cluster is launched.
5764type AvailabilityZone struct {
5765	_ struct{} `type:"structure"`
5766
5767	// The name of the Availability Zone.
5768	Name *string `type:"string"`
5769}
5770
5771// String returns the string representation
5772func (s AvailabilityZone) String() string {
5773	return awsutil.Prettify(s)
5774}
5775
5776// GoString returns the string representation
5777func (s AvailabilityZone) GoString() string {
5778	return s.String()
5779}
5780
5781// SetName sets the Name field's value.
5782func (s *AvailabilityZone) SetName(v string) *AvailabilityZone {
5783	s.Name = &v
5784	return s
5785}
5786
5787type BatchApplyUpdateActionInput struct {
5788	_ struct{} `type:"structure"`
5789
5790	// The cache cluster IDs
5791	CacheClusterIds []*string `type:"list"`
5792
5793	// The replication group IDs
5794	ReplicationGroupIds []*string `type:"list"`
5795
5796	// The unique ID of the service update
5797	//
5798	// ServiceUpdateName is a required field
5799	ServiceUpdateName *string `type:"string" required:"true"`
5800}
5801
5802// String returns the string representation
5803func (s BatchApplyUpdateActionInput) String() string {
5804	return awsutil.Prettify(s)
5805}
5806
5807// GoString returns the string representation
5808func (s BatchApplyUpdateActionInput) GoString() string {
5809	return s.String()
5810}
5811
5812// Validate inspects the fields of the type to determine if they are valid.
5813func (s *BatchApplyUpdateActionInput) Validate() error {
5814	invalidParams := request.ErrInvalidParams{Context: "BatchApplyUpdateActionInput"}
5815	if s.ServiceUpdateName == nil {
5816		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
5817	}
5818
5819	if invalidParams.Len() > 0 {
5820		return invalidParams
5821	}
5822	return nil
5823}
5824
5825// SetCacheClusterIds sets the CacheClusterIds field's value.
5826func (s *BatchApplyUpdateActionInput) SetCacheClusterIds(v []*string) *BatchApplyUpdateActionInput {
5827	s.CacheClusterIds = v
5828	return s
5829}
5830
5831// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
5832func (s *BatchApplyUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchApplyUpdateActionInput {
5833	s.ReplicationGroupIds = v
5834	return s
5835}
5836
5837// SetServiceUpdateName sets the ServiceUpdateName field's value.
5838func (s *BatchApplyUpdateActionInput) SetServiceUpdateName(v string) *BatchApplyUpdateActionInput {
5839	s.ServiceUpdateName = &v
5840	return s
5841}
5842
5843type BatchApplyUpdateActionOutput struct {
5844	_ struct{} `type:"structure"`
5845
5846	// Update actions that have been processed successfully
5847	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
5848
5849	// Update actions that haven't been processed successfully
5850	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
5851}
5852
5853// String returns the string representation
5854func (s BatchApplyUpdateActionOutput) String() string {
5855	return awsutil.Prettify(s)
5856}
5857
5858// GoString returns the string representation
5859func (s BatchApplyUpdateActionOutput) GoString() string {
5860	return s.String()
5861}
5862
5863// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
5864func (s *BatchApplyUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchApplyUpdateActionOutput {
5865	s.ProcessedUpdateActions = v
5866	return s
5867}
5868
5869// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
5870func (s *BatchApplyUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchApplyUpdateActionOutput {
5871	s.UnprocessedUpdateActions = v
5872	return s
5873}
5874
5875type BatchStopUpdateActionInput struct {
5876	_ struct{} `type:"structure"`
5877
5878	// The cache cluster IDs
5879	CacheClusterIds []*string `type:"list"`
5880
5881	// The replication group IDs
5882	ReplicationGroupIds []*string `type:"list"`
5883
5884	// The unique ID of the service update
5885	//
5886	// ServiceUpdateName is a required field
5887	ServiceUpdateName *string `type:"string" required:"true"`
5888}
5889
5890// String returns the string representation
5891func (s BatchStopUpdateActionInput) String() string {
5892	return awsutil.Prettify(s)
5893}
5894
5895// GoString returns the string representation
5896func (s BatchStopUpdateActionInput) GoString() string {
5897	return s.String()
5898}
5899
5900// Validate inspects the fields of the type to determine if they are valid.
5901func (s *BatchStopUpdateActionInput) Validate() error {
5902	invalidParams := request.ErrInvalidParams{Context: "BatchStopUpdateActionInput"}
5903	if s.ServiceUpdateName == nil {
5904		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
5905	}
5906
5907	if invalidParams.Len() > 0 {
5908		return invalidParams
5909	}
5910	return nil
5911}
5912
5913// SetCacheClusterIds sets the CacheClusterIds field's value.
5914func (s *BatchStopUpdateActionInput) SetCacheClusterIds(v []*string) *BatchStopUpdateActionInput {
5915	s.CacheClusterIds = v
5916	return s
5917}
5918
5919// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
5920func (s *BatchStopUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchStopUpdateActionInput {
5921	s.ReplicationGroupIds = v
5922	return s
5923}
5924
5925// SetServiceUpdateName sets the ServiceUpdateName field's value.
5926func (s *BatchStopUpdateActionInput) SetServiceUpdateName(v string) *BatchStopUpdateActionInput {
5927	s.ServiceUpdateName = &v
5928	return s
5929}
5930
5931type BatchStopUpdateActionOutput struct {
5932	_ struct{} `type:"structure"`
5933
5934	// Update actions that have been processed successfully
5935	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
5936
5937	// Update actions that haven't been processed successfully
5938	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
5939}
5940
5941// String returns the string representation
5942func (s BatchStopUpdateActionOutput) String() string {
5943	return awsutil.Prettify(s)
5944}
5945
5946// GoString returns the string representation
5947func (s BatchStopUpdateActionOutput) GoString() string {
5948	return s.String()
5949}
5950
5951// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
5952func (s *BatchStopUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchStopUpdateActionOutput {
5953	s.ProcessedUpdateActions = v
5954	return s
5955}
5956
5957// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
5958func (s *BatchStopUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchStopUpdateActionOutput {
5959	s.UnprocessedUpdateActions = v
5960	return s
5961}
5962
5963// Contains all of the attributes of a specific cluster.
5964type CacheCluster struct {
5965	_ struct{} `type:"structure"`
5966
5967	// A flag that enables encryption at-rest when set to true.
5968	//
5969	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
5970	// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
5971	// to true when you create a cluster.
5972	//
5973	// Required: Only available when creating a replication group in an Amazon VPC
5974	// using redis version 3.2.6, 4.x or later.
5975	//
5976	// Default: false
5977	AtRestEncryptionEnabled *bool `type:"boolean"`
5978
5979	// A flag that enables using an AuthToken (password) when issuing Redis commands.
5980	//
5981	// Default: false
5982	AuthTokenEnabled *bool `type:"boolean"`
5983
5984	// The date the auth token was last modified
5985	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
5986
5987	// This parameter is currently disabled.
5988	AutoMinorVersionUpgrade *bool `type:"boolean"`
5989
5990	// The date and time when the cluster was created.
5991	CacheClusterCreateTime *time.Time `type:"timestamp"`
5992
5993	// The user-supplied identifier of the cluster. This identifier is a unique
5994	// key that identifies a cluster.
5995	CacheClusterId *string `type:"string"`
5996
5997	// The current state of this cluster, one of the following values: available,
5998	// creating, deleted, deleting, incompatible-network, modifying, rebooting cluster
5999	// nodes, restore-failed, or snapshotting.
6000	CacheClusterStatus *string `type:"string"`
6001
6002	// The name of the compute and memory capacity node type for the cluster.
6003	//
6004	// The following node types are supported by ElastiCache. Generally speaking,
6005	// the current generation types provide more memory and computational power
6006	// at lower cost when compared to their equivalent previous generation counterparts.
6007	//
6008	//    * General purpose: Current generation: M5 node types: cache.m5.large,
6009	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
6010	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
6011	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
6012	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
6013	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
6014	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
6015	//    cache.m3.2xlarge
6016	//
6017	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
6018	//    cache.c1.xlarge
6019	//
6020	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
6021	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
6022	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
6023	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
6024	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
6025	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
6026	//    cache.r3.8xlarge
6027	//
6028	// Additional node type info
6029	//
6030	//    * All current generation instance types are created in Amazon VPC by default.
6031	//
6032	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
6033	//
6034	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
6035	//
6036	//    * Redis configuration variables appendonly and appendfsync are not supported
6037	//    on Redis version 2.8.22 and later.
6038	CacheNodeType *string `type:"string"`
6039
6040	// A list of cache nodes that are members of the cluster.
6041	CacheNodes []*CacheNode `locationNameList:"CacheNode" type:"list"`
6042
6043	// Status of the cache parameter group.
6044	CacheParameterGroup *CacheParameterGroupStatus `type:"structure"`
6045
6046	// A list of cache security group elements, composed of name and status sub-elements.
6047	CacheSecurityGroups []*CacheSecurityGroupMembership `locationNameList:"CacheSecurityGroup" type:"list"`
6048
6049	// The name of the cache subnet group associated with the cluster.
6050	CacheSubnetGroupName *string `type:"string"`
6051
6052	// The URL of the web page where you can download the latest ElastiCache client
6053	// library.
6054	ClientDownloadLandingPage *string `type:"string"`
6055
6056	// Represents a Memcached cluster endpoint which, if Automatic Discovery is
6057	// enabled on the cluster, can be used by an application to connect to any node
6058	// in the cluster. The configuration endpoint will always have .cfg in it.
6059	//
6060	// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
6061	ConfigurationEndpoint *Endpoint `type:"structure"`
6062
6063	// The name of the cache engine (memcached or redis) to be used for this cluster.
6064	Engine *string `type:"string"`
6065
6066	// The version of the cache engine that is used in this cluster.
6067	EngineVersion *string `type:"string"`
6068
6069	// Describes a notification topic and its status. Notification topics are used
6070	// for publishing ElastiCache events to subscribers using Amazon Simple Notification
6071	// Service (SNS).
6072	NotificationConfiguration *NotificationConfiguration `type:"structure"`
6073
6074	// The number of cache nodes in the cluster.
6075	//
6076	// For clusters running Redis, this value must be 1. For clusters running Memcached,
6077	// this value must be between 1 and 20.
6078	NumCacheNodes *int64 `type:"integer"`
6079
6080	// A group of settings that are applied to the cluster in the future, or that
6081	// are currently being applied.
6082	PendingModifiedValues *PendingModifiedValues `type:"structure"`
6083
6084	// The name of the Availability Zone in which the cluster is located or "Multiple"
6085	// if the cache nodes are located in different Availability Zones.
6086	PreferredAvailabilityZone *string `type:"string"`
6087
6088	// Specifies the weekly time range during which maintenance on the cluster is
6089	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
6090	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
6091	//
6092	// Valid values for ddd are:
6093	//
6094	//    * sun
6095	//
6096	//    * mon
6097	//
6098	//    * tue
6099	//
6100	//    * wed
6101	//
6102	//    * thu
6103	//
6104	//    * fri
6105	//
6106	//    * sat
6107	//
6108	// Example: sun:23:00-mon:01:30
6109	PreferredMaintenanceWindow *string `type:"string"`
6110
6111	// The replication group to which this cluster belongs. If this field is empty,
6112	// the cluster is not associated with any replication group.
6113	ReplicationGroupId *string `type:"string"`
6114
6115	// A list of VPC Security Groups associated with the cluster.
6116	SecurityGroups []*SecurityGroupMembership `type:"list"`
6117
6118	// The number of days for which ElastiCache retains automatic cluster snapshots
6119	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
6120	// a snapshot that was taken today is retained for 5 days before being deleted.
6121	//
6122	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
6123	// off.
6124	SnapshotRetentionLimit *int64 `type:"integer"`
6125
6126	// The daily time range (in UTC) during which ElastiCache begins taking a daily
6127	// snapshot of your cluster.
6128	//
6129	// Example: 05:00-09:00
6130	SnapshotWindow *string `type:"string"`
6131
6132	// A flag that enables in-transit encryption when set to true.
6133	//
6134	// You cannot modify the value of TransitEncryptionEnabled after the cluster
6135	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
6136	// to true when you create a cluster.
6137	//
6138	// Required: Only available when creating a replication group in an Amazon VPC
6139	// using redis version 3.2.6, 4.x or later.
6140	//
6141	// Default: false
6142	TransitEncryptionEnabled *bool `type:"boolean"`
6143}
6144
6145// String returns the string representation
6146func (s CacheCluster) String() string {
6147	return awsutil.Prettify(s)
6148}
6149
6150// GoString returns the string representation
6151func (s CacheCluster) GoString() string {
6152	return s.String()
6153}
6154
6155// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
6156func (s *CacheCluster) SetAtRestEncryptionEnabled(v bool) *CacheCluster {
6157	s.AtRestEncryptionEnabled = &v
6158	return s
6159}
6160
6161// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
6162func (s *CacheCluster) SetAuthTokenEnabled(v bool) *CacheCluster {
6163	s.AuthTokenEnabled = &v
6164	return s
6165}
6166
6167// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
6168func (s *CacheCluster) SetAuthTokenLastModifiedDate(v time.Time) *CacheCluster {
6169	s.AuthTokenLastModifiedDate = &v
6170	return s
6171}
6172
6173// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
6174func (s *CacheCluster) SetAutoMinorVersionUpgrade(v bool) *CacheCluster {
6175	s.AutoMinorVersionUpgrade = &v
6176	return s
6177}
6178
6179// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
6180func (s *CacheCluster) SetCacheClusterCreateTime(v time.Time) *CacheCluster {
6181	s.CacheClusterCreateTime = &v
6182	return s
6183}
6184
6185// SetCacheClusterId sets the CacheClusterId field's value.
6186func (s *CacheCluster) SetCacheClusterId(v string) *CacheCluster {
6187	s.CacheClusterId = &v
6188	return s
6189}
6190
6191// SetCacheClusterStatus sets the CacheClusterStatus field's value.
6192func (s *CacheCluster) SetCacheClusterStatus(v string) *CacheCluster {
6193	s.CacheClusterStatus = &v
6194	return s
6195}
6196
6197// SetCacheNodeType sets the CacheNodeType field's value.
6198func (s *CacheCluster) SetCacheNodeType(v string) *CacheCluster {
6199	s.CacheNodeType = &v
6200	return s
6201}
6202
6203// SetCacheNodes sets the CacheNodes field's value.
6204func (s *CacheCluster) SetCacheNodes(v []*CacheNode) *CacheCluster {
6205	s.CacheNodes = v
6206	return s
6207}
6208
6209// SetCacheParameterGroup sets the CacheParameterGroup field's value.
6210func (s *CacheCluster) SetCacheParameterGroup(v *CacheParameterGroupStatus) *CacheCluster {
6211	s.CacheParameterGroup = v
6212	return s
6213}
6214
6215// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
6216func (s *CacheCluster) SetCacheSecurityGroups(v []*CacheSecurityGroupMembership) *CacheCluster {
6217	s.CacheSecurityGroups = v
6218	return s
6219}
6220
6221// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
6222func (s *CacheCluster) SetCacheSubnetGroupName(v string) *CacheCluster {
6223	s.CacheSubnetGroupName = &v
6224	return s
6225}
6226
6227// SetClientDownloadLandingPage sets the ClientDownloadLandingPage field's value.
6228func (s *CacheCluster) SetClientDownloadLandingPage(v string) *CacheCluster {
6229	s.ClientDownloadLandingPage = &v
6230	return s
6231}
6232
6233// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
6234func (s *CacheCluster) SetConfigurationEndpoint(v *Endpoint) *CacheCluster {
6235	s.ConfigurationEndpoint = v
6236	return s
6237}
6238
6239// SetEngine sets the Engine field's value.
6240func (s *CacheCluster) SetEngine(v string) *CacheCluster {
6241	s.Engine = &v
6242	return s
6243}
6244
6245// SetEngineVersion sets the EngineVersion field's value.
6246func (s *CacheCluster) SetEngineVersion(v string) *CacheCluster {
6247	s.EngineVersion = &v
6248	return s
6249}
6250
6251// SetNotificationConfiguration sets the NotificationConfiguration field's value.
6252func (s *CacheCluster) SetNotificationConfiguration(v *NotificationConfiguration) *CacheCluster {
6253	s.NotificationConfiguration = v
6254	return s
6255}
6256
6257// SetNumCacheNodes sets the NumCacheNodes field's value.
6258func (s *CacheCluster) SetNumCacheNodes(v int64) *CacheCluster {
6259	s.NumCacheNodes = &v
6260	return s
6261}
6262
6263// SetPendingModifiedValues sets the PendingModifiedValues field's value.
6264func (s *CacheCluster) SetPendingModifiedValues(v *PendingModifiedValues) *CacheCluster {
6265	s.PendingModifiedValues = v
6266	return s
6267}
6268
6269// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
6270func (s *CacheCluster) SetPreferredAvailabilityZone(v string) *CacheCluster {
6271	s.PreferredAvailabilityZone = &v
6272	return s
6273}
6274
6275// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
6276func (s *CacheCluster) SetPreferredMaintenanceWindow(v string) *CacheCluster {
6277	s.PreferredMaintenanceWindow = &v
6278	return s
6279}
6280
6281// SetReplicationGroupId sets the ReplicationGroupId field's value.
6282func (s *CacheCluster) SetReplicationGroupId(v string) *CacheCluster {
6283	s.ReplicationGroupId = &v
6284	return s
6285}
6286
6287// SetSecurityGroups sets the SecurityGroups field's value.
6288func (s *CacheCluster) SetSecurityGroups(v []*SecurityGroupMembership) *CacheCluster {
6289	s.SecurityGroups = v
6290	return s
6291}
6292
6293// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
6294func (s *CacheCluster) SetSnapshotRetentionLimit(v int64) *CacheCluster {
6295	s.SnapshotRetentionLimit = &v
6296	return s
6297}
6298
6299// SetSnapshotWindow sets the SnapshotWindow field's value.
6300func (s *CacheCluster) SetSnapshotWindow(v string) *CacheCluster {
6301	s.SnapshotWindow = &v
6302	return s
6303}
6304
6305// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
6306func (s *CacheCluster) SetTransitEncryptionEnabled(v bool) *CacheCluster {
6307	s.TransitEncryptionEnabled = &v
6308	return s
6309}
6310
6311// Provides all of the details about a particular cache engine version.
6312type CacheEngineVersion struct {
6313	_ struct{} `type:"structure"`
6314
6315	// The description of the cache engine.
6316	CacheEngineDescription *string `type:"string"`
6317
6318	// The description of the cache engine version.
6319	CacheEngineVersionDescription *string `type:"string"`
6320
6321	// The name of the cache parameter group family associated with this cache engine.
6322	//
6323	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
6324	// | redis4.0 | redis5.0 |
6325	CacheParameterGroupFamily *string `type:"string"`
6326
6327	// The name of the cache engine.
6328	Engine *string `type:"string"`
6329
6330	// The version number of the cache engine.
6331	EngineVersion *string `type:"string"`
6332}
6333
6334// String returns the string representation
6335func (s CacheEngineVersion) String() string {
6336	return awsutil.Prettify(s)
6337}
6338
6339// GoString returns the string representation
6340func (s CacheEngineVersion) GoString() string {
6341	return s.String()
6342}
6343
6344// SetCacheEngineDescription sets the CacheEngineDescription field's value.
6345func (s *CacheEngineVersion) SetCacheEngineDescription(v string) *CacheEngineVersion {
6346	s.CacheEngineDescription = &v
6347	return s
6348}
6349
6350// SetCacheEngineVersionDescription sets the CacheEngineVersionDescription field's value.
6351func (s *CacheEngineVersion) SetCacheEngineVersionDescription(v string) *CacheEngineVersion {
6352	s.CacheEngineVersionDescription = &v
6353	return s
6354}
6355
6356// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
6357func (s *CacheEngineVersion) SetCacheParameterGroupFamily(v string) *CacheEngineVersion {
6358	s.CacheParameterGroupFamily = &v
6359	return s
6360}
6361
6362// SetEngine sets the Engine field's value.
6363func (s *CacheEngineVersion) SetEngine(v string) *CacheEngineVersion {
6364	s.Engine = &v
6365	return s
6366}
6367
6368// SetEngineVersion sets the EngineVersion field's value.
6369func (s *CacheEngineVersion) SetEngineVersion(v string) *CacheEngineVersion {
6370	s.EngineVersion = &v
6371	return s
6372}
6373
6374// Represents an individual cache node within a cluster. Each cache node runs
6375// its own instance of the cluster's protocol-compliant caching software - either
6376// Memcached or Redis.
6377//
6378// The following node types are supported by ElastiCache. Generally speaking,
6379// the current generation types provide more memory and computational power
6380// at lower cost when compared to their equivalent previous generation counterparts.
6381//
6382//    * General purpose: Current generation: M5 node types: cache.m5.large,
6383//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
6384//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
6385//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
6386//    cache.t2.medium Previous generation: (not recommended) T1 node types:
6387//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
6388//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
6389//    cache.m3.2xlarge
6390//
6391//    * Compute optimized: Previous generation: (not recommended) C1 node types:
6392//    cache.c1.xlarge
6393//
6394//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
6395//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
6396//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
6397//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
6398//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
6399//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
6400//    cache.r3.8xlarge
6401//
6402// Additional node type info
6403//
6404//    * All current generation instance types are created in Amazon VPC by default.
6405//
6406//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
6407//
6408//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
6409//
6410//    * Redis configuration variables appendonly and appendfsync are not supported
6411//    on Redis version 2.8.22 and later.
6412type CacheNode struct {
6413	_ struct{} `type:"structure"`
6414
6415	// The date and time when the cache node was created.
6416	CacheNodeCreateTime *time.Time `type:"timestamp"`
6417
6418	// The cache node identifier. A node ID is a numeric identifier (0001, 0002,
6419	// etc.). The combination of cluster ID and node ID uniquely identifies every
6420	// cache node used in a customer's AWS account.
6421	CacheNodeId *string `type:"string"`
6422
6423	// The current state of this cache node.
6424	CacheNodeStatus *string `type:"string"`
6425
6426	// The Availability Zone where this node was created and now resides.
6427	CustomerAvailabilityZone *string `type:"string"`
6428
6429	// The hostname for connecting to this cache node.
6430	Endpoint *Endpoint `type:"structure"`
6431
6432	// The status of the parameter group applied to this cache node.
6433	ParameterGroupStatus *string `type:"string"`
6434
6435	// The ID of the primary node to which this read replica node is synchronized.
6436	// If this field is empty, this node is not associated with a primary cluster.
6437	SourceCacheNodeId *string `type:"string"`
6438}
6439
6440// String returns the string representation
6441func (s CacheNode) String() string {
6442	return awsutil.Prettify(s)
6443}
6444
6445// GoString returns the string representation
6446func (s CacheNode) GoString() string {
6447	return s.String()
6448}
6449
6450// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
6451func (s *CacheNode) SetCacheNodeCreateTime(v time.Time) *CacheNode {
6452	s.CacheNodeCreateTime = &v
6453	return s
6454}
6455
6456// SetCacheNodeId sets the CacheNodeId field's value.
6457func (s *CacheNode) SetCacheNodeId(v string) *CacheNode {
6458	s.CacheNodeId = &v
6459	return s
6460}
6461
6462// SetCacheNodeStatus sets the CacheNodeStatus field's value.
6463func (s *CacheNode) SetCacheNodeStatus(v string) *CacheNode {
6464	s.CacheNodeStatus = &v
6465	return s
6466}
6467
6468// SetCustomerAvailabilityZone sets the CustomerAvailabilityZone field's value.
6469func (s *CacheNode) SetCustomerAvailabilityZone(v string) *CacheNode {
6470	s.CustomerAvailabilityZone = &v
6471	return s
6472}
6473
6474// SetEndpoint sets the Endpoint field's value.
6475func (s *CacheNode) SetEndpoint(v *Endpoint) *CacheNode {
6476	s.Endpoint = v
6477	return s
6478}
6479
6480// SetParameterGroupStatus sets the ParameterGroupStatus field's value.
6481func (s *CacheNode) SetParameterGroupStatus(v string) *CacheNode {
6482	s.ParameterGroupStatus = &v
6483	return s
6484}
6485
6486// SetSourceCacheNodeId sets the SourceCacheNodeId field's value.
6487func (s *CacheNode) SetSourceCacheNodeId(v string) *CacheNode {
6488	s.SourceCacheNodeId = &v
6489	return s
6490}
6491
6492// A parameter that has a different value for each cache node type it is applied
6493// to. For example, in a Redis cluster, a cache.m1.large cache node type would
6494// have a larger maxmemory value than a cache.m1.small type.
6495type CacheNodeTypeSpecificParameter struct {
6496	_ struct{} `type:"structure"`
6497
6498	// The valid range of values for the parameter.
6499	AllowedValues *string `type:"string"`
6500
6501	// A list of cache node types and their corresponding values for this parameter.
6502	CacheNodeTypeSpecificValues []*CacheNodeTypeSpecificValue `locationNameList:"CacheNodeTypeSpecificValue" type:"list"`
6503
6504	// Indicates whether a change to the parameter is applied immediately or requires
6505	// a reboot for the change to be applied. You can force a reboot or wait until
6506	// the next maintenance window's reboot. For more information, see Rebooting
6507	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
6508	ChangeType *string `type:"string" enum:"ChangeType"`
6509
6510	// The valid data type for the parameter.
6511	DataType *string `type:"string"`
6512
6513	// A description of the parameter.
6514	Description *string `type:"string"`
6515
6516	// Indicates whether (true) or not (false) the parameter can be modified. Some
6517	// parameters have security or operational implications that prevent them from
6518	// being changed.
6519	IsModifiable *bool `type:"boolean"`
6520
6521	// The earliest cache engine version to which the parameter can apply.
6522	MinimumEngineVersion *string `type:"string"`
6523
6524	// The name of the parameter.
6525	ParameterName *string `type:"string"`
6526
6527	// The source of the parameter value.
6528	Source *string `type:"string"`
6529}
6530
6531// String returns the string representation
6532func (s CacheNodeTypeSpecificParameter) String() string {
6533	return awsutil.Prettify(s)
6534}
6535
6536// GoString returns the string representation
6537func (s CacheNodeTypeSpecificParameter) GoString() string {
6538	return s.String()
6539}
6540
6541// SetAllowedValues sets the AllowedValues field's value.
6542func (s *CacheNodeTypeSpecificParameter) SetAllowedValues(v string) *CacheNodeTypeSpecificParameter {
6543	s.AllowedValues = &v
6544	return s
6545}
6546
6547// SetCacheNodeTypeSpecificValues sets the CacheNodeTypeSpecificValues field's value.
6548func (s *CacheNodeTypeSpecificParameter) SetCacheNodeTypeSpecificValues(v []*CacheNodeTypeSpecificValue) *CacheNodeTypeSpecificParameter {
6549	s.CacheNodeTypeSpecificValues = v
6550	return s
6551}
6552
6553// SetChangeType sets the ChangeType field's value.
6554func (s *CacheNodeTypeSpecificParameter) SetChangeType(v string) *CacheNodeTypeSpecificParameter {
6555	s.ChangeType = &v
6556	return s
6557}
6558
6559// SetDataType sets the DataType field's value.
6560func (s *CacheNodeTypeSpecificParameter) SetDataType(v string) *CacheNodeTypeSpecificParameter {
6561	s.DataType = &v
6562	return s
6563}
6564
6565// SetDescription sets the Description field's value.
6566func (s *CacheNodeTypeSpecificParameter) SetDescription(v string) *CacheNodeTypeSpecificParameter {
6567	s.Description = &v
6568	return s
6569}
6570
6571// SetIsModifiable sets the IsModifiable field's value.
6572func (s *CacheNodeTypeSpecificParameter) SetIsModifiable(v bool) *CacheNodeTypeSpecificParameter {
6573	s.IsModifiable = &v
6574	return s
6575}
6576
6577// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
6578func (s *CacheNodeTypeSpecificParameter) SetMinimumEngineVersion(v string) *CacheNodeTypeSpecificParameter {
6579	s.MinimumEngineVersion = &v
6580	return s
6581}
6582
6583// SetParameterName sets the ParameterName field's value.
6584func (s *CacheNodeTypeSpecificParameter) SetParameterName(v string) *CacheNodeTypeSpecificParameter {
6585	s.ParameterName = &v
6586	return s
6587}
6588
6589// SetSource sets the Source field's value.
6590func (s *CacheNodeTypeSpecificParameter) SetSource(v string) *CacheNodeTypeSpecificParameter {
6591	s.Source = &v
6592	return s
6593}
6594
6595// A value that applies only to a certain cache node type.
6596type CacheNodeTypeSpecificValue struct {
6597	_ struct{} `type:"structure"`
6598
6599	// The cache node type for which this value applies.
6600	CacheNodeType *string `type:"string"`
6601
6602	// The value for the cache node type.
6603	Value *string `type:"string"`
6604}
6605
6606// String returns the string representation
6607func (s CacheNodeTypeSpecificValue) String() string {
6608	return awsutil.Prettify(s)
6609}
6610
6611// GoString returns the string representation
6612func (s CacheNodeTypeSpecificValue) GoString() string {
6613	return s.String()
6614}
6615
6616// SetCacheNodeType sets the CacheNodeType field's value.
6617func (s *CacheNodeTypeSpecificValue) SetCacheNodeType(v string) *CacheNodeTypeSpecificValue {
6618	s.CacheNodeType = &v
6619	return s
6620}
6621
6622// SetValue sets the Value field's value.
6623func (s *CacheNodeTypeSpecificValue) SetValue(v string) *CacheNodeTypeSpecificValue {
6624	s.Value = &v
6625	return s
6626}
6627
6628// The status of the service update on the cache node
6629type CacheNodeUpdateStatus struct {
6630	_ struct{} `type:"structure"`
6631
6632	// The node ID of the cache cluster
6633	CacheNodeId *string `type:"string"`
6634
6635	// The deletion date of the node
6636	NodeDeletionDate *time.Time `type:"timestamp"`
6637
6638	// The end date of the update for a node
6639	NodeUpdateEndDate *time.Time `type:"timestamp"`
6640
6641	// Reflects whether the update was initiated by the customer or automatically
6642	// applied
6643	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
6644
6645	// The date when the update is triggered
6646	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
6647
6648	// The start date of the update for a node
6649	NodeUpdateStartDate *time.Time `type:"timestamp"`
6650
6651	// The update status of the node
6652	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
6653
6654	// The date when the NodeUpdateStatus was last modified>
6655	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
6656}
6657
6658// String returns the string representation
6659func (s CacheNodeUpdateStatus) String() string {
6660	return awsutil.Prettify(s)
6661}
6662
6663// GoString returns the string representation
6664func (s CacheNodeUpdateStatus) GoString() string {
6665	return s.String()
6666}
6667
6668// SetCacheNodeId sets the CacheNodeId field's value.
6669func (s *CacheNodeUpdateStatus) SetCacheNodeId(v string) *CacheNodeUpdateStatus {
6670	s.CacheNodeId = &v
6671	return s
6672}
6673
6674// SetNodeDeletionDate sets the NodeDeletionDate field's value.
6675func (s *CacheNodeUpdateStatus) SetNodeDeletionDate(v time.Time) *CacheNodeUpdateStatus {
6676	s.NodeDeletionDate = &v
6677	return s
6678}
6679
6680// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
6681func (s *CacheNodeUpdateStatus) SetNodeUpdateEndDate(v time.Time) *CacheNodeUpdateStatus {
6682	s.NodeUpdateEndDate = &v
6683	return s
6684}
6685
6686// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
6687func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedBy(v string) *CacheNodeUpdateStatus {
6688	s.NodeUpdateInitiatedBy = &v
6689	return s
6690}
6691
6692// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
6693func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *CacheNodeUpdateStatus {
6694	s.NodeUpdateInitiatedDate = &v
6695	return s
6696}
6697
6698// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
6699func (s *CacheNodeUpdateStatus) SetNodeUpdateStartDate(v time.Time) *CacheNodeUpdateStatus {
6700	s.NodeUpdateStartDate = &v
6701	return s
6702}
6703
6704// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
6705func (s *CacheNodeUpdateStatus) SetNodeUpdateStatus(v string) *CacheNodeUpdateStatus {
6706	s.NodeUpdateStatus = &v
6707	return s
6708}
6709
6710// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
6711func (s *CacheNodeUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *CacheNodeUpdateStatus {
6712	s.NodeUpdateStatusModifiedDate = &v
6713	return s
6714}
6715
6716// Represents the output of a CreateCacheParameterGroup operation.
6717type CacheParameterGroup struct {
6718	_ struct{} `type:"structure"`
6719
6720	// The name of the cache parameter group family that this cache parameter group
6721	// is compatible with.
6722	//
6723	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
6724	// | redis4.0 | redis5.0 |
6725	CacheParameterGroupFamily *string `type:"string"`
6726
6727	// The name of the cache parameter group.
6728	CacheParameterGroupName *string `type:"string"`
6729
6730	// The description for this cache parameter group.
6731	Description *string `type:"string"`
6732}
6733
6734// String returns the string representation
6735func (s CacheParameterGroup) String() string {
6736	return awsutil.Prettify(s)
6737}
6738
6739// GoString returns the string representation
6740func (s CacheParameterGroup) GoString() string {
6741	return s.String()
6742}
6743
6744// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
6745func (s *CacheParameterGroup) SetCacheParameterGroupFamily(v string) *CacheParameterGroup {
6746	s.CacheParameterGroupFamily = &v
6747	return s
6748}
6749
6750// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
6751func (s *CacheParameterGroup) SetCacheParameterGroupName(v string) *CacheParameterGroup {
6752	s.CacheParameterGroupName = &v
6753	return s
6754}
6755
6756// SetDescription sets the Description field's value.
6757func (s *CacheParameterGroup) SetDescription(v string) *CacheParameterGroup {
6758	s.Description = &v
6759	return s
6760}
6761
6762// Represents the output of one of the following operations:
6763//
6764//    * ModifyCacheParameterGroup
6765//
6766//    * ResetCacheParameterGroup
6767type CacheParameterGroupNameMessage struct {
6768	_ struct{} `type:"structure"`
6769
6770	// The name of the cache parameter group.
6771	CacheParameterGroupName *string `type:"string"`
6772}
6773
6774// String returns the string representation
6775func (s CacheParameterGroupNameMessage) String() string {
6776	return awsutil.Prettify(s)
6777}
6778
6779// GoString returns the string representation
6780func (s CacheParameterGroupNameMessage) GoString() string {
6781	return s.String()
6782}
6783
6784// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
6785func (s *CacheParameterGroupNameMessage) SetCacheParameterGroupName(v string) *CacheParameterGroupNameMessage {
6786	s.CacheParameterGroupName = &v
6787	return s
6788}
6789
6790// Status of the cache parameter group.
6791type CacheParameterGroupStatus struct {
6792	_ struct{} `type:"structure"`
6793
6794	// A list of the cache node IDs which need to be rebooted for parameter changes
6795	// to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
6796	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list"`
6797
6798	// The name of the cache parameter group.
6799	CacheParameterGroupName *string `type:"string"`
6800
6801	// The status of parameter updates.
6802	ParameterApplyStatus *string `type:"string"`
6803}
6804
6805// String returns the string representation
6806func (s CacheParameterGroupStatus) String() string {
6807	return awsutil.Prettify(s)
6808}
6809
6810// GoString returns the string representation
6811func (s CacheParameterGroupStatus) GoString() string {
6812	return s.String()
6813}
6814
6815// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
6816func (s *CacheParameterGroupStatus) SetCacheNodeIdsToReboot(v []*string) *CacheParameterGroupStatus {
6817	s.CacheNodeIdsToReboot = v
6818	return s
6819}
6820
6821// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
6822func (s *CacheParameterGroupStatus) SetCacheParameterGroupName(v string) *CacheParameterGroupStatus {
6823	s.CacheParameterGroupName = &v
6824	return s
6825}
6826
6827// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
6828func (s *CacheParameterGroupStatus) SetParameterApplyStatus(v string) *CacheParameterGroupStatus {
6829	s.ParameterApplyStatus = &v
6830	return s
6831}
6832
6833// Represents the output of one of the following operations:
6834//
6835//    * AuthorizeCacheSecurityGroupIngress
6836//
6837//    * CreateCacheSecurityGroup
6838//
6839//    * RevokeCacheSecurityGroupIngress
6840type CacheSecurityGroup struct {
6841	_ struct{} `type:"structure"`
6842
6843	// The name of the cache security group.
6844	CacheSecurityGroupName *string `type:"string"`
6845
6846	// The description of the cache security group.
6847	Description *string `type:"string"`
6848
6849	// A list of Amazon EC2 security groups that are associated with this cache
6850	// security group.
6851	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`
6852
6853	// The AWS account ID of the cache security group owner.
6854	OwnerId *string `type:"string"`
6855}
6856
6857// String returns the string representation
6858func (s CacheSecurityGroup) String() string {
6859	return awsutil.Prettify(s)
6860}
6861
6862// GoString returns the string representation
6863func (s CacheSecurityGroup) GoString() string {
6864	return s.String()
6865}
6866
6867// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
6868func (s *CacheSecurityGroup) SetCacheSecurityGroupName(v string) *CacheSecurityGroup {
6869	s.CacheSecurityGroupName = &v
6870	return s
6871}
6872
6873// SetDescription sets the Description field's value.
6874func (s *CacheSecurityGroup) SetDescription(v string) *CacheSecurityGroup {
6875	s.Description = &v
6876	return s
6877}
6878
6879// SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
6880func (s *CacheSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *CacheSecurityGroup {
6881	s.EC2SecurityGroups = v
6882	return s
6883}
6884
6885// SetOwnerId sets the OwnerId field's value.
6886func (s *CacheSecurityGroup) SetOwnerId(v string) *CacheSecurityGroup {
6887	s.OwnerId = &v
6888	return s
6889}
6890
6891// Represents a cluster's status within a particular cache security group.
6892type CacheSecurityGroupMembership struct {
6893	_ struct{} `type:"structure"`
6894
6895	// The name of the cache security group.
6896	CacheSecurityGroupName *string `type:"string"`
6897
6898	// The membership status in the cache security group. The status changes when
6899	// a cache security group is modified, or when the cache security groups assigned
6900	// to a cluster are modified.
6901	Status *string `type:"string"`
6902}
6903
6904// String returns the string representation
6905func (s CacheSecurityGroupMembership) String() string {
6906	return awsutil.Prettify(s)
6907}
6908
6909// GoString returns the string representation
6910func (s CacheSecurityGroupMembership) GoString() string {
6911	return s.String()
6912}
6913
6914// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
6915func (s *CacheSecurityGroupMembership) SetCacheSecurityGroupName(v string) *CacheSecurityGroupMembership {
6916	s.CacheSecurityGroupName = &v
6917	return s
6918}
6919
6920// SetStatus sets the Status field's value.
6921func (s *CacheSecurityGroupMembership) SetStatus(v string) *CacheSecurityGroupMembership {
6922	s.Status = &v
6923	return s
6924}
6925
6926// Represents the output of one of the following operations:
6927//
6928//    * CreateCacheSubnetGroup
6929//
6930//    * ModifyCacheSubnetGroup
6931type CacheSubnetGroup struct {
6932	_ struct{} `type:"structure"`
6933
6934	// The description of the cache subnet group.
6935	CacheSubnetGroupDescription *string `type:"string"`
6936
6937	// The name of the cache subnet group.
6938	CacheSubnetGroupName *string `type:"string"`
6939
6940	// A list of subnets associated with the cache subnet group.
6941	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`
6942
6943	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
6944	// group.
6945	VpcId *string `type:"string"`
6946}
6947
6948// String returns the string representation
6949func (s CacheSubnetGroup) String() string {
6950	return awsutil.Prettify(s)
6951}
6952
6953// GoString returns the string representation
6954func (s CacheSubnetGroup) GoString() string {
6955	return s.String()
6956}
6957
6958// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
6959func (s *CacheSubnetGroup) SetCacheSubnetGroupDescription(v string) *CacheSubnetGroup {
6960	s.CacheSubnetGroupDescription = &v
6961	return s
6962}
6963
6964// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
6965func (s *CacheSubnetGroup) SetCacheSubnetGroupName(v string) *CacheSubnetGroup {
6966	s.CacheSubnetGroupName = &v
6967	return s
6968}
6969
6970// SetSubnets sets the Subnets field's value.
6971func (s *CacheSubnetGroup) SetSubnets(v []*Subnet) *CacheSubnetGroup {
6972	s.Subnets = v
6973	return s
6974}
6975
6976// SetVpcId sets the VpcId field's value.
6977func (s *CacheSubnetGroup) SetVpcId(v string) *CacheSubnetGroup {
6978	s.VpcId = &v
6979	return s
6980}
6981
6982type CompleteMigrationInput struct {
6983	_ struct{} `type:"structure"`
6984
6985	// Forces the migration to stop without ensuring that data is in sync. It is
6986	// recommended to use this option only to abort the migration and not recommended
6987	// when application wants to continue migration to ElastiCache.
6988	Force *bool `type:"boolean"`
6989
6990	// The ID of the replication group to which data is being migrated.
6991	//
6992	// ReplicationGroupId is a required field
6993	ReplicationGroupId *string `type:"string" required:"true"`
6994}
6995
6996// String returns the string representation
6997func (s CompleteMigrationInput) String() string {
6998	return awsutil.Prettify(s)
6999}
7000
7001// GoString returns the string representation
7002func (s CompleteMigrationInput) GoString() string {
7003	return s.String()
7004}
7005
7006// Validate inspects the fields of the type to determine if they are valid.
7007func (s *CompleteMigrationInput) Validate() error {
7008	invalidParams := request.ErrInvalidParams{Context: "CompleteMigrationInput"}
7009	if s.ReplicationGroupId == nil {
7010		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
7011	}
7012
7013	if invalidParams.Len() > 0 {
7014		return invalidParams
7015	}
7016	return nil
7017}
7018
7019// SetForce sets the Force field's value.
7020func (s *CompleteMigrationInput) SetForce(v bool) *CompleteMigrationInput {
7021	s.Force = &v
7022	return s
7023}
7024
7025// SetReplicationGroupId sets the ReplicationGroupId field's value.
7026func (s *CompleteMigrationInput) SetReplicationGroupId(v string) *CompleteMigrationInput {
7027	s.ReplicationGroupId = &v
7028	return s
7029}
7030
7031type CompleteMigrationOutput struct {
7032	_ struct{} `type:"structure"`
7033
7034	// Contains all of the attributes of a specific Redis replication group.
7035	ReplicationGroup *ReplicationGroup `type:"structure"`
7036}
7037
7038// String returns the string representation
7039func (s CompleteMigrationOutput) String() string {
7040	return awsutil.Prettify(s)
7041}
7042
7043// GoString returns the string representation
7044func (s CompleteMigrationOutput) GoString() string {
7045	return s.String()
7046}
7047
7048// SetReplicationGroup sets the ReplicationGroup field's value.
7049func (s *CompleteMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *CompleteMigrationOutput {
7050	s.ReplicationGroup = v
7051	return s
7052}
7053
7054// Node group (shard) configuration options when adding or removing replicas.
7055// Each node group (shard) configuration has the following members: NodeGroupId,
7056// NewReplicaCount, and PreferredAvailabilityZones.
7057type ConfigureShard struct {
7058	_ struct{} `type:"structure"`
7059
7060	// The number of replicas you want in this node group at the end of this operation.
7061	// The maximum value for NewReplicaCount is 5. The minimum value depends upon
7062	// the type of Redis replication group you are working with.
7063	//
7064	// The minimum number of replicas in a shard or replication group is:
7065	//
7066	//    * Redis (cluster mode disabled) If Multi-AZ with Automatic Failover is
7067	//    enabled: 1 If Multi-AZ with Automatic Failover is not enable: 0
7068	//
7069	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
7070	//    to a replica if your primary node fails)
7071	//
7072	// NewReplicaCount is a required field
7073	NewReplicaCount *int64 `type:"integer" required:"true"`
7074
7075	// The 4-digit id for the node group you are configuring. For Redis (cluster
7076	// mode disabled) replication groups, the node group id is always 0001. To find
7077	// a Redis (cluster mode enabled)'s node group's (shard's) id, see Finding a
7078	// Shard's Id (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/shard-find-id.html).
7079	//
7080	// NodeGroupId is a required field
7081	NodeGroupId *string `min:"1" type:"string" required:"true"`
7082
7083	// A list of PreferredAvailabilityZone strings that specify which availability
7084	// zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone
7085	// values must equal the value of NewReplicaCount plus 1 to account for the
7086	// primary node. If this member of ReplicaConfiguration is omitted, ElastiCache
7087	// for Redis selects the availability zone for each of the replicas.
7088	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
7089}
7090
7091// String returns the string representation
7092func (s ConfigureShard) String() string {
7093	return awsutil.Prettify(s)
7094}
7095
7096// GoString returns the string representation
7097func (s ConfigureShard) GoString() string {
7098	return s.String()
7099}
7100
7101// Validate inspects the fields of the type to determine if they are valid.
7102func (s *ConfigureShard) Validate() error {
7103	invalidParams := request.ErrInvalidParams{Context: "ConfigureShard"}
7104	if s.NewReplicaCount == nil {
7105		invalidParams.Add(request.NewErrParamRequired("NewReplicaCount"))
7106	}
7107	if s.NodeGroupId == nil {
7108		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
7109	}
7110	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
7111		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
7112	}
7113
7114	if invalidParams.Len() > 0 {
7115		return invalidParams
7116	}
7117	return nil
7118}
7119
7120// SetNewReplicaCount sets the NewReplicaCount field's value.
7121func (s *ConfigureShard) SetNewReplicaCount(v int64) *ConfigureShard {
7122	s.NewReplicaCount = &v
7123	return s
7124}
7125
7126// SetNodeGroupId sets the NodeGroupId field's value.
7127func (s *ConfigureShard) SetNodeGroupId(v string) *ConfigureShard {
7128	s.NodeGroupId = &v
7129	return s
7130}
7131
7132// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
7133func (s *ConfigureShard) SetPreferredAvailabilityZones(v []*string) *ConfigureShard {
7134	s.PreferredAvailabilityZones = v
7135	return s
7136}
7137
7138// Represents the input of a CopySnapshotMessage operation.
7139type CopySnapshotInput struct {
7140	_ struct{} `type:"structure"`
7141
7142	// The ID of the KMS key used to encrypt the target snapshot.
7143	KmsKeyId *string `type:"string"`
7144
7145	// The name of an existing snapshot from which to make a copy.
7146	//
7147	// SourceSnapshotName is a required field
7148	SourceSnapshotName *string `type:"string" required:"true"`
7149
7150	// The Amazon S3 bucket to which the snapshot is exported. This parameter is
7151	// used only when exporting a snapshot for external access.
7152	//
7153	// When using this parameter to export a snapshot, be sure Amazon ElastiCache
7154	// has the needed permissions to this S3 bucket. For more information, see Step
7155	// 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)
7156	// in the Amazon ElastiCache User Guide.
7157	//
7158	// For more information, see Exporting a Snapshot (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Snapshots.Exporting.html)
7159	// in the Amazon ElastiCache User Guide.
7160	TargetBucket *string `type:"string"`
7161
7162	// A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot,
7163	// therefore this name must be unique within its context - ElastiCache or an
7164	// Amazon S3 bucket if exporting.
7165	//
7166	// TargetSnapshotName is a required field
7167	TargetSnapshotName *string `type:"string" required:"true"`
7168}
7169
7170// String returns the string representation
7171func (s CopySnapshotInput) String() string {
7172	return awsutil.Prettify(s)
7173}
7174
7175// GoString returns the string representation
7176func (s CopySnapshotInput) GoString() string {
7177	return s.String()
7178}
7179
7180// Validate inspects the fields of the type to determine if they are valid.
7181func (s *CopySnapshotInput) Validate() error {
7182	invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"}
7183	if s.SourceSnapshotName == nil {
7184		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
7185	}
7186	if s.TargetSnapshotName == nil {
7187		invalidParams.Add(request.NewErrParamRequired("TargetSnapshotName"))
7188	}
7189
7190	if invalidParams.Len() > 0 {
7191		return invalidParams
7192	}
7193	return nil
7194}
7195
7196// SetKmsKeyId sets the KmsKeyId field's value.
7197func (s *CopySnapshotInput) SetKmsKeyId(v string) *CopySnapshotInput {
7198	s.KmsKeyId = &v
7199	return s
7200}
7201
7202// SetSourceSnapshotName sets the SourceSnapshotName field's value.
7203func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
7204	s.SourceSnapshotName = &v
7205	return s
7206}
7207
7208// SetTargetBucket sets the TargetBucket field's value.
7209func (s *CopySnapshotInput) SetTargetBucket(v string) *CopySnapshotInput {
7210	s.TargetBucket = &v
7211	return s
7212}
7213
7214// SetTargetSnapshotName sets the TargetSnapshotName field's value.
7215func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
7216	s.TargetSnapshotName = &v
7217	return s
7218}
7219
7220type CopySnapshotOutput struct {
7221	_ struct{} `type:"structure"`
7222
7223	// Represents a copy of an entire Redis cluster as of the time when the snapshot
7224	// was taken.
7225	Snapshot *Snapshot `type:"structure"`
7226}
7227
7228// String returns the string representation
7229func (s CopySnapshotOutput) String() string {
7230	return awsutil.Prettify(s)
7231}
7232
7233// GoString returns the string representation
7234func (s CopySnapshotOutput) GoString() string {
7235	return s.String()
7236}
7237
7238// SetSnapshot sets the Snapshot field's value.
7239func (s *CopySnapshotOutput) SetSnapshot(v *Snapshot) *CopySnapshotOutput {
7240	s.Snapshot = v
7241	return s
7242}
7243
7244// Represents the input of a CreateCacheCluster operation.
7245type CreateCacheClusterInput struct {
7246	_ struct{} `type:"structure"`
7247
7248	// Specifies whether the nodes in this Memcached cluster are created in a single
7249	// Availability Zone or created across multiple Availability Zones in the cluster's
7250	// region.
7251	//
7252	// This parameter is only supported for Memcached clusters.
7253	//
7254	// If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache
7255	// assumes single-az mode.
7256	AZMode *string `type:"string" enum:"AZMode"`
7257
7258	// Reserved parameter. The password used to access a password protected server.
7259	//
7260	// Password constraints:
7261	//
7262	//    * Must be only printable ASCII characters.
7263	//
7264	//    * Must be at least 16 characters and no more than 128 characters in length.
7265	//
7266	//    * The only permitted printable special characters are !, &, #, $, ^, <,
7267	//    >, and -. Other printable special characters cannot be used in the AUTH
7268	//    token.
7269	//
7270	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
7271	// http://redis.io/commands/AUTH.
7272	AuthToken *string `type:"string"`
7273
7274	// This parameter is currently disabled.
7275	AutoMinorVersionUpgrade *bool `type:"boolean"`
7276
7277	// The node group (shard) identifier. This parameter is stored as a lowercase
7278	// string.
7279	//
7280	// Constraints:
7281	//
7282	//    * A name must contain from 1 to 50 alphanumeric characters or hyphens.
7283	//
7284	//    * The first character must be a letter.
7285	//
7286	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
7287	//
7288	// CacheClusterId is a required field
7289	CacheClusterId *string `type:"string" required:"true"`
7290
7291	// The compute and memory capacity of the nodes in the node group (shard).
7292	//
7293	// The following node types are supported by ElastiCache. Generally speaking,
7294	// the current generation types provide more memory and computational power
7295	// at lower cost when compared to their equivalent previous generation counterparts.
7296	//
7297	//    * General purpose: Current generation: M5 node types: cache.m5.large,
7298	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
7299	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
7300	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
7301	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
7302	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
7303	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
7304	//    cache.m3.2xlarge
7305	//
7306	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
7307	//    cache.c1.xlarge
7308	//
7309	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
7310	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
7311	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
7312	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
7313	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
7314	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
7315	//    cache.r3.8xlarge
7316	//
7317	// Additional node type info
7318	//
7319	//    * All current generation instance types are created in Amazon VPC by default.
7320	//
7321	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
7322	//
7323	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
7324	//
7325	//    * Redis configuration variables appendonly and appendfsync are not supported
7326	//    on Redis version 2.8.22 and later.
7327	CacheNodeType *string `type:"string"`
7328
7329	// The name of the parameter group to associate with this cluster. If this argument
7330	// is omitted, the default parameter group for the specified engine is used.
7331	// You cannot use any parameter group which has cluster-enabled='yes' when creating
7332	// a cluster.
7333	CacheParameterGroupName *string `type:"string"`
7334
7335	// A list of security group names to associate with this cluster.
7336	//
7337	// Use this parameter only when you are creating a cluster outside of an Amazon
7338	// Virtual Private Cloud (Amazon VPC).
7339	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
7340
7341	// The name of the subnet group to be used for the cluster.
7342	//
7343	// Use this parameter only when you are creating a cluster in an Amazon Virtual
7344	// Private Cloud (Amazon VPC).
7345	//
7346	// If you're going to launch your cluster in an Amazon VPC, you need to create
7347	// a subnet group before you start creating a cluster. For more information,
7348	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
7349	CacheSubnetGroupName *string `type:"string"`
7350
7351	// The name of the cache engine to be used for this cluster.
7352	//
7353	// Valid values for this parameter are: memcached | redis
7354	Engine *string `type:"string"`
7355
7356	// The version number of the cache engine to be used for this cluster. To view
7357	// the supported cache engine versions, use the DescribeCacheEngineVersions
7358	// operation.
7359	//
7360	// Important: You can upgrade to a newer engine version (see Selecting a Cache
7361	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
7362	// but you cannot downgrade to an earlier engine version. If you want to use
7363	// an earlier engine version, you must delete the existing cluster or replication
7364	// group and create it anew with the earlier engine version.
7365	EngineVersion *string `type:"string"`
7366
7367	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
7368	// (SNS) topic to which notifications are sent.
7369	//
7370	// The Amazon SNS topic owner must be the same as the cluster owner.
7371	NotificationTopicArn *string `type:"string"`
7372
7373	// The initial number of cache nodes that the cluster has.
7374	//
7375	// For clusters running Redis, this value must be 1. For clusters running Memcached,
7376	// this value must be between 1 and 20.
7377	//
7378	// If you need more than 20 nodes for your Memcached cluster, please fill out
7379	// the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/
7380	// (http://aws.amazon.com/contact-us/elasticache-node-limit-request/).
7381	NumCacheNodes *int64 `type:"integer"`
7382
7383	// The port number on which each of the cache nodes accepts connections.
7384	Port *int64 `type:"integer"`
7385
7386	// The EC2 Availability Zone in which the cluster is created.
7387	//
7388	// All nodes belonging to this Memcached cluster are placed in the preferred
7389	// Availability Zone. If you want to create your nodes across multiple Availability
7390	// Zones, use PreferredAvailabilityZones.
7391	//
7392	// Default: System chosen Availability Zone.
7393	PreferredAvailabilityZone *string `type:"string"`
7394
7395	// A list of the Availability Zones in which cache nodes are created. The order
7396	// of the zones in the list is not important.
7397	//
7398	// This option is only supported on Memcached.
7399	//
7400	// If you are creating your cluster in an Amazon VPC (recommended) you can only
7401	// locate nodes in Availability Zones that are associated with the subnets in
7402	// the selected subnet group.
7403	//
7404	// The number of Availability Zones listed must equal the value of NumCacheNodes.
7405	//
7406	// If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone
7407	// instead, or repeat the Availability Zone multiple times in the list.
7408	//
7409	// Default: System chosen Availability Zones.
7410	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
7411
7412	// Specifies the weekly time range during which maintenance on the cluster is
7413	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
7414	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
7415	// values for ddd are:
7416	//
7417	// Specifies the weekly time range during which maintenance on the cluster is
7418	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
7419	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
7420	//
7421	// Valid values for ddd are:
7422	//
7423	//    * sun
7424	//
7425	//    * mon
7426	//
7427	//    * tue
7428	//
7429	//    * wed
7430	//
7431	//    * thu
7432	//
7433	//    * fri
7434	//
7435	//    * sat
7436	//
7437	// Example: sun:23:00-mon:01:30
7438	PreferredMaintenanceWindow *string `type:"string"`
7439
7440	// The ID of the replication group to which this cluster should belong. If this
7441	// parameter is specified, the cluster is added to the specified replication
7442	// group as a read replica; otherwise, the cluster is a standalone primary that
7443	// is not part of any replication group.
7444	//
7445	// If the specified replication group is Multi-AZ enabled and the Availability
7446	// Zone is not specified, the cluster is created in Availability Zones that
7447	// provide the best spread of read replicas across Availability Zones.
7448	//
7449	// This parameter is only valid if the Engine parameter is redis.
7450	ReplicationGroupId *string `type:"string"`
7451
7452	// One or more VPC security groups associated with the cluster.
7453	//
7454	// Use this parameter only when you are creating a cluster in an Amazon Virtual
7455	// Private Cloud (Amazon VPC).
7456	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
7457
7458	// A single-element string list containing an Amazon Resource Name (ARN) that
7459	// uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot
7460	// file is used to populate the node group (shard). The Amazon S3 object name
7461	// in the ARN cannot contain any commas.
7462	//
7463	// This parameter is only valid if the Engine parameter is redis.
7464	//
7465	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
7466	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
7467
7468	// The name of a Redis snapshot from which to restore data into the new node
7469	// group (shard). The snapshot status changes to restoring while the new node
7470	// group (shard) is being created.
7471	//
7472	// This parameter is only valid if the Engine parameter is redis.
7473	SnapshotName *string `type:"string"`
7474
7475	// The number of days for which ElastiCache retains automatic snapshots before
7476	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
7477	// taken today is retained for 5 days before being deleted.
7478	//
7479	// This parameter is only valid if the Engine parameter is redis.
7480	//
7481	// Default: 0 (i.e., automatic backups are disabled for this cache cluster).
7482	SnapshotRetentionLimit *int64 `type:"integer"`
7483
7484	// The daily time range (in UTC) during which ElastiCache begins taking a daily
7485	// snapshot of your node group (shard).
7486	//
7487	// Example: 05:00-09:00
7488	//
7489	// If you do not specify this parameter, ElastiCache automatically chooses an
7490	// appropriate time range.
7491	//
7492	// This parameter is only valid if the Engine parameter is redis.
7493	SnapshotWindow *string `type:"string"`
7494
7495	// A list of cost allocation tags to be added to this resource.
7496	Tags []*Tag `locationNameList:"Tag" type:"list"`
7497}
7498
7499// String returns the string representation
7500func (s CreateCacheClusterInput) String() string {
7501	return awsutil.Prettify(s)
7502}
7503
7504// GoString returns the string representation
7505func (s CreateCacheClusterInput) GoString() string {
7506	return s.String()
7507}
7508
7509// Validate inspects the fields of the type to determine if they are valid.
7510func (s *CreateCacheClusterInput) Validate() error {
7511	invalidParams := request.ErrInvalidParams{Context: "CreateCacheClusterInput"}
7512	if s.CacheClusterId == nil {
7513		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
7514	}
7515
7516	if invalidParams.Len() > 0 {
7517		return invalidParams
7518	}
7519	return nil
7520}
7521
7522// SetAZMode sets the AZMode field's value.
7523func (s *CreateCacheClusterInput) SetAZMode(v string) *CreateCacheClusterInput {
7524	s.AZMode = &v
7525	return s
7526}
7527
7528// SetAuthToken sets the AuthToken field's value.
7529func (s *CreateCacheClusterInput) SetAuthToken(v string) *CreateCacheClusterInput {
7530	s.AuthToken = &v
7531	return s
7532}
7533
7534// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
7535func (s *CreateCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateCacheClusterInput {
7536	s.AutoMinorVersionUpgrade = &v
7537	return s
7538}
7539
7540// SetCacheClusterId sets the CacheClusterId field's value.
7541func (s *CreateCacheClusterInput) SetCacheClusterId(v string) *CreateCacheClusterInput {
7542	s.CacheClusterId = &v
7543	return s
7544}
7545
7546// SetCacheNodeType sets the CacheNodeType field's value.
7547func (s *CreateCacheClusterInput) SetCacheNodeType(v string) *CreateCacheClusterInput {
7548	s.CacheNodeType = &v
7549	return s
7550}
7551
7552// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7553func (s *CreateCacheClusterInput) SetCacheParameterGroupName(v string) *CreateCacheClusterInput {
7554	s.CacheParameterGroupName = &v
7555	return s
7556}
7557
7558// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
7559func (s *CreateCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *CreateCacheClusterInput {
7560	s.CacheSecurityGroupNames = v
7561	return s
7562}
7563
7564// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7565func (s *CreateCacheClusterInput) SetCacheSubnetGroupName(v string) *CreateCacheClusterInput {
7566	s.CacheSubnetGroupName = &v
7567	return s
7568}
7569
7570// SetEngine sets the Engine field's value.
7571func (s *CreateCacheClusterInput) SetEngine(v string) *CreateCacheClusterInput {
7572	s.Engine = &v
7573	return s
7574}
7575
7576// SetEngineVersion sets the EngineVersion field's value.
7577func (s *CreateCacheClusterInput) SetEngineVersion(v string) *CreateCacheClusterInput {
7578	s.EngineVersion = &v
7579	return s
7580}
7581
7582// SetNotificationTopicArn sets the NotificationTopicArn field's value.
7583func (s *CreateCacheClusterInput) SetNotificationTopicArn(v string) *CreateCacheClusterInput {
7584	s.NotificationTopicArn = &v
7585	return s
7586}
7587
7588// SetNumCacheNodes sets the NumCacheNodes field's value.
7589func (s *CreateCacheClusterInput) SetNumCacheNodes(v int64) *CreateCacheClusterInput {
7590	s.NumCacheNodes = &v
7591	return s
7592}
7593
7594// SetPort sets the Port field's value.
7595func (s *CreateCacheClusterInput) SetPort(v int64) *CreateCacheClusterInput {
7596	s.Port = &v
7597	return s
7598}
7599
7600// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
7601func (s *CreateCacheClusterInput) SetPreferredAvailabilityZone(v string) *CreateCacheClusterInput {
7602	s.PreferredAvailabilityZone = &v
7603	return s
7604}
7605
7606// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
7607func (s *CreateCacheClusterInput) SetPreferredAvailabilityZones(v []*string) *CreateCacheClusterInput {
7608	s.PreferredAvailabilityZones = v
7609	return s
7610}
7611
7612// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
7613func (s *CreateCacheClusterInput) SetPreferredMaintenanceWindow(v string) *CreateCacheClusterInput {
7614	s.PreferredMaintenanceWindow = &v
7615	return s
7616}
7617
7618// SetReplicationGroupId sets the ReplicationGroupId field's value.
7619func (s *CreateCacheClusterInput) SetReplicationGroupId(v string) *CreateCacheClusterInput {
7620	s.ReplicationGroupId = &v
7621	return s
7622}
7623
7624// SetSecurityGroupIds sets the SecurityGroupIds field's value.
7625func (s *CreateCacheClusterInput) SetSecurityGroupIds(v []*string) *CreateCacheClusterInput {
7626	s.SecurityGroupIds = v
7627	return s
7628}
7629
7630// SetSnapshotArns sets the SnapshotArns field's value.
7631func (s *CreateCacheClusterInput) SetSnapshotArns(v []*string) *CreateCacheClusterInput {
7632	s.SnapshotArns = v
7633	return s
7634}
7635
7636// SetSnapshotName sets the SnapshotName field's value.
7637func (s *CreateCacheClusterInput) SetSnapshotName(v string) *CreateCacheClusterInput {
7638	s.SnapshotName = &v
7639	return s
7640}
7641
7642// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
7643func (s *CreateCacheClusterInput) SetSnapshotRetentionLimit(v int64) *CreateCacheClusterInput {
7644	s.SnapshotRetentionLimit = &v
7645	return s
7646}
7647
7648// SetSnapshotWindow sets the SnapshotWindow field's value.
7649func (s *CreateCacheClusterInput) SetSnapshotWindow(v string) *CreateCacheClusterInput {
7650	s.SnapshotWindow = &v
7651	return s
7652}
7653
7654// SetTags sets the Tags field's value.
7655func (s *CreateCacheClusterInput) SetTags(v []*Tag) *CreateCacheClusterInput {
7656	s.Tags = v
7657	return s
7658}
7659
7660type CreateCacheClusterOutput struct {
7661	_ struct{} `type:"structure"`
7662
7663	// Contains all of the attributes of a specific cluster.
7664	CacheCluster *CacheCluster `type:"structure"`
7665}
7666
7667// String returns the string representation
7668func (s CreateCacheClusterOutput) String() string {
7669	return awsutil.Prettify(s)
7670}
7671
7672// GoString returns the string representation
7673func (s CreateCacheClusterOutput) GoString() string {
7674	return s.String()
7675}
7676
7677// SetCacheCluster sets the CacheCluster field's value.
7678func (s *CreateCacheClusterOutput) SetCacheCluster(v *CacheCluster) *CreateCacheClusterOutput {
7679	s.CacheCluster = v
7680	return s
7681}
7682
7683// Represents the input of a CreateCacheParameterGroup operation.
7684type CreateCacheParameterGroupInput struct {
7685	_ struct{} `type:"structure"`
7686
7687	// The name of the cache parameter group family that the cache parameter group
7688	// can be used with.
7689	//
7690	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
7691	// | redis4.0 | redis5.0 |
7692	//
7693	// CacheParameterGroupFamily is a required field
7694	CacheParameterGroupFamily *string `type:"string" required:"true"`
7695
7696	// A user-specified name for the cache parameter group.
7697	//
7698	// CacheParameterGroupName is a required field
7699	CacheParameterGroupName *string `type:"string" required:"true"`
7700
7701	// A user-specified description for the cache parameter group.
7702	//
7703	// Description is a required field
7704	Description *string `type:"string" required:"true"`
7705}
7706
7707// String returns the string representation
7708func (s CreateCacheParameterGroupInput) String() string {
7709	return awsutil.Prettify(s)
7710}
7711
7712// GoString returns the string representation
7713func (s CreateCacheParameterGroupInput) GoString() string {
7714	return s.String()
7715}
7716
7717// Validate inspects the fields of the type to determine if they are valid.
7718func (s *CreateCacheParameterGroupInput) Validate() error {
7719	invalidParams := request.ErrInvalidParams{Context: "CreateCacheParameterGroupInput"}
7720	if s.CacheParameterGroupFamily == nil {
7721		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
7722	}
7723	if s.CacheParameterGroupName == nil {
7724		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
7725	}
7726	if s.Description == nil {
7727		invalidParams.Add(request.NewErrParamRequired("Description"))
7728	}
7729
7730	if invalidParams.Len() > 0 {
7731		return invalidParams
7732	}
7733	return nil
7734}
7735
7736// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
7737func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupFamily(v string) *CreateCacheParameterGroupInput {
7738	s.CacheParameterGroupFamily = &v
7739	return s
7740}
7741
7742// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7743func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupName(v string) *CreateCacheParameterGroupInput {
7744	s.CacheParameterGroupName = &v
7745	return s
7746}
7747
7748// SetDescription sets the Description field's value.
7749func (s *CreateCacheParameterGroupInput) SetDescription(v string) *CreateCacheParameterGroupInput {
7750	s.Description = &v
7751	return s
7752}
7753
7754type CreateCacheParameterGroupOutput struct {
7755	_ struct{} `type:"structure"`
7756
7757	// Represents the output of a CreateCacheParameterGroup operation.
7758	CacheParameterGroup *CacheParameterGroup `type:"structure"`
7759}
7760
7761// String returns the string representation
7762func (s CreateCacheParameterGroupOutput) String() string {
7763	return awsutil.Prettify(s)
7764}
7765
7766// GoString returns the string representation
7767func (s CreateCacheParameterGroupOutput) GoString() string {
7768	return s.String()
7769}
7770
7771// SetCacheParameterGroup sets the CacheParameterGroup field's value.
7772func (s *CreateCacheParameterGroupOutput) SetCacheParameterGroup(v *CacheParameterGroup) *CreateCacheParameterGroupOutput {
7773	s.CacheParameterGroup = v
7774	return s
7775}
7776
7777// Represents the input of a CreateCacheSecurityGroup operation.
7778type CreateCacheSecurityGroupInput struct {
7779	_ struct{} `type:"structure"`
7780
7781	// A name for the cache security group. This value is stored as a lowercase
7782	// string.
7783	//
7784	// Constraints: Must contain no more than 255 alphanumeric characters. Cannot
7785	// be the word "Default".
7786	//
7787	// Example: mysecuritygroup
7788	//
7789	// CacheSecurityGroupName is a required field
7790	CacheSecurityGroupName *string `type:"string" required:"true"`
7791
7792	// A description for the cache security group.
7793	//
7794	// Description is a required field
7795	Description *string `type:"string" required:"true"`
7796}
7797
7798// String returns the string representation
7799func (s CreateCacheSecurityGroupInput) String() string {
7800	return awsutil.Prettify(s)
7801}
7802
7803// GoString returns the string representation
7804func (s CreateCacheSecurityGroupInput) GoString() string {
7805	return s.String()
7806}
7807
7808// Validate inspects the fields of the type to determine if they are valid.
7809func (s *CreateCacheSecurityGroupInput) Validate() error {
7810	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSecurityGroupInput"}
7811	if s.CacheSecurityGroupName == nil {
7812		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
7813	}
7814	if s.Description == nil {
7815		invalidParams.Add(request.NewErrParamRequired("Description"))
7816	}
7817
7818	if invalidParams.Len() > 0 {
7819		return invalidParams
7820	}
7821	return nil
7822}
7823
7824// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7825func (s *CreateCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *CreateCacheSecurityGroupInput {
7826	s.CacheSecurityGroupName = &v
7827	return s
7828}
7829
7830// SetDescription sets the Description field's value.
7831func (s *CreateCacheSecurityGroupInput) SetDescription(v string) *CreateCacheSecurityGroupInput {
7832	s.Description = &v
7833	return s
7834}
7835
7836type CreateCacheSecurityGroupOutput struct {
7837	_ struct{} `type:"structure"`
7838
7839	// Represents the output of one of the following operations:
7840	//
7841	//    * AuthorizeCacheSecurityGroupIngress
7842	//
7843	//    * CreateCacheSecurityGroup
7844	//
7845	//    * RevokeCacheSecurityGroupIngress
7846	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
7847}
7848
7849// String returns the string representation
7850func (s CreateCacheSecurityGroupOutput) String() string {
7851	return awsutil.Prettify(s)
7852}
7853
7854// GoString returns the string representation
7855func (s CreateCacheSecurityGroupOutput) GoString() string {
7856	return s.String()
7857}
7858
7859// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
7860func (s *CreateCacheSecurityGroupOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *CreateCacheSecurityGroupOutput {
7861	s.CacheSecurityGroup = v
7862	return s
7863}
7864
7865// Represents the input of a CreateCacheSubnetGroup operation.
7866type CreateCacheSubnetGroupInput struct {
7867	_ struct{} `type:"structure"`
7868
7869	// A description for the cache subnet group.
7870	//
7871	// CacheSubnetGroupDescription is a required field
7872	CacheSubnetGroupDescription *string `type:"string" required:"true"`
7873
7874	// A name for the cache subnet group. This value is stored as a lowercase string.
7875	//
7876	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
7877	//
7878	// Example: mysubnetgroup
7879	//
7880	// CacheSubnetGroupName is a required field
7881	CacheSubnetGroupName *string `type:"string" required:"true"`
7882
7883	// A list of VPC subnet IDs for the cache subnet group.
7884	//
7885	// SubnetIds is a required field
7886	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`
7887}
7888
7889// String returns the string representation
7890func (s CreateCacheSubnetGroupInput) String() string {
7891	return awsutil.Prettify(s)
7892}
7893
7894// GoString returns the string representation
7895func (s CreateCacheSubnetGroupInput) GoString() string {
7896	return s.String()
7897}
7898
7899// Validate inspects the fields of the type to determine if they are valid.
7900func (s *CreateCacheSubnetGroupInput) Validate() error {
7901	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSubnetGroupInput"}
7902	if s.CacheSubnetGroupDescription == nil {
7903		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupDescription"))
7904	}
7905	if s.CacheSubnetGroupName == nil {
7906		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
7907	}
7908	if s.SubnetIds == nil {
7909		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
7910	}
7911
7912	if invalidParams.Len() > 0 {
7913		return invalidParams
7914	}
7915	return nil
7916}
7917
7918// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
7919func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *CreateCacheSubnetGroupInput {
7920	s.CacheSubnetGroupDescription = &v
7921	return s
7922}
7923
7924// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7925func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *CreateCacheSubnetGroupInput {
7926	s.CacheSubnetGroupName = &v
7927	return s
7928}
7929
7930// SetSubnetIds sets the SubnetIds field's value.
7931func (s *CreateCacheSubnetGroupInput) SetSubnetIds(v []*string) *CreateCacheSubnetGroupInput {
7932	s.SubnetIds = v
7933	return s
7934}
7935
7936type CreateCacheSubnetGroupOutput struct {
7937	_ struct{} `type:"structure"`
7938
7939	// Represents the output of one of the following operations:
7940	//
7941	//    * CreateCacheSubnetGroup
7942	//
7943	//    * ModifyCacheSubnetGroup
7944	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
7945}
7946
7947// String returns the string representation
7948func (s CreateCacheSubnetGroupOutput) String() string {
7949	return awsutil.Prettify(s)
7950}
7951
7952// GoString returns the string representation
7953func (s CreateCacheSubnetGroupOutput) GoString() string {
7954	return s.String()
7955}
7956
7957// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
7958func (s *CreateCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *CreateCacheSubnetGroupOutput {
7959	s.CacheSubnetGroup = v
7960	return s
7961}
7962
7963// Represents the input of a CreateReplicationGroup operation.
7964type CreateReplicationGroupInput struct {
7965	_ struct{} `type:"structure"`
7966
7967	// A flag that enables encryption at rest when set to true.
7968	//
7969	// You cannot modify the value of AtRestEncryptionEnabled after the replication
7970	// group is created. To enable encryption at rest on a replication group you
7971	// must set AtRestEncryptionEnabled to true when you create the replication
7972	// group.
7973	//
7974	// Required: Only available when creating a replication group in an Amazon VPC
7975	// using redis version 3.2.6, 4.x or later.
7976	//
7977	// Default: false
7978	AtRestEncryptionEnabled *bool `type:"boolean"`
7979
7980	// Reserved parameter. The password used to access a password protected server.
7981	//
7982	// AuthToken can be specified only on replication groups where TransitEncryptionEnabled
7983	// is true.
7984	//
7985	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
7986	// an AuthToken, and a CacheSubnetGroup.
7987	//
7988	// Password constraints:
7989	//
7990	//    * Must be only printable ASCII characters.
7991	//
7992	//    * Must be at least 16 characters and no more than 128 characters in length.
7993	//
7994	//    * The only permitted printable special characters are !, &, #, $, ^, <,
7995	//    >, and -. Other printable special characters cannot be used in the AUTH
7996	//    token.
7997	//
7998	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
7999	// http://redis.io/commands/AUTH.
8000	AuthToken *string `type:"string"`
8001
8002	// This parameter is currently disabled.
8003	AutoMinorVersionUpgrade *bool `type:"boolean"`
8004
8005	// Specifies whether a read-only replica is automatically promoted to read/write
8006	// primary if the existing primary fails.
8007	//
8008	// If true, Multi-AZ is enabled for this replication group. If false, Multi-AZ
8009	// is disabled for this replication group.
8010	//
8011	// AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled)
8012	// replication groups.
8013	//
8014	// Default: false
8015	//
8016	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
8017	// on:
8018	//
8019	//    * Redis versions earlier than 2.8.6.
8020	//
8021	//    * Redis (cluster mode disabled): T1 node types.
8022	//
8023	//    * Redis (cluster mode enabled): T1 node types.
8024	AutomaticFailoverEnabled *bool `type:"boolean"`
8025
8026	// The compute and memory capacity of the nodes in the node group (shard).
8027	//
8028	// The following node types are supported by ElastiCache. Generally speaking,
8029	// the current generation types provide more memory and computational power
8030	// at lower cost when compared to their equivalent previous generation counterparts.
8031	//
8032	//    * General purpose: Current generation: M5 node types: cache.m5.large,
8033	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
8034	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
8035	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
8036	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
8037	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
8038	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
8039	//    cache.m3.2xlarge
8040	//
8041	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
8042	//    cache.c1.xlarge
8043	//
8044	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
8045	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
8046	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
8047	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
8048	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
8049	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
8050	//    cache.r3.8xlarge
8051	//
8052	// Additional node type info
8053	//
8054	//    * All current generation instance types are created in Amazon VPC by default.
8055	//
8056	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
8057	//
8058	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
8059	//
8060	//    * Redis configuration variables appendonly and appendfsync are not supported
8061	//    on Redis version 2.8.22 and later.
8062	CacheNodeType *string `type:"string"`
8063
8064	// The name of the parameter group to associate with this replication group.
8065	// If this argument is omitted, the default cache parameter group for the specified
8066	// engine is used.
8067	//
8068	// If you are restoring to an engine version that is different than the original,
8069	// you must specify the default version of that version. For example, CacheParameterGroupName=default.redis4.0.
8070	//
8071	// If you are running Redis version 3.2.4 or later, only one node group (shard),
8072	// and want to use a default parameter group, we recommend that you specify
8073	// the parameter group by name.
8074	//
8075	//    * To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2.
8076	//
8077	//    * To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on.
8078	CacheParameterGroupName *string `type:"string"`
8079
8080	// A list of cache security group names to associate with this replication group.
8081	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
8082
8083	// The name of the cache subnet group to be used for the replication group.
8084	//
8085	// If you're going to launch your cluster in an Amazon VPC, you need to create
8086	// a subnet group before you start creating a cluster. For more information,
8087	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
8088	CacheSubnetGroupName *string `type:"string"`
8089
8090	// The name of the cache engine to be used for the clusters in this replication
8091	// group.
8092	Engine *string `type:"string"`
8093
8094	// The version number of the cache engine to be used for the clusters in this
8095	// replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions
8096	// operation.
8097	//
8098	// Important: You can upgrade to a newer engine version (see Selecting a Cache
8099	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement))
8100	// in the ElastiCache User Guide, but you cannot downgrade to an earlier engine
8101	// version. If you want to use an earlier engine version, you must delete the
8102	// existing cluster or replication group and create it anew with the earlier
8103	// engine version.
8104	EngineVersion *string `type:"string"`
8105
8106	// The ID of the KMS key used to encrypt the disk on the cluster.
8107	KmsKeyId *string `type:"string"`
8108
8109	// A list of node group (shard) configuration options. Each node group (shard)
8110	// configuration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,
8111	// ReplicaCount, and Slots.
8112	//
8113	// If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode
8114	// enabled) replication group, you can use this parameter to individually configure
8115	// each node group (shard), or you can omit this parameter. However, when seeding
8116	// a Redis (cluster mode enabled) cluster from a S3 rdb file, you must configure
8117	// each node group (shard) using this parameter because you must specify the
8118	// slots for each node group.
8119	NodeGroupConfiguration []*NodeGroupConfiguration `locationNameList:"NodeGroupConfiguration" type:"list"`
8120
8121	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
8122	// (SNS) topic to which notifications are sent.
8123	//
8124	// The Amazon SNS topic owner must be the same as the cluster owner.
8125	NotificationTopicArn *string `type:"string"`
8126
8127	// The number of clusters this replication group initially has.
8128	//
8129	// This parameter is not used if there is more than one node group (shard).
8130	// You should use ReplicasPerNodeGroup instead.
8131	//
8132	// If AutomaticFailoverEnabled is true, the value of this parameter must be
8133	// at least 2. If AutomaticFailoverEnabled is false you can omit this parameter
8134	// (it will default to 1), or you can explicitly set it to a value between 2
8135	// and 6.
8136	//
8137	// The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).
8138	NumCacheClusters *int64 `type:"integer"`
8139
8140	// An optional parameter that specifies the number of node groups (shards) for
8141	// this Redis (cluster mode enabled) replication group. For Redis (cluster mode
8142	// disabled) either omit this parameter or set it to 1.
8143	//
8144	// Default: 1
8145	NumNodeGroups *int64 `type:"integer"`
8146
8147	// The port number on which each member of the replication group accepts connections.
8148	Port *int64 `type:"integer"`
8149
8150	// A list of EC2 Availability Zones in which the replication group's clusters
8151	// are created. The order of the Availability Zones in the list is the order
8152	// in which clusters are allocated. The primary cluster is created in the first
8153	// AZ in the list.
8154	//
8155	// This parameter is not used if there is more than one node group (shard).
8156	// You should use NodeGroupConfiguration instead.
8157	//
8158	// If you are creating your replication group in an Amazon VPC (recommended),
8159	// you can only locate clusters in Availability Zones associated with the subnets
8160	// in the selected subnet group.
8161	//
8162	// The number of Availability Zones listed must equal the value of NumCacheClusters.
8163	//
8164	// Default: system chosen Availability Zones.
8165	PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
8166
8167	// Specifies the weekly time range during which maintenance on the cluster is
8168	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8169	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
8170	// values for ddd are:
8171	//
8172	// Specifies the weekly time range during which maintenance on the cluster is
8173	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8174	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
8175	//
8176	// Valid values for ddd are:
8177	//
8178	//    * sun
8179	//
8180	//    * mon
8181	//
8182	//    * tue
8183	//
8184	//    * wed
8185	//
8186	//    * thu
8187	//
8188	//    * fri
8189	//
8190	//    * sat
8191	//
8192	// Example: sun:23:00-mon:01:30
8193	PreferredMaintenanceWindow *string `type:"string"`
8194
8195	// The identifier of the cluster that serves as the primary for this replication
8196	// group. This cluster must already exist and have a status of available.
8197	//
8198	// This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup
8199	// is specified.
8200	PrimaryClusterId *string `type:"string"`
8201
8202	// An optional parameter that specifies the number of replica nodes in each
8203	// node group (shard). Valid values are 0 to 5.
8204	ReplicasPerNodeGroup *int64 `type:"integer"`
8205
8206	// A user-created description for the replication group.
8207	//
8208	// ReplicationGroupDescription is a required field
8209	ReplicationGroupDescription *string `type:"string" required:"true"`
8210
8211	// The replication group identifier. This parameter is stored as a lowercase
8212	// string.
8213	//
8214	// Constraints:
8215	//
8216	//    * A name must contain from 1 to 40 alphanumeric characters or hyphens.
8217	//
8218	//    * The first character must be a letter.
8219	//
8220	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
8221	//
8222	// ReplicationGroupId is a required field
8223	ReplicationGroupId *string `type:"string" required:"true"`
8224
8225	// One or more Amazon VPC security groups associated with this replication group.
8226	//
8227	// Use this parameter only when you are creating a replication group in an Amazon
8228	// Virtual Private Cloud (Amazon VPC).
8229	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
8230
8231	// A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB
8232	// snapshot files stored in Amazon S3. The snapshot files are used to populate
8233	// the new replication group. The Amazon S3 object name in the ARN cannot contain
8234	// any commas. The new replication group will have the number of node groups
8235	// (console: shards) specified by the parameter NumNodeGroups or the number
8236	// of node groups configured by NodeGroupConfiguration regardless of the number
8237	// of ARNs specified here.
8238	//
8239	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
8240	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
8241
8242	// The name of a snapshot from which to restore data into the new replication
8243	// group. The snapshot status changes to restoring while the new replication
8244	// group is being created.
8245	SnapshotName *string `type:"string"`
8246
8247	// The number of days for which ElastiCache retains automatic snapshots before
8248	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
8249	// that was taken today is retained for 5 days before being deleted.
8250	//
8251	// Default: 0 (i.e., automatic backups are disabled for this cluster).
8252	SnapshotRetentionLimit *int64 `type:"integer"`
8253
8254	// The daily time range (in UTC) during which ElastiCache begins taking a daily
8255	// snapshot of your node group (shard).
8256	//
8257	// Example: 05:00-09:00
8258	//
8259	// If you do not specify this parameter, ElastiCache automatically chooses an
8260	// appropriate time range.
8261	SnapshotWindow *string `type:"string"`
8262
8263	// A list of cost allocation tags to be added to this resource. Tags are comma-separated
8264	// key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple
8265	// tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.
8266	Tags []*Tag `locationNameList:"Tag" type:"list"`
8267
8268	// A flag that enables in-transit encryption when set to true.
8269	//
8270	// You cannot modify the value of TransitEncryptionEnabled after the cluster
8271	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
8272	// to true when you create a cluster.
8273	//
8274	// This parameter is valid only if the Engine parameter is redis, the EngineVersion
8275	// parameter is 3.2.6, 4.x or later, and the cluster is being created in an
8276	// Amazon VPC.
8277	//
8278	// If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.
8279	//
8280	// Required: Only available when creating a replication group in an Amazon VPC
8281	// using redis version 3.2.6, 4.x or later.
8282	//
8283	// Default: false
8284	//
8285	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
8286	// an AuthToken, and a CacheSubnetGroup.
8287	TransitEncryptionEnabled *bool `type:"boolean"`
8288}
8289
8290// String returns the string representation
8291func (s CreateReplicationGroupInput) String() string {
8292	return awsutil.Prettify(s)
8293}
8294
8295// GoString returns the string representation
8296func (s CreateReplicationGroupInput) GoString() string {
8297	return s.String()
8298}
8299
8300// Validate inspects the fields of the type to determine if they are valid.
8301func (s *CreateReplicationGroupInput) Validate() error {
8302	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupInput"}
8303	if s.ReplicationGroupDescription == nil {
8304		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupDescription"))
8305	}
8306	if s.ReplicationGroupId == nil {
8307		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
8308	}
8309	if s.NodeGroupConfiguration != nil {
8310		for i, v := range s.NodeGroupConfiguration {
8311			if v == nil {
8312				continue
8313			}
8314			if err := v.Validate(); err != nil {
8315				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NodeGroupConfiguration", i), err.(request.ErrInvalidParams))
8316			}
8317		}
8318	}
8319
8320	if invalidParams.Len() > 0 {
8321		return invalidParams
8322	}
8323	return nil
8324}
8325
8326// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
8327func (s *CreateReplicationGroupInput) SetAtRestEncryptionEnabled(v bool) *CreateReplicationGroupInput {
8328	s.AtRestEncryptionEnabled = &v
8329	return s
8330}
8331
8332// SetAuthToken sets the AuthToken field's value.
8333func (s *CreateReplicationGroupInput) SetAuthToken(v string) *CreateReplicationGroupInput {
8334	s.AuthToken = &v
8335	return s
8336}
8337
8338// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
8339func (s *CreateReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *CreateReplicationGroupInput {
8340	s.AutoMinorVersionUpgrade = &v
8341	return s
8342}
8343
8344// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
8345func (s *CreateReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *CreateReplicationGroupInput {
8346	s.AutomaticFailoverEnabled = &v
8347	return s
8348}
8349
8350// SetCacheNodeType sets the CacheNodeType field's value.
8351func (s *CreateReplicationGroupInput) SetCacheNodeType(v string) *CreateReplicationGroupInput {
8352	s.CacheNodeType = &v
8353	return s
8354}
8355
8356// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8357func (s *CreateReplicationGroupInput) SetCacheParameterGroupName(v string) *CreateReplicationGroupInput {
8358	s.CacheParameterGroupName = &v
8359	return s
8360}
8361
8362// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
8363func (s *CreateReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *CreateReplicationGroupInput {
8364	s.CacheSecurityGroupNames = v
8365	return s
8366}
8367
8368// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8369func (s *CreateReplicationGroupInput) SetCacheSubnetGroupName(v string) *CreateReplicationGroupInput {
8370	s.CacheSubnetGroupName = &v
8371	return s
8372}
8373
8374// SetEngine sets the Engine field's value.
8375func (s *CreateReplicationGroupInput) SetEngine(v string) *CreateReplicationGroupInput {
8376	s.Engine = &v
8377	return s
8378}
8379
8380// SetEngineVersion sets the EngineVersion field's value.
8381func (s *CreateReplicationGroupInput) SetEngineVersion(v string) *CreateReplicationGroupInput {
8382	s.EngineVersion = &v
8383	return s
8384}
8385
8386// SetKmsKeyId sets the KmsKeyId field's value.
8387func (s *CreateReplicationGroupInput) SetKmsKeyId(v string) *CreateReplicationGroupInput {
8388	s.KmsKeyId = &v
8389	return s
8390}
8391
8392// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
8393func (s *CreateReplicationGroupInput) SetNodeGroupConfiguration(v []*NodeGroupConfiguration) *CreateReplicationGroupInput {
8394	s.NodeGroupConfiguration = v
8395	return s
8396}
8397
8398// SetNotificationTopicArn sets the NotificationTopicArn field's value.
8399func (s *CreateReplicationGroupInput) SetNotificationTopicArn(v string) *CreateReplicationGroupInput {
8400	s.NotificationTopicArn = &v
8401	return s
8402}
8403
8404// SetNumCacheClusters sets the NumCacheClusters field's value.
8405func (s *CreateReplicationGroupInput) SetNumCacheClusters(v int64) *CreateReplicationGroupInput {
8406	s.NumCacheClusters = &v
8407	return s
8408}
8409
8410// SetNumNodeGroups sets the NumNodeGroups field's value.
8411func (s *CreateReplicationGroupInput) SetNumNodeGroups(v int64) *CreateReplicationGroupInput {
8412	s.NumNodeGroups = &v
8413	return s
8414}
8415
8416// SetPort sets the Port field's value.
8417func (s *CreateReplicationGroupInput) SetPort(v int64) *CreateReplicationGroupInput {
8418	s.Port = &v
8419	return s
8420}
8421
8422// SetPreferredCacheClusterAZs sets the PreferredCacheClusterAZs field's value.
8423func (s *CreateReplicationGroupInput) SetPreferredCacheClusterAZs(v []*string) *CreateReplicationGroupInput {
8424	s.PreferredCacheClusterAZs = v
8425	return s
8426}
8427
8428// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
8429func (s *CreateReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *CreateReplicationGroupInput {
8430	s.PreferredMaintenanceWindow = &v
8431	return s
8432}
8433
8434// SetPrimaryClusterId sets the PrimaryClusterId field's value.
8435func (s *CreateReplicationGroupInput) SetPrimaryClusterId(v string) *CreateReplicationGroupInput {
8436	s.PrimaryClusterId = &v
8437	return s
8438}
8439
8440// SetReplicasPerNodeGroup sets the ReplicasPerNodeGroup field's value.
8441func (s *CreateReplicationGroupInput) SetReplicasPerNodeGroup(v int64) *CreateReplicationGroupInput {
8442	s.ReplicasPerNodeGroup = &v
8443	return s
8444}
8445
8446// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
8447func (s *CreateReplicationGroupInput) SetReplicationGroupDescription(v string) *CreateReplicationGroupInput {
8448	s.ReplicationGroupDescription = &v
8449	return s
8450}
8451
8452// SetReplicationGroupId sets the ReplicationGroupId field's value.
8453func (s *CreateReplicationGroupInput) SetReplicationGroupId(v string) *CreateReplicationGroupInput {
8454	s.ReplicationGroupId = &v
8455	return s
8456}
8457
8458// SetSecurityGroupIds sets the SecurityGroupIds field's value.
8459func (s *CreateReplicationGroupInput) SetSecurityGroupIds(v []*string) *CreateReplicationGroupInput {
8460	s.SecurityGroupIds = v
8461	return s
8462}
8463
8464// SetSnapshotArns sets the SnapshotArns field's value.
8465func (s *CreateReplicationGroupInput) SetSnapshotArns(v []*string) *CreateReplicationGroupInput {
8466	s.SnapshotArns = v
8467	return s
8468}
8469
8470// SetSnapshotName sets the SnapshotName field's value.
8471func (s *CreateReplicationGroupInput) SetSnapshotName(v string) *CreateReplicationGroupInput {
8472	s.SnapshotName = &v
8473	return s
8474}
8475
8476// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
8477func (s *CreateReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *CreateReplicationGroupInput {
8478	s.SnapshotRetentionLimit = &v
8479	return s
8480}
8481
8482// SetSnapshotWindow sets the SnapshotWindow field's value.
8483func (s *CreateReplicationGroupInput) SetSnapshotWindow(v string) *CreateReplicationGroupInput {
8484	s.SnapshotWindow = &v
8485	return s
8486}
8487
8488// SetTags sets the Tags field's value.
8489func (s *CreateReplicationGroupInput) SetTags(v []*Tag) *CreateReplicationGroupInput {
8490	s.Tags = v
8491	return s
8492}
8493
8494// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
8495func (s *CreateReplicationGroupInput) SetTransitEncryptionEnabled(v bool) *CreateReplicationGroupInput {
8496	s.TransitEncryptionEnabled = &v
8497	return s
8498}
8499
8500type CreateReplicationGroupOutput struct {
8501	_ struct{} `type:"structure"`
8502
8503	// Contains all of the attributes of a specific Redis replication group.
8504	ReplicationGroup *ReplicationGroup `type:"structure"`
8505}
8506
8507// String returns the string representation
8508func (s CreateReplicationGroupOutput) String() string {
8509	return awsutil.Prettify(s)
8510}
8511
8512// GoString returns the string representation
8513func (s CreateReplicationGroupOutput) GoString() string {
8514	return s.String()
8515}
8516
8517// SetReplicationGroup sets the ReplicationGroup field's value.
8518func (s *CreateReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *CreateReplicationGroupOutput {
8519	s.ReplicationGroup = v
8520	return s
8521}
8522
8523// Represents the input of a CreateSnapshot operation.
8524type CreateSnapshotInput struct {
8525	_ struct{} `type:"structure"`
8526
8527	// The identifier of an existing cluster. The snapshot is created from this
8528	// cluster.
8529	CacheClusterId *string `type:"string"`
8530
8531	// The ID of the KMS key used to encrypt the snapshot.
8532	KmsKeyId *string `type:"string"`
8533
8534	// The identifier of an existing replication group. The snapshot is created
8535	// from this replication group.
8536	ReplicationGroupId *string `type:"string"`
8537
8538	// A name for the snapshot being created.
8539	//
8540	// SnapshotName is a required field
8541	SnapshotName *string `type:"string" required:"true"`
8542}
8543
8544// String returns the string representation
8545func (s CreateSnapshotInput) String() string {
8546	return awsutil.Prettify(s)
8547}
8548
8549// GoString returns the string representation
8550func (s CreateSnapshotInput) GoString() string {
8551	return s.String()
8552}
8553
8554// Validate inspects the fields of the type to determine if they are valid.
8555func (s *CreateSnapshotInput) Validate() error {
8556	invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"}
8557	if s.SnapshotName == nil {
8558		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
8559	}
8560
8561	if invalidParams.Len() > 0 {
8562		return invalidParams
8563	}
8564	return nil
8565}
8566
8567// SetCacheClusterId sets the CacheClusterId field's value.
8568func (s *CreateSnapshotInput) SetCacheClusterId(v string) *CreateSnapshotInput {
8569	s.CacheClusterId = &v
8570	return s
8571}
8572
8573// SetKmsKeyId sets the KmsKeyId field's value.
8574func (s *CreateSnapshotInput) SetKmsKeyId(v string) *CreateSnapshotInput {
8575	s.KmsKeyId = &v
8576	return s
8577}
8578
8579// SetReplicationGroupId sets the ReplicationGroupId field's value.
8580func (s *CreateSnapshotInput) SetReplicationGroupId(v string) *CreateSnapshotInput {
8581	s.ReplicationGroupId = &v
8582	return s
8583}
8584
8585// SetSnapshotName sets the SnapshotName field's value.
8586func (s *CreateSnapshotInput) SetSnapshotName(v string) *CreateSnapshotInput {
8587	s.SnapshotName = &v
8588	return s
8589}
8590
8591type CreateSnapshotOutput struct {
8592	_ struct{} `type:"structure"`
8593
8594	// Represents a copy of an entire Redis cluster as of the time when the snapshot
8595	// was taken.
8596	Snapshot *Snapshot `type:"structure"`
8597}
8598
8599// String returns the string representation
8600func (s CreateSnapshotOutput) String() string {
8601	return awsutil.Prettify(s)
8602}
8603
8604// GoString returns the string representation
8605func (s CreateSnapshotOutput) GoString() string {
8606	return s.String()
8607}
8608
8609// SetSnapshot sets the Snapshot field's value.
8610func (s *CreateSnapshotOutput) SetSnapshot(v *Snapshot) *CreateSnapshotOutput {
8611	s.Snapshot = v
8612	return s
8613}
8614
8615// The endpoint from which data should be migrated.
8616type CustomerNodeEndpoint struct {
8617	_ struct{} `type:"structure"`
8618
8619	// The address of the node endpoint
8620	Address *string `type:"string"`
8621
8622	// The port of the node endpoint
8623	Port *int64 `type:"integer"`
8624}
8625
8626// String returns the string representation
8627func (s CustomerNodeEndpoint) String() string {
8628	return awsutil.Prettify(s)
8629}
8630
8631// GoString returns the string representation
8632func (s CustomerNodeEndpoint) GoString() string {
8633	return s.String()
8634}
8635
8636// SetAddress sets the Address field's value.
8637func (s *CustomerNodeEndpoint) SetAddress(v string) *CustomerNodeEndpoint {
8638	s.Address = &v
8639	return s
8640}
8641
8642// SetPort sets the Port field's value.
8643func (s *CustomerNodeEndpoint) SetPort(v int64) *CustomerNodeEndpoint {
8644	s.Port = &v
8645	return s
8646}
8647
8648type DecreaseReplicaCountInput struct {
8649	_ struct{} `type:"structure"`
8650
8651	// If True, the number of replica nodes is decreased immediately. ApplyImmediately=False
8652	// is not currently supported.
8653	//
8654	// ApplyImmediately is a required field
8655	ApplyImmediately *bool `type:"boolean" required:"true"`
8656
8657	// The number of read replica nodes you want at the completion of this operation.
8658	// For Redis (cluster mode disabled) replication groups, this is the number
8659	// of replica nodes in the replication group. For Redis (cluster mode enabled)
8660	// replication groups, this is the number of replica nodes in each of the replication
8661	// group's node groups.
8662	//
8663	// The minimum number of replicas in a shard or replication group is:
8664	//
8665	//    * Redis (cluster mode disabled) If Multi-AZ with Automatic Failover is
8666	//    enabled: 1 If Multi-AZ with Automatic Failover is not enabled: 0
8667	//
8668	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
8669	//    to a replica if your primary node fails)
8670	NewReplicaCount *int64 `type:"integer"`
8671
8672	// A list of ConfigureShard objects that can be used to configure each shard
8673	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
8674	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
8675	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
8676
8677	// A list of the node ids to remove from the replication group or node group
8678	// (shard).
8679	ReplicasToRemove []*string `type:"list"`
8680
8681	// The id of the replication group from which you want to remove replica nodes.
8682	//
8683	// ReplicationGroupId is a required field
8684	ReplicationGroupId *string `type:"string" required:"true"`
8685}
8686
8687// String returns the string representation
8688func (s DecreaseReplicaCountInput) String() string {
8689	return awsutil.Prettify(s)
8690}
8691
8692// GoString returns the string representation
8693func (s DecreaseReplicaCountInput) GoString() string {
8694	return s.String()
8695}
8696
8697// Validate inspects the fields of the type to determine if they are valid.
8698func (s *DecreaseReplicaCountInput) Validate() error {
8699	invalidParams := request.ErrInvalidParams{Context: "DecreaseReplicaCountInput"}
8700	if s.ApplyImmediately == nil {
8701		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
8702	}
8703	if s.ReplicationGroupId == nil {
8704		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
8705	}
8706	if s.ReplicaConfiguration != nil {
8707		for i, v := range s.ReplicaConfiguration {
8708			if v == nil {
8709				continue
8710			}
8711			if err := v.Validate(); err != nil {
8712				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
8713			}
8714		}
8715	}
8716
8717	if invalidParams.Len() > 0 {
8718		return invalidParams
8719	}
8720	return nil
8721}
8722
8723// SetApplyImmediately sets the ApplyImmediately field's value.
8724func (s *DecreaseReplicaCountInput) SetApplyImmediately(v bool) *DecreaseReplicaCountInput {
8725	s.ApplyImmediately = &v
8726	return s
8727}
8728
8729// SetNewReplicaCount sets the NewReplicaCount field's value.
8730func (s *DecreaseReplicaCountInput) SetNewReplicaCount(v int64) *DecreaseReplicaCountInput {
8731	s.NewReplicaCount = &v
8732	return s
8733}
8734
8735// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
8736func (s *DecreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *DecreaseReplicaCountInput {
8737	s.ReplicaConfiguration = v
8738	return s
8739}
8740
8741// SetReplicasToRemove sets the ReplicasToRemove field's value.
8742func (s *DecreaseReplicaCountInput) SetReplicasToRemove(v []*string) *DecreaseReplicaCountInput {
8743	s.ReplicasToRemove = v
8744	return s
8745}
8746
8747// SetReplicationGroupId sets the ReplicationGroupId field's value.
8748func (s *DecreaseReplicaCountInput) SetReplicationGroupId(v string) *DecreaseReplicaCountInput {
8749	s.ReplicationGroupId = &v
8750	return s
8751}
8752
8753type DecreaseReplicaCountOutput struct {
8754	_ struct{} `type:"structure"`
8755
8756	// Contains all of the attributes of a specific Redis replication group.
8757	ReplicationGroup *ReplicationGroup `type:"structure"`
8758}
8759
8760// String returns the string representation
8761func (s DecreaseReplicaCountOutput) String() string {
8762	return awsutil.Prettify(s)
8763}
8764
8765// GoString returns the string representation
8766func (s DecreaseReplicaCountOutput) GoString() string {
8767	return s.String()
8768}
8769
8770// SetReplicationGroup sets the ReplicationGroup field's value.
8771func (s *DecreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *DecreaseReplicaCountOutput {
8772	s.ReplicationGroup = v
8773	return s
8774}
8775
8776// Represents the input of a DeleteCacheCluster operation.
8777type DeleteCacheClusterInput struct {
8778	_ struct{} `type:"structure"`
8779
8780	// The cluster identifier for the cluster to be deleted. This parameter is not
8781	// case sensitive.
8782	//
8783	// CacheClusterId is a required field
8784	CacheClusterId *string `type:"string" required:"true"`
8785
8786	// The user-supplied name of a final cluster snapshot. This is the unique name
8787	// that identifies the snapshot. ElastiCache creates the snapshot, and then
8788	// deletes the cluster immediately afterward.
8789	FinalSnapshotIdentifier *string `type:"string"`
8790}
8791
8792// String returns the string representation
8793func (s DeleteCacheClusterInput) String() string {
8794	return awsutil.Prettify(s)
8795}
8796
8797// GoString returns the string representation
8798func (s DeleteCacheClusterInput) GoString() string {
8799	return s.String()
8800}
8801
8802// Validate inspects the fields of the type to determine if they are valid.
8803func (s *DeleteCacheClusterInput) Validate() error {
8804	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheClusterInput"}
8805	if s.CacheClusterId == nil {
8806		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
8807	}
8808
8809	if invalidParams.Len() > 0 {
8810		return invalidParams
8811	}
8812	return nil
8813}
8814
8815// SetCacheClusterId sets the CacheClusterId field's value.
8816func (s *DeleteCacheClusterInput) SetCacheClusterId(v string) *DeleteCacheClusterInput {
8817	s.CacheClusterId = &v
8818	return s
8819}
8820
8821// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
8822func (s *DeleteCacheClusterInput) SetFinalSnapshotIdentifier(v string) *DeleteCacheClusterInput {
8823	s.FinalSnapshotIdentifier = &v
8824	return s
8825}
8826
8827type DeleteCacheClusterOutput struct {
8828	_ struct{} `type:"structure"`
8829
8830	// Contains all of the attributes of a specific cluster.
8831	CacheCluster *CacheCluster `type:"structure"`
8832}
8833
8834// String returns the string representation
8835func (s DeleteCacheClusterOutput) String() string {
8836	return awsutil.Prettify(s)
8837}
8838
8839// GoString returns the string representation
8840func (s DeleteCacheClusterOutput) GoString() string {
8841	return s.String()
8842}
8843
8844// SetCacheCluster sets the CacheCluster field's value.
8845func (s *DeleteCacheClusterOutput) SetCacheCluster(v *CacheCluster) *DeleteCacheClusterOutput {
8846	s.CacheCluster = v
8847	return s
8848}
8849
8850// Represents the input of a DeleteCacheParameterGroup operation.
8851type DeleteCacheParameterGroupInput struct {
8852	_ struct{} `type:"structure"`
8853
8854	// The name of the cache parameter group to delete.
8855	//
8856	// The specified cache security group must not be associated with any clusters.
8857	//
8858	// CacheParameterGroupName is a required field
8859	CacheParameterGroupName *string `type:"string" required:"true"`
8860}
8861
8862// String returns the string representation
8863func (s DeleteCacheParameterGroupInput) String() string {
8864	return awsutil.Prettify(s)
8865}
8866
8867// GoString returns the string representation
8868func (s DeleteCacheParameterGroupInput) GoString() string {
8869	return s.String()
8870}
8871
8872// Validate inspects the fields of the type to determine if they are valid.
8873func (s *DeleteCacheParameterGroupInput) Validate() error {
8874	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheParameterGroupInput"}
8875	if s.CacheParameterGroupName == nil {
8876		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
8877	}
8878
8879	if invalidParams.Len() > 0 {
8880		return invalidParams
8881	}
8882	return nil
8883}
8884
8885// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8886func (s *DeleteCacheParameterGroupInput) SetCacheParameterGroupName(v string) *DeleteCacheParameterGroupInput {
8887	s.CacheParameterGroupName = &v
8888	return s
8889}
8890
8891type DeleteCacheParameterGroupOutput struct {
8892	_ struct{} `type:"structure"`
8893}
8894
8895// String returns the string representation
8896func (s DeleteCacheParameterGroupOutput) String() string {
8897	return awsutil.Prettify(s)
8898}
8899
8900// GoString returns the string representation
8901func (s DeleteCacheParameterGroupOutput) GoString() string {
8902	return s.String()
8903}
8904
8905// Represents the input of a DeleteCacheSecurityGroup operation.
8906type DeleteCacheSecurityGroupInput struct {
8907	_ struct{} `type:"structure"`
8908
8909	// The name of the cache security group to delete.
8910	//
8911	// You cannot delete the default security group.
8912	//
8913	// CacheSecurityGroupName is a required field
8914	CacheSecurityGroupName *string `type:"string" required:"true"`
8915}
8916
8917// String returns the string representation
8918func (s DeleteCacheSecurityGroupInput) String() string {
8919	return awsutil.Prettify(s)
8920}
8921
8922// GoString returns the string representation
8923func (s DeleteCacheSecurityGroupInput) GoString() string {
8924	return s.String()
8925}
8926
8927// Validate inspects the fields of the type to determine if they are valid.
8928func (s *DeleteCacheSecurityGroupInput) Validate() error {
8929	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSecurityGroupInput"}
8930	if s.CacheSecurityGroupName == nil {
8931		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
8932	}
8933
8934	if invalidParams.Len() > 0 {
8935		return invalidParams
8936	}
8937	return nil
8938}
8939
8940// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
8941func (s *DeleteCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *DeleteCacheSecurityGroupInput {
8942	s.CacheSecurityGroupName = &v
8943	return s
8944}
8945
8946type DeleteCacheSecurityGroupOutput struct {
8947	_ struct{} `type:"structure"`
8948}
8949
8950// String returns the string representation
8951func (s DeleteCacheSecurityGroupOutput) String() string {
8952	return awsutil.Prettify(s)
8953}
8954
8955// GoString returns the string representation
8956func (s DeleteCacheSecurityGroupOutput) GoString() string {
8957	return s.String()
8958}
8959
8960// Represents the input of a DeleteCacheSubnetGroup operation.
8961type DeleteCacheSubnetGroupInput struct {
8962	_ struct{} `type:"structure"`
8963
8964	// The name of the cache subnet group to delete.
8965	//
8966	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
8967	//
8968	// CacheSubnetGroupName is a required field
8969	CacheSubnetGroupName *string `type:"string" required:"true"`
8970}
8971
8972// String returns the string representation
8973func (s DeleteCacheSubnetGroupInput) String() string {
8974	return awsutil.Prettify(s)
8975}
8976
8977// GoString returns the string representation
8978func (s DeleteCacheSubnetGroupInput) GoString() string {
8979	return s.String()
8980}
8981
8982// Validate inspects the fields of the type to determine if they are valid.
8983func (s *DeleteCacheSubnetGroupInput) Validate() error {
8984	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSubnetGroupInput"}
8985	if s.CacheSubnetGroupName == nil {
8986		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
8987	}
8988
8989	if invalidParams.Len() > 0 {
8990		return invalidParams
8991	}
8992	return nil
8993}
8994
8995// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8996func (s *DeleteCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *DeleteCacheSubnetGroupInput {
8997	s.CacheSubnetGroupName = &v
8998	return s
8999}
9000
9001type DeleteCacheSubnetGroupOutput struct {
9002	_ struct{} `type:"structure"`
9003}
9004
9005// String returns the string representation
9006func (s DeleteCacheSubnetGroupOutput) String() string {
9007	return awsutil.Prettify(s)
9008}
9009
9010// GoString returns the string representation
9011func (s DeleteCacheSubnetGroupOutput) GoString() string {
9012	return s.String()
9013}
9014
9015// Represents the input of a DeleteReplicationGroup operation.
9016type DeleteReplicationGroupInput struct {
9017	_ struct{} `type:"structure"`
9018
9019	// The name of a final node group (shard) snapshot. ElastiCache creates the
9020	// snapshot from the primary node in the cluster, rather than one of the replicas;
9021	// this is to ensure that it captures the freshest data. After the final snapshot
9022	// is taken, the replication group is immediately deleted.
9023	FinalSnapshotIdentifier *string `type:"string"`
9024
9025	// The identifier for the cluster to be deleted. This parameter is not case
9026	// sensitive.
9027	//
9028	// ReplicationGroupId is a required field
9029	ReplicationGroupId *string `type:"string" required:"true"`
9030
9031	// If set to true, all of the read replicas are deleted, but the primary node
9032	// is retained.
9033	RetainPrimaryCluster *bool `type:"boolean"`
9034}
9035
9036// String returns the string representation
9037func (s DeleteReplicationGroupInput) String() string {
9038	return awsutil.Prettify(s)
9039}
9040
9041// GoString returns the string representation
9042func (s DeleteReplicationGroupInput) GoString() string {
9043	return s.String()
9044}
9045
9046// Validate inspects the fields of the type to determine if they are valid.
9047func (s *DeleteReplicationGroupInput) Validate() error {
9048	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupInput"}
9049	if s.ReplicationGroupId == nil {
9050		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
9051	}
9052
9053	if invalidParams.Len() > 0 {
9054		return invalidParams
9055	}
9056	return nil
9057}
9058
9059// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
9060func (s *DeleteReplicationGroupInput) SetFinalSnapshotIdentifier(v string) *DeleteReplicationGroupInput {
9061	s.FinalSnapshotIdentifier = &v
9062	return s
9063}
9064
9065// SetReplicationGroupId sets the ReplicationGroupId field's value.
9066func (s *DeleteReplicationGroupInput) SetReplicationGroupId(v string) *DeleteReplicationGroupInput {
9067	s.ReplicationGroupId = &v
9068	return s
9069}
9070
9071// SetRetainPrimaryCluster sets the RetainPrimaryCluster field's value.
9072func (s *DeleteReplicationGroupInput) SetRetainPrimaryCluster(v bool) *DeleteReplicationGroupInput {
9073	s.RetainPrimaryCluster = &v
9074	return s
9075}
9076
9077type DeleteReplicationGroupOutput struct {
9078	_ struct{} `type:"structure"`
9079
9080	// Contains all of the attributes of a specific Redis replication group.
9081	ReplicationGroup *ReplicationGroup `type:"structure"`
9082}
9083
9084// String returns the string representation
9085func (s DeleteReplicationGroupOutput) String() string {
9086	return awsutil.Prettify(s)
9087}
9088
9089// GoString returns the string representation
9090func (s DeleteReplicationGroupOutput) GoString() string {
9091	return s.String()
9092}
9093
9094// SetReplicationGroup sets the ReplicationGroup field's value.
9095func (s *DeleteReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *DeleteReplicationGroupOutput {
9096	s.ReplicationGroup = v
9097	return s
9098}
9099
9100// Represents the input of a DeleteSnapshot operation.
9101type DeleteSnapshotInput struct {
9102	_ struct{} `type:"structure"`
9103
9104	// The name of the snapshot to be deleted.
9105	//
9106	// SnapshotName is a required field
9107	SnapshotName *string `type:"string" required:"true"`
9108}
9109
9110// String returns the string representation
9111func (s DeleteSnapshotInput) String() string {
9112	return awsutil.Prettify(s)
9113}
9114
9115// GoString returns the string representation
9116func (s DeleteSnapshotInput) GoString() string {
9117	return s.String()
9118}
9119
9120// Validate inspects the fields of the type to determine if they are valid.
9121func (s *DeleteSnapshotInput) Validate() error {
9122	invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"}
9123	if s.SnapshotName == nil {
9124		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
9125	}
9126
9127	if invalidParams.Len() > 0 {
9128		return invalidParams
9129	}
9130	return nil
9131}
9132
9133// SetSnapshotName sets the SnapshotName field's value.
9134func (s *DeleteSnapshotInput) SetSnapshotName(v string) *DeleteSnapshotInput {
9135	s.SnapshotName = &v
9136	return s
9137}
9138
9139type DeleteSnapshotOutput struct {
9140	_ struct{} `type:"structure"`
9141
9142	// Represents a copy of an entire Redis cluster as of the time when the snapshot
9143	// was taken.
9144	Snapshot *Snapshot `type:"structure"`
9145}
9146
9147// String returns the string representation
9148func (s DeleteSnapshotOutput) String() string {
9149	return awsutil.Prettify(s)
9150}
9151
9152// GoString returns the string representation
9153func (s DeleteSnapshotOutput) GoString() string {
9154	return s.String()
9155}
9156
9157// SetSnapshot sets the Snapshot field's value.
9158func (s *DeleteSnapshotOutput) SetSnapshot(v *Snapshot) *DeleteSnapshotOutput {
9159	s.Snapshot = v
9160	return s
9161}
9162
9163// Represents the input of a DescribeCacheClusters operation.
9164type DescribeCacheClustersInput struct {
9165	_ struct{} `type:"structure"`
9166
9167	// The user-supplied cluster identifier. If this parameter is specified, only
9168	// information about that specific cluster is returned. This parameter isn't
9169	// case sensitive.
9170	CacheClusterId *string `type:"string"`
9171
9172	// An optional marker returned from a prior request. Use this marker for pagination
9173	// of results from this operation. If this parameter is specified, the response
9174	// includes only records beyond the marker, up to the value specified by MaxRecords.
9175	Marker *string `type:"string"`
9176
9177	// The maximum number of records to include in the response. If more records
9178	// exist than the specified MaxRecords value, a marker is included in the response
9179	// so that the remaining results can be retrieved.
9180	//
9181	// Default: 100
9182	//
9183	// Constraints: minimum 20; maximum 100.
9184	MaxRecords *int64 `type:"integer"`
9185
9186	// An optional flag that can be included in the DescribeCacheCluster request
9187	// to show only nodes (API/CLI: clusters) that are not members of a replication
9188	// group. In practice, this mean Memcached and single node Redis clusters.
9189	ShowCacheClustersNotInReplicationGroups *bool `type:"boolean"`
9190
9191	// An optional flag that can be included in the DescribeCacheCluster request
9192	// to retrieve information about the individual cache nodes.
9193	ShowCacheNodeInfo *bool `type:"boolean"`
9194}
9195
9196// String returns the string representation
9197func (s DescribeCacheClustersInput) String() string {
9198	return awsutil.Prettify(s)
9199}
9200
9201// GoString returns the string representation
9202func (s DescribeCacheClustersInput) GoString() string {
9203	return s.String()
9204}
9205
9206// SetCacheClusterId sets the CacheClusterId field's value.
9207func (s *DescribeCacheClustersInput) SetCacheClusterId(v string) *DescribeCacheClustersInput {
9208	s.CacheClusterId = &v
9209	return s
9210}
9211
9212// SetMarker sets the Marker field's value.
9213func (s *DescribeCacheClustersInput) SetMarker(v string) *DescribeCacheClustersInput {
9214	s.Marker = &v
9215	return s
9216}
9217
9218// SetMaxRecords sets the MaxRecords field's value.
9219func (s *DescribeCacheClustersInput) SetMaxRecords(v int64) *DescribeCacheClustersInput {
9220	s.MaxRecords = &v
9221	return s
9222}
9223
9224// SetShowCacheClustersNotInReplicationGroups sets the ShowCacheClustersNotInReplicationGroups field's value.
9225func (s *DescribeCacheClustersInput) SetShowCacheClustersNotInReplicationGroups(v bool) *DescribeCacheClustersInput {
9226	s.ShowCacheClustersNotInReplicationGroups = &v
9227	return s
9228}
9229
9230// SetShowCacheNodeInfo sets the ShowCacheNodeInfo field's value.
9231func (s *DescribeCacheClustersInput) SetShowCacheNodeInfo(v bool) *DescribeCacheClustersInput {
9232	s.ShowCacheNodeInfo = &v
9233	return s
9234}
9235
9236// Represents the output of a DescribeCacheClusters operation.
9237type DescribeCacheClustersOutput struct {
9238	_ struct{} `type:"structure"`
9239
9240	// A list of clusters. Each item in the list contains detailed information about
9241	// one cluster.
9242	CacheClusters []*CacheCluster `locationNameList:"CacheCluster" type:"list"`
9243
9244	// Provides an identifier to allow retrieval of paginated results.
9245	Marker *string `type:"string"`
9246}
9247
9248// String returns the string representation
9249func (s DescribeCacheClustersOutput) String() string {
9250	return awsutil.Prettify(s)
9251}
9252
9253// GoString returns the string representation
9254func (s DescribeCacheClustersOutput) GoString() string {
9255	return s.String()
9256}
9257
9258// SetCacheClusters sets the CacheClusters field's value.
9259func (s *DescribeCacheClustersOutput) SetCacheClusters(v []*CacheCluster) *DescribeCacheClustersOutput {
9260	s.CacheClusters = v
9261	return s
9262}
9263
9264// SetMarker sets the Marker field's value.
9265func (s *DescribeCacheClustersOutput) SetMarker(v string) *DescribeCacheClustersOutput {
9266	s.Marker = &v
9267	return s
9268}
9269
9270// Represents the input of a DescribeCacheEngineVersions operation.
9271type DescribeCacheEngineVersionsInput struct {
9272	_ struct{} `type:"structure"`
9273
9274	// The name of a specific cache parameter group family to return details for.
9275	//
9276	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
9277	// | redis4.0 | redis5.0 |
9278	//
9279	// Constraints:
9280	//
9281	//    * Must be 1 to 255 alphanumeric characters
9282	//
9283	//    * First character must be a letter
9284	//
9285	//    * Cannot end with a hyphen or contain two consecutive hyphens
9286	CacheParameterGroupFamily *string `type:"string"`
9287
9288	// If true, specifies that only the default version of the specified engine
9289	// or engine and major version combination is to be returned.
9290	DefaultOnly *bool `type:"boolean"`
9291
9292	// The cache engine to return. Valid values: memcached | redis
9293	Engine *string `type:"string"`
9294
9295	// The cache engine version to return.
9296	//
9297	// Example: 1.4.14
9298	EngineVersion *string `type:"string"`
9299
9300	// An optional marker returned from a prior request. Use this marker for pagination
9301	// of results from this operation. If this parameter is specified, the response
9302	// includes only records beyond the marker, up to the value specified by MaxRecords.
9303	Marker *string `type:"string"`
9304
9305	// The maximum number of records to include in the response. If more records
9306	// exist than the specified MaxRecords value, a marker is included in the response
9307	// so that the remaining results can be retrieved.
9308	//
9309	// Default: 100
9310	//
9311	// Constraints: minimum 20; maximum 100.
9312	MaxRecords *int64 `type:"integer"`
9313}
9314
9315// String returns the string representation
9316func (s DescribeCacheEngineVersionsInput) String() string {
9317	return awsutil.Prettify(s)
9318}
9319
9320// GoString returns the string representation
9321func (s DescribeCacheEngineVersionsInput) GoString() string {
9322	return s.String()
9323}
9324
9325// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
9326func (s *DescribeCacheEngineVersionsInput) SetCacheParameterGroupFamily(v string) *DescribeCacheEngineVersionsInput {
9327	s.CacheParameterGroupFamily = &v
9328	return s
9329}
9330
9331// SetDefaultOnly sets the DefaultOnly field's value.
9332func (s *DescribeCacheEngineVersionsInput) SetDefaultOnly(v bool) *DescribeCacheEngineVersionsInput {
9333	s.DefaultOnly = &v
9334	return s
9335}
9336
9337// SetEngine sets the Engine field's value.
9338func (s *DescribeCacheEngineVersionsInput) SetEngine(v string) *DescribeCacheEngineVersionsInput {
9339	s.Engine = &v
9340	return s
9341}
9342
9343// SetEngineVersion sets the EngineVersion field's value.
9344func (s *DescribeCacheEngineVersionsInput) SetEngineVersion(v string) *DescribeCacheEngineVersionsInput {
9345	s.EngineVersion = &v
9346	return s
9347}
9348
9349// SetMarker sets the Marker field's value.
9350func (s *DescribeCacheEngineVersionsInput) SetMarker(v string) *DescribeCacheEngineVersionsInput {
9351	s.Marker = &v
9352	return s
9353}
9354
9355// SetMaxRecords sets the MaxRecords field's value.
9356func (s *DescribeCacheEngineVersionsInput) SetMaxRecords(v int64) *DescribeCacheEngineVersionsInput {
9357	s.MaxRecords = &v
9358	return s
9359}
9360
9361// Represents the output of a DescribeCacheEngineVersions operation.
9362type DescribeCacheEngineVersionsOutput struct {
9363	_ struct{} `type:"structure"`
9364
9365	// A list of cache engine version details. Each element in the list contains
9366	// detailed information about one cache engine version.
9367	CacheEngineVersions []*CacheEngineVersion `locationNameList:"CacheEngineVersion" type:"list"`
9368
9369	// Provides an identifier to allow retrieval of paginated results.
9370	Marker *string `type:"string"`
9371}
9372
9373// String returns the string representation
9374func (s DescribeCacheEngineVersionsOutput) String() string {
9375	return awsutil.Prettify(s)
9376}
9377
9378// GoString returns the string representation
9379func (s DescribeCacheEngineVersionsOutput) GoString() string {
9380	return s.String()
9381}
9382
9383// SetCacheEngineVersions sets the CacheEngineVersions field's value.
9384func (s *DescribeCacheEngineVersionsOutput) SetCacheEngineVersions(v []*CacheEngineVersion) *DescribeCacheEngineVersionsOutput {
9385	s.CacheEngineVersions = v
9386	return s
9387}
9388
9389// SetMarker sets the Marker field's value.
9390func (s *DescribeCacheEngineVersionsOutput) SetMarker(v string) *DescribeCacheEngineVersionsOutput {
9391	s.Marker = &v
9392	return s
9393}
9394
9395// Represents the input of a DescribeCacheParameterGroups operation.
9396type DescribeCacheParameterGroupsInput struct {
9397	_ struct{} `type:"structure"`
9398
9399	// The name of a specific cache parameter group to return details for.
9400	CacheParameterGroupName *string `type:"string"`
9401
9402	// An optional marker returned from a prior request. Use this marker for pagination
9403	// of results from this operation. If this parameter is specified, the response
9404	// includes only records beyond the marker, up to the value specified by MaxRecords.
9405	Marker *string `type:"string"`
9406
9407	// The maximum number of records to include in the response. If more records
9408	// exist than the specified MaxRecords value, a marker is included in the response
9409	// so that the remaining results can be retrieved.
9410	//
9411	// Default: 100
9412	//
9413	// Constraints: minimum 20; maximum 100.
9414	MaxRecords *int64 `type:"integer"`
9415}
9416
9417// String returns the string representation
9418func (s DescribeCacheParameterGroupsInput) String() string {
9419	return awsutil.Prettify(s)
9420}
9421
9422// GoString returns the string representation
9423func (s DescribeCacheParameterGroupsInput) GoString() string {
9424	return s.String()
9425}
9426
9427// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9428func (s *DescribeCacheParameterGroupsInput) SetCacheParameterGroupName(v string) *DescribeCacheParameterGroupsInput {
9429	s.CacheParameterGroupName = &v
9430	return s
9431}
9432
9433// SetMarker sets the Marker field's value.
9434func (s *DescribeCacheParameterGroupsInput) SetMarker(v string) *DescribeCacheParameterGroupsInput {
9435	s.Marker = &v
9436	return s
9437}
9438
9439// SetMaxRecords sets the MaxRecords field's value.
9440func (s *DescribeCacheParameterGroupsInput) SetMaxRecords(v int64) *DescribeCacheParameterGroupsInput {
9441	s.MaxRecords = &v
9442	return s
9443}
9444
9445// Represents the output of a DescribeCacheParameterGroups operation.
9446type DescribeCacheParameterGroupsOutput struct {
9447	_ struct{} `type:"structure"`
9448
9449	// A list of cache parameter groups. Each element in the list contains detailed
9450	// information about one cache parameter group.
9451	CacheParameterGroups []*CacheParameterGroup `locationNameList:"CacheParameterGroup" type:"list"`
9452
9453	// Provides an identifier to allow retrieval of paginated results.
9454	Marker *string `type:"string"`
9455}
9456
9457// String returns the string representation
9458func (s DescribeCacheParameterGroupsOutput) String() string {
9459	return awsutil.Prettify(s)
9460}
9461
9462// GoString returns the string representation
9463func (s DescribeCacheParameterGroupsOutput) GoString() string {
9464	return s.String()
9465}
9466
9467// SetCacheParameterGroups sets the CacheParameterGroups field's value.
9468func (s *DescribeCacheParameterGroupsOutput) SetCacheParameterGroups(v []*CacheParameterGroup) *DescribeCacheParameterGroupsOutput {
9469	s.CacheParameterGroups = v
9470	return s
9471}
9472
9473// SetMarker sets the Marker field's value.
9474func (s *DescribeCacheParameterGroupsOutput) SetMarker(v string) *DescribeCacheParameterGroupsOutput {
9475	s.Marker = &v
9476	return s
9477}
9478
9479// Represents the input of a DescribeCacheParameters operation.
9480type DescribeCacheParametersInput struct {
9481	_ struct{} `type:"structure"`
9482
9483	// The name of a specific cache parameter group to return details for.
9484	//
9485	// CacheParameterGroupName is a required field
9486	CacheParameterGroupName *string `type:"string" required:"true"`
9487
9488	// An optional marker returned from a prior request. Use this marker for pagination
9489	// of results from this operation. If this parameter is specified, the response
9490	// includes only records beyond the marker, up to the value specified by MaxRecords.
9491	Marker *string `type:"string"`
9492
9493	// The maximum number of records to include in the response. If more records
9494	// exist than the specified MaxRecords value, a marker is included in the response
9495	// so that the remaining results can be retrieved.
9496	//
9497	// Default: 100
9498	//
9499	// Constraints: minimum 20; maximum 100.
9500	MaxRecords *int64 `type:"integer"`
9501
9502	// The parameter types to return.
9503	//
9504	// Valid values: user | system | engine-default
9505	Source *string `type:"string"`
9506}
9507
9508// String returns the string representation
9509func (s DescribeCacheParametersInput) String() string {
9510	return awsutil.Prettify(s)
9511}
9512
9513// GoString returns the string representation
9514func (s DescribeCacheParametersInput) GoString() string {
9515	return s.String()
9516}
9517
9518// Validate inspects the fields of the type to determine if they are valid.
9519func (s *DescribeCacheParametersInput) Validate() error {
9520	invalidParams := request.ErrInvalidParams{Context: "DescribeCacheParametersInput"}
9521	if s.CacheParameterGroupName == nil {
9522		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
9523	}
9524
9525	if invalidParams.Len() > 0 {
9526		return invalidParams
9527	}
9528	return nil
9529}
9530
9531// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9532func (s *DescribeCacheParametersInput) SetCacheParameterGroupName(v string) *DescribeCacheParametersInput {
9533	s.CacheParameterGroupName = &v
9534	return s
9535}
9536
9537// SetMarker sets the Marker field's value.
9538func (s *DescribeCacheParametersInput) SetMarker(v string) *DescribeCacheParametersInput {
9539	s.Marker = &v
9540	return s
9541}
9542
9543// SetMaxRecords sets the MaxRecords field's value.
9544func (s *DescribeCacheParametersInput) SetMaxRecords(v int64) *DescribeCacheParametersInput {
9545	s.MaxRecords = &v
9546	return s
9547}
9548
9549// SetSource sets the Source field's value.
9550func (s *DescribeCacheParametersInput) SetSource(v string) *DescribeCacheParametersInput {
9551	s.Source = &v
9552	return s
9553}
9554
9555// Represents the output of a DescribeCacheParameters operation.
9556type DescribeCacheParametersOutput struct {
9557	_ struct{} `type:"structure"`
9558
9559	// A list of parameters specific to a particular cache node type. Each element
9560	// in the list contains detailed information about one parameter.
9561	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
9562
9563	// Provides an identifier to allow retrieval of paginated results.
9564	Marker *string `type:"string"`
9565
9566	// A list of Parameter instances.
9567	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
9568}
9569
9570// String returns the string representation
9571func (s DescribeCacheParametersOutput) String() string {
9572	return awsutil.Prettify(s)
9573}
9574
9575// GoString returns the string representation
9576func (s DescribeCacheParametersOutput) GoString() string {
9577	return s.String()
9578}
9579
9580// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
9581func (s *DescribeCacheParametersOutput) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *DescribeCacheParametersOutput {
9582	s.CacheNodeTypeSpecificParameters = v
9583	return s
9584}
9585
9586// SetMarker sets the Marker field's value.
9587func (s *DescribeCacheParametersOutput) SetMarker(v string) *DescribeCacheParametersOutput {
9588	s.Marker = &v
9589	return s
9590}
9591
9592// SetParameters sets the Parameters field's value.
9593func (s *DescribeCacheParametersOutput) SetParameters(v []*Parameter) *DescribeCacheParametersOutput {
9594	s.Parameters = v
9595	return s
9596}
9597
9598// Represents the input of a DescribeCacheSecurityGroups operation.
9599type DescribeCacheSecurityGroupsInput struct {
9600	_ struct{} `type:"structure"`
9601
9602	// The name of the cache security group to return details for.
9603	CacheSecurityGroupName *string `type:"string"`
9604
9605	// An optional marker returned from a prior request. Use this marker for pagination
9606	// of results from this operation. If this parameter is specified, the response
9607	// includes only records beyond the marker, up to the value specified by MaxRecords.
9608	Marker *string `type:"string"`
9609
9610	// The maximum number of records to include in the response. If more records
9611	// exist than the specified MaxRecords value, a marker is included in the response
9612	// so that the remaining results can be retrieved.
9613	//
9614	// Default: 100
9615	//
9616	// Constraints: minimum 20; maximum 100.
9617	MaxRecords *int64 `type:"integer"`
9618}
9619
9620// String returns the string representation
9621func (s DescribeCacheSecurityGroupsInput) String() string {
9622	return awsutil.Prettify(s)
9623}
9624
9625// GoString returns the string representation
9626func (s DescribeCacheSecurityGroupsInput) GoString() string {
9627	return s.String()
9628}
9629
9630// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
9631func (s *DescribeCacheSecurityGroupsInput) SetCacheSecurityGroupName(v string) *DescribeCacheSecurityGroupsInput {
9632	s.CacheSecurityGroupName = &v
9633	return s
9634}
9635
9636// SetMarker sets the Marker field's value.
9637func (s *DescribeCacheSecurityGroupsInput) SetMarker(v string) *DescribeCacheSecurityGroupsInput {
9638	s.Marker = &v
9639	return s
9640}
9641
9642// SetMaxRecords sets the MaxRecords field's value.
9643func (s *DescribeCacheSecurityGroupsInput) SetMaxRecords(v int64) *DescribeCacheSecurityGroupsInput {
9644	s.MaxRecords = &v
9645	return s
9646}
9647
9648// Represents the output of a DescribeCacheSecurityGroups operation.
9649type DescribeCacheSecurityGroupsOutput struct {
9650	_ struct{} `type:"structure"`
9651
9652	// A list of cache security groups. Each element in the list contains detailed
9653	// information about one group.
9654	CacheSecurityGroups []*CacheSecurityGroup `locationNameList:"CacheSecurityGroup" type:"list"`
9655
9656	// Provides an identifier to allow retrieval of paginated results.
9657	Marker *string `type:"string"`
9658}
9659
9660// String returns the string representation
9661func (s DescribeCacheSecurityGroupsOutput) String() string {
9662	return awsutil.Prettify(s)
9663}
9664
9665// GoString returns the string representation
9666func (s DescribeCacheSecurityGroupsOutput) GoString() string {
9667	return s.String()
9668}
9669
9670// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
9671func (s *DescribeCacheSecurityGroupsOutput) SetCacheSecurityGroups(v []*CacheSecurityGroup) *DescribeCacheSecurityGroupsOutput {
9672	s.CacheSecurityGroups = v
9673	return s
9674}
9675
9676// SetMarker sets the Marker field's value.
9677func (s *DescribeCacheSecurityGroupsOutput) SetMarker(v string) *DescribeCacheSecurityGroupsOutput {
9678	s.Marker = &v
9679	return s
9680}
9681
9682// Represents the input of a DescribeCacheSubnetGroups operation.
9683type DescribeCacheSubnetGroupsInput struct {
9684	_ struct{} `type:"structure"`
9685
9686	// The name of the cache subnet group to return details for.
9687	CacheSubnetGroupName *string `type:"string"`
9688
9689	// An optional marker returned from a prior request. Use this marker for pagination
9690	// of results from this operation. If this parameter is specified, the response
9691	// includes only records beyond the marker, up to the value specified by MaxRecords.
9692	Marker *string `type:"string"`
9693
9694	// The maximum number of records to include in the response. If more records
9695	// exist than the specified MaxRecords value, a marker is included in the response
9696	// so that the remaining results can be retrieved.
9697	//
9698	// Default: 100
9699	//
9700	// Constraints: minimum 20; maximum 100.
9701	MaxRecords *int64 `type:"integer"`
9702}
9703
9704// String returns the string representation
9705func (s DescribeCacheSubnetGroupsInput) String() string {
9706	return awsutil.Prettify(s)
9707}
9708
9709// GoString returns the string representation
9710func (s DescribeCacheSubnetGroupsInput) GoString() string {
9711	return s.String()
9712}
9713
9714// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
9715func (s *DescribeCacheSubnetGroupsInput) SetCacheSubnetGroupName(v string) *DescribeCacheSubnetGroupsInput {
9716	s.CacheSubnetGroupName = &v
9717	return s
9718}
9719
9720// SetMarker sets the Marker field's value.
9721func (s *DescribeCacheSubnetGroupsInput) SetMarker(v string) *DescribeCacheSubnetGroupsInput {
9722	s.Marker = &v
9723	return s
9724}
9725
9726// SetMaxRecords sets the MaxRecords field's value.
9727func (s *DescribeCacheSubnetGroupsInput) SetMaxRecords(v int64) *DescribeCacheSubnetGroupsInput {
9728	s.MaxRecords = &v
9729	return s
9730}
9731
9732// Represents the output of a DescribeCacheSubnetGroups operation.
9733type DescribeCacheSubnetGroupsOutput struct {
9734	_ struct{} `type:"structure"`
9735
9736	// A list of cache subnet groups. Each element in the list contains detailed
9737	// information about one group.
9738	CacheSubnetGroups []*CacheSubnetGroup `locationNameList:"CacheSubnetGroup" type:"list"`
9739
9740	// Provides an identifier to allow retrieval of paginated results.
9741	Marker *string `type:"string"`
9742}
9743
9744// String returns the string representation
9745func (s DescribeCacheSubnetGroupsOutput) String() string {
9746	return awsutil.Prettify(s)
9747}
9748
9749// GoString returns the string representation
9750func (s DescribeCacheSubnetGroupsOutput) GoString() string {
9751	return s.String()
9752}
9753
9754// SetCacheSubnetGroups sets the CacheSubnetGroups field's value.
9755func (s *DescribeCacheSubnetGroupsOutput) SetCacheSubnetGroups(v []*CacheSubnetGroup) *DescribeCacheSubnetGroupsOutput {
9756	s.CacheSubnetGroups = v
9757	return s
9758}
9759
9760// SetMarker sets the Marker field's value.
9761func (s *DescribeCacheSubnetGroupsOutput) SetMarker(v string) *DescribeCacheSubnetGroupsOutput {
9762	s.Marker = &v
9763	return s
9764}
9765
9766// Represents the input of a DescribeEngineDefaultParameters operation.
9767type DescribeEngineDefaultParametersInput struct {
9768	_ struct{} `type:"structure"`
9769
9770	// The name of the cache parameter group family.
9771	//
9772	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
9773	// | redis4.0 | redis5.0 |
9774	//
9775	// CacheParameterGroupFamily is a required field
9776	CacheParameterGroupFamily *string `type:"string" required:"true"`
9777
9778	// An optional marker returned from a prior request. Use this marker for pagination
9779	// of results from this operation. If this parameter is specified, the response
9780	// includes only records beyond the marker, up to the value specified by MaxRecords.
9781	Marker *string `type:"string"`
9782
9783	// The maximum number of records to include in the response. If more records
9784	// exist than the specified MaxRecords value, a marker is included in the response
9785	// so that the remaining results can be retrieved.
9786	//
9787	// Default: 100
9788	//
9789	// Constraints: minimum 20; maximum 100.
9790	MaxRecords *int64 `type:"integer"`
9791}
9792
9793// String returns the string representation
9794func (s DescribeEngineDefaultParametersInput) String() string {
9795	return awsutil.Prettify(s)
9796}
9797
9798// GoString returns the string representation
9799func (s DescribeEngineDefaultParametersInput) GoString() string {
9800	return s.String()
9801}
9802
9803// Validate inspects the fields of the type to determine if they are valid.
9804func (s *DescribeEngineDefaultParametersInput) Validate() error {
9805	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
9806	if s.CacheParameterGroupFamily == nil {
9807		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
9808	}
9809
9810	if invalidParams.Len() > 0 {
9811		return invalidParams
9812	}
9813	return nil
9814}
9815
9816// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
9817func (s *DescribeEngineDefaultParametersInput) SetCacheParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
9818	s.CacheParameterGroupFamily = &v
9819	return s
9820}
9821
9822// SetMarker sets the Marker field's value.
9823func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
9824	s.Marker = &v
9825	return s
9826}
9827
9828// SetMaxRecords sets the MaxRecords field's value.
9829func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
9830	s.MaxRecords = &v
9831	return s
9832}
9833
9834type DescribeEngineDefaultParametersOutput struct {
9835	_ struct{} `type:"structure"`
9836
9837	// Represents the output of a DescribeEngineDefaultParameters operation.
9838	EngineDefaults *EngineDefaults `type:"structure"`
9839}
9840
9841// String returns the string representation
9842func (s DescribeEngineDefaultParametersOutput) String() string {
9843	return awsutil.Prettify(s)
9844}
9845
9846// GoString returns the string representation
9847func (s DescribeEngineDefaultParametersOutput) GoString() string {
9848	return s.String()
9849}
9850
9851// SetEngineDefaults sets the EngineDefaults field's value.
9852func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
9853	s.EngineDefaults = v
9854	return s
9855}
9856
9857// Represents the input of a DescribeEvents operation.
9858type DescribeEventsInput struct {
9859	_ struct{} `type:"structure"`
9860
9861	// The number of minutes worth of events to retrieve.
9862	Duration *int64 `type:"integer"`
9863
9864	// The end of the time interval for which to retrieve events, specified in ISO
9865	// 8601 format.
9866	//
9867	// Example: 2017-03-30T07:03:49.555Z
9868	EndTime *time.Time `type:"timestamp"`
9869
9870	// An optional marker returned from a prior request. Use this marker for pagination
9871	// of results from this operation. If this parameter is specified, the response
9872	// includes only records beyond the marker, up to the value specified by MaxRecords.
9873	Marker *string `type:"string"`
9874
9875	// The maximum number of records to include in the response. If more records
9876	// exist than the specified MaxRecords value, a marker is included in the response
9877	// so that the remaining results can be retrieved.
9878	//
9879	// Default: 100
9880	//
9881	// Constraints: minimum 20; maximum 100.
9882	MaxRecords *int64 `type:"integer"`
9883
9884	// The identifier of the event source for which events are returned. If not
9885	// specified, all sources are included in the response.
9886	SourceIdentifier *string `type:"string"`
9887
9888	// The event source to retrieve events for. If no value is specified, all events
9889	// are returned.
9890	SourceType *string `type:"string" enum:"SourceType"`
9891
9892	// The beginning of the time interval to retrieve events for, specified in ISO
9893	// 8601 format.
9894	//
9895	// Example: 2017-03-30T07:03:49.555Z
9896	StartTime *time.Time `type:"timestamp"`
9897}
9898
9899// String returns the string representation
9900func (s DescribeEventsInput) String() string {
9901	return awsutil.Prettify(s)
9902}
9903
9904// GoString returns the string representation
9905func (s DescribeEventsInput) GoString() string {
9906	return s.String()
9907}
9908
9909// SetDuration sets the Duration field's value.
9910func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
9911	s.Duration = &v
9912	return s
9913}
9914
9915// SetEndTime sets the EndTime field's value.
9916func (s *DescribeEventsInput) SetEndTime(v time.Time) *DescribeEventsInput {
9917	s.EndTime = &v
9918	return s
9919}
9920
9921// SetMarker sets the Marker field's value.
9922func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
9923	s.Marker = &v
9924	return s
9925}
9926
9927// SetMaxRecords sets the MaxRecords field's value.
9928func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
9929	s.MaxRecords = &v
9930	return s
9931}
9932
9933// SetSourceIdentifier sets the SourceIdentifier field's value.
9934func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
9935	s.SourceIdentifier = &v
9936	return s
9937}
9938
9939// SetSourceType sets the SourceType field's value.
9940func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
9941	s.SourceType = &v
9942	return s
9943}
9944
9945// SetStartTime sets the StartTime field's value.
9946func (s *DescribeEventsInput) SetStartTime(v time.Time) *DescribeEventsInput {
9947	s.StartTime = &v
9948	return s
9949}
9950
9951// Represents the output of a DescribeEvents operation.
9952type DescribeEventsOutput struct {
9953	_ struct{} `type:"structure"`
9954
9955	// A list of events. Each element in the list contains detailed information
9956	// about one event.
9957	Events []*Event `locationNameList:"Event" type:"list"`
9958
9959	// Provides an identifier to allow retrieval of paginated results.
9960	Marker *string `type:"string"`
9961}
9962
9963// String returns the string representation
9964func (s DescribeEventsOutput) String() string {
9965	return awsutil.Prettify(s)
9966}
9967
9968// GoString returns the string representation
9969func (s DescribeEventsOutput) GoString() string {
9970	return s.String()
9971}
9972
9973// SetEvents sets the Events field's value.
9974func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
9975	s.Events = v
9976	return s
9977}
9978
9979// SetMarker sets the Marker field's value.
9980func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
9981	s.Marker = &v
9982	return s
9983}
9984
9985// Represents the input of a DescribeReplicationGroups operation.
9986type DescribeReplicationGroupsInput struct {
9987	_ struct{} `type:"structure"`
9988
9989	// An optional marker returned from a prior request. Use this marker for pagination
9990	// of results from this operation. If this parameter is specified, the response
9991	// includes only records beyond the marker, up to the value specified by MaxRecords.
9992	Marker *string `type:"string"`
9993
9994	// The maximum number of records to include in the response. If more records
9995	// exist than the specified MaxRecords value, a marker is included in the response
9996	// so that the remaining results can be retrieved.
9997	//
9998	// Default: 100
9999	//
10000	// Constraints: minimum 20; maximum 100.
10001	MaxRecords *int64 `type:"integer"`
10002
10003	// The identifier for the replication group to be described. This parameter
10004	// is not case sensitive.
10005	//
10006	// If you do not specify this parameter, information about all replication groups
10007	// is returned.
10008	ReplicationGroupId *string `type:"string"`
10009}
10010
10011// String returns the string representation
10012func (s DescribeReplicationGroupsInput) String() string {
10013	return awsutil.Prettify(s)
10014}
10015
10016// GoString returns the string representation
10017func (s DescribeReplicationGroupsInput) GoString() string {
10018	return s.String()
10019}
10020
10021// SetMarker sets the Marker field's value.
10022func (s *DescribeReplicationGroupsInput) SetMarker(v string) *DescribeReplicationGroupsInput {
10023	s.Marker = &v
10024	return s
10025}
10026
10027// SetMaxRecords sets the MaxRecords field's value.
10028func (s *DescribeReplicationGroupsInput) SetMaxRecords(v int64) *DescribeReplicationGroupsInput {
10029	s.MaxRecords = &v
10030	return s
10031}
10032
10033// SetReplicationGroupId sets the ReplicationGroupId field's value.
10034func (s *DescribeReplicationGroupsInput) SetReplicationGroupId(v string) *DescribeReplicationGroupsInput {
10035	s.ReplicationGroupId = &v
10036	return s
10037}
10038
10039// Represents the output of a DescribeReplicationGroups operation.
10040type DescribeReplicationGroupsOutput struct {
10041	_ struct{} `type:"structure"`
10042
10043	// Provides an identifier to allow retrieval of paginated results.
10044	Marker *string `type:"string"`
10045
10046	// A list of replication groups. Each item in the list contains detailed information
10047	// about one replication group.
10048	ReplicationGroups []*ReplicationGroup `locationNameList:"ReplicationGroup" type:"list"`
10049}
10050
10051// String returns the string representation
10052func (s DescribeReplicationGroupsOutput) String() string {
10053	return awsutil.Prettify(s)
10054}
10055
10056// GoString returns the string representation
10057func (s DescribeReplicationGroupsOutput) GoString() string {
10058	return s.String()
10059}
10060
10061// SetMarker sets the Marker field's value.
10062func (s *DescribeReplicationGroupsOutput) SetMarker(v string) *DescribeReplicationGroupsOutput {
10063	s.Marker = &v
10064	return s
10065}
10066
10067// SetReplicationGroups sets the ReplicationGroups field's value.
10068func (s *DescribeReplicationGroupsOutput) SetReplicationGroups(v []*ReplicationGroup) *DescribeReplicationGroupsOutput {
10069	s.ReplicationGroups = v
10070	return s
10071}
10072
10073// Represents the input of a DescribeReservedCacheNodes operation.
10074type DescribeReservedCacheNodesInput struct {
10075	_ struct{} `type:"structure"`
10076
10077	// The cache node type filter value. Use this parameter to show only those reservations
10078	// matching the specified cache node type.
10079	//
10080	// The following node types are supported by ElastiCache. Generally speaking,
10081	// the current generation types provide more memory and computational power
10082	// at lower cost when compared to their equivalent previous generation counterparts.
10083	//
10084	//    * General purpose: Current generation: M5 node types: cache.m5.large,
10085	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
10086	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
10087	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
10088	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
10089	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
10090	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
10091	//    cache.m3.2xlarge
10092	//
10093	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
10094	//    cache.c1.xlarge
10095	//
10096	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
10097	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
10098	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
10099	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
10100	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
10101	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
10102	//    cache.r3.8xlarge
10103	//
10104	// Additional node type info
10105	//
10106	//    * All current generation instance types are created in Amazon VPC by default.
10107	//
10108	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
10109	//
10110	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
10111	//
10112	//    * Redis configuration variables appendonly and appendfsync are not supported
10113	//    on Redis version 2.8.22 and later.
10114	CacheNodeType *string `type:"string"`
10115
10116	// The duration filter value, specified in years or seconds. Use this parameter
10117	// to show only reservations for this duration.
10118	//
10119	// Valid Values: 1 | 3 | 31536000 | 94608000
10120	Duration *string `type:"string"`
10121
10122	// An optional marker returned from a prior request. Use this marker for pagination
10123	// of results from this operation. If this parameter is specified, the response
10124	// includes only records beyond the marker, up to the value specified by MaxRecords.
10125	Marker *string `type:"string"`
10126
10127	// The maximum number of records to include in the response. If more records
10128	// exist than the specified MaxRecords value, a marker is included in the response
10129	// so that the remaining results can be retrieved.
10130	//
10131	// Default: 100
10132	//
10133	// Constraints: minimum 20; maximum 100.
10134	MaxRecords *int64 `type:"integer"`
10135
10136	// The offering type filter value. Use this parameter to show only the available
10137	// offerings matching the specified offering type.
10138	//
10139	// Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
10140	OfferingType *string `type:"string"`
10141
10142	// The product description filter value. Use this parameter to show only those
10143	// reservations matching the specified product description.
10144	ProductDescription *string `type:"string"`
10145
10146	// The reserved cache node identifier filter value. Use this parameter to show
10147	// only the reservation that matches the specified reservation ID.
10148	ReservedCacheNodeId *string `type:"string"`
10149
10150	// The offering identifier filter value. Use this parameter to show only purchased
10151	// reservations matching the specified offering identifier.
10152	ReservedCacheNodesOfferingId *string `type:"string"`
10153}
10154
10155// String returns the string representation
10156func (s DescribeReservedCacheNodesInput) String() string {
10157	return awsutil.Prettify(s)
10158}
10159
10160// GoString returns the string representation
10161func (s DescribeReservedCacheNodesInput) GoString() string {
10162	return s.String()
10163}
10164
10165// SetCacheNodeType sets the CacheNodeType field's value.
10166func (s *DescribeReservedCacheNodesInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesInput {
10167	s.CacheNodeType = &v
10168	return s
10169}
10170
10171// SetDuration sets the Duration field's value.
10172func (s *DescribeReservedCacheNodesInput) SetDuration(v string) *DescribeReservedCacheNodesInput {
10173	s.Duration = &v
10174	return s
10175}
10176
10177// SetMarker sets the Marker field's value.
10178func (s *DescribeReservedCacheNodesInput) SetMarker(v string) *DescribeReservedCacheNodesInput {
10179	s.Marker = &v
10180	return s
10181}
10182
10183// SetMaxRecords sets the MaxRecords field's value.
10184func (s *DescribeReservedCacheNodesInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesInput {
10185	s.MaxRecords = &v
10186	return s
10187}
10188
10189// SetOfferingType sets the OfferingType field's value.
10190func (s *DescribeReservedCacheNodesInput) SetOfferingType(v string) *DescribeReservedCacheNodesInput {
10191	s.OfferingType = &v
10192	return s
10193}
10194
10195// SetProductDescription sets the ProductDescription field's value.
10196func (s *DescribeReservedCacheNodesInput) SetProductDescription(v string) *DescribeReservedCacheNodesInput {
10197	s.ProductDescription = &v
10198	return s
10199}
10200
10201// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
10202func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodeId(v string) *DescribeReservedCacheNodesInput {
10203	s.ReservedCacheNodeId = &v
10204	return s
10205}
10206
10207// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
10208func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesInput {
10209	s.ReservedCacheNodesOfferingId = &v
10210	return s
10211}
10212
10213// Represents the input of a DescribeReservedCacheNodesOfferings operation.
10214type DescribeReservedCacheNodesOfferingsInput struct {
10215	_ struct{} `type:"structure"`
10216
10217	// The cache node type filter value. Use this parameter to show only the available
10218	// offerings matching the specified cache node type.
10219	//
10220	// The following node types are supported by ElastiCache. Generally speaking,
10221	// the current generation types provide more memory and computational power
10222	// at lower cost when compared to their equivalent previous generation counterparts.
10223	//
10224	//    * General purpose: Current generation: M5 node types: cache.m5.large,
10225	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
10226	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
10227	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
10228	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
10229	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
10230	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
10231	//    cache.m3.2xlarge
10232	//
10233	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
10234	//    cache.c1.xlarge
10235	//
10236	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
10237	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
10238	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
10239	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
10240	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
10241	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
10242	//    cache.r3.8xlarge
10243	//
10244	// Additional node type info
10245	//
10246	//    * All current generation instance types are created in Amazon VPC by default.
10247	//
10248	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
10249	//
10250	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
10251	//
10252	//    * Redis configuration variables appendonly and appendfsync are not supported
10253	//    on Redis version 2.8.22 and later.
10254	CacheNodeType *string `type:"string"`
10255
10256	// Duration filter value, specified in years or seconds. Use this parameter
10257	// to show only reservations for a given duration.
10258	//
10259	// Valid Values: 1 | 3 | 31536000 | 94608000
10260	Duration *string `type:"string"`
10261
10262	// An optional marker returned from a prior request. Use this marker for pagination
10263	// of results from this operation. If this parameter is specified, the response
10264	// includes only records beyond the marker, up to the value specified by MaxRecords.
10265	Marker *string `type:"string"`
10266
10267	// The maximum number of records to include in the response. If more records
10268	// exist than the specified MaxRecords value, a marker is included in the response
10269	// so that the remaining results can be retrieved.
10270	//
10271	// Default: 100
10272	//
10273	// Constraints: minimum 20; maximum 100.
10274	MaxRecords *int64 `type:"integer"`
10275
10276	// The offering type filter value. Use this parameter to show only the available
10277	// offerings matching the specified offering type.
10278	//
10279	// Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
10280	OfferingType *string `type:"string"`
10281
10282	// The product description filter value. Use this parameter to show only the
10283	// available offerings matching the specified product description.
10284	ProductDescription *string `type:"string"`
10285
10286	// The offering identifier filter value. Use this parameter to show only the
10287	// available offering that matches the specified reservation identifier.
10288	//
10289	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
10290	ReservedCacheNodesOfferingId *string `type:"string"`
10291}
10292
10293// String returns the string representation
10294func (s DescribeReservedCacheNodesOfferingsInput) String() string {
10295	return awsutil.Prettify(s)
10296}
10297
10298// GoString returns the string representation
10299func (s DescribeReservedCacheNodesOfferingsInput) GoString() string {
10300	return s.String()
10301}
10302
10303// SetCacheNodeType sets the CacheNodeType field's value.
10304func (s *DescribeReservedCacheNodesOfferingsInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesOfferingsInput {
10305	s.CacheNodeType = &v
10306	return s
10307}
10308
10309// SetDuration sets the Duration field's value.
10310func (s *DescribeReservedCacheNodesOfferingsInput) SetDuration(v string) *DescribeReservedCacheNodesOfferingsInput {
10311	s.Duration = &v
10312	return s
10313}
10314
10315// SetMarker sets the Marker field's value.
10316func (s *DescribeReservedCacheNodesOfferingsInput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsInput {
10317	s.Marker = &v
10318	return s
10319}
10320
10321// SetMaxRecords sets the MaxRecords field's value.
10322func (s *DescribeReservedCacheNodesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesOfferingsInput {
10323	s.MaxRecords = &v
10324	return s
10325}
10326
10327// SetOfferingType sets the OfferingType field's value.
10328func (s *DescribeReservedCacheNodesOfferingsInput) SetOfferingType(v string) *DescribeReservedCacheNodesOfferingsInput {
10329	s.OfferingType = &v
10330	return s
10331}
10332
10333// SetProductDescription sets the ProductDescription field's value.
10334func (s *DescribeReservedCacheNodesOfferingsInput) SetProductDescription(v string) *DescribeReservedCacheNodesOfferingsInput {
10335	s.ProductDescription = &v
10336	return s
10337}
10338
10339// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
10340func (s *DescribeReservedCacheNodesOfferingsInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesOfferingsInput {
10341	s.ReservedCacheNodesOfferingId = &v
10342	return s
10343}
10344
10345// Represents the output of a DescribeReservedCacheNodesOfferings operation.
10346type DescribeReservedCacheNodesOfferingsOutput struct {
10347	_ struct{} `type:"structure"`
10348
10349	// Provides an identifier to allow retrieval of paginated results.
10350	Marker *string `type:"string"`
10351
10352	// A list of reserved cache node offerings. Each element in the list contains
10353	// detailed information about one offering.
10354	ReservedCacheNodesOfferings []*ReservedCacheNodesOffering `locationNameList:"ReservedCacheNodesOffering" type:"list"`
10355}
10356
10357// String returns the string representation
10358func (s DescribeReservedCacheNodesOfferingsOutput) String() string {
10359	return awsutil.Prettify(s)
10360}
10361
10362// GoString returns the string representation
10363func (s DescribeReservedCacheNodesOfferingsOutput) GoString() string {
10364	return s.String()
10365}
10366
10367// SetMarker sets the Marker field's value.
10368func (s *DescribeReservedCacheNodesOfferingsOutput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsOutput {
10369	s.Marker = &v
10370	return s
10371}
10372
10373// SetReservedCacheNodesOfferings sets the ReservedCacheNodesOfferings field's value.
10374func (s *DescribeReservedCacheNodesOfferingsOutput) SetReservedCacheNodesOfferings(v []*ReservedCacheNodesOffering) *DescribeReservedCacheNodesOfferingsOutput {
10375	s.ReservedCacheNodesOfferings = v
10376	return s
10377}
10378
10379// Represents the output of a DescribeReservedCacheNodes operation.
10380type DescribeReservedCacheNodesOutput struct {
10381	_ struct{} `type:"structure"`
10382
10383	// Provides an identifier to allow retrieval of paginated results.
10384	Marker *string `type:"string"`
10385
10386	// A list of reserved cache nodes. Each element in the list contains detailed
10387	// information about one node.
10388	ReservedCacheNodes []*ReservedCacheNode `locationNameList:"ReservedCacheNode" type:"list"`
10389}
10390
10391// String returns the string representation
10392func (s DescribeReservedCacheNodesOutput) String() string {
10393	return awsutil.Prettify(s)
10394}
10395
10396// GoString returns the string representation
10397func (s DescribeReservedCacheNodesOutput) GoString() string {
10398	return s.String()
10399}
10400
10401// SetMarker sets the Marker field's value.
10402func (s *DescribeReservedCacheNodesOutput) SetMarker(v string) *DescribeReservedCacheNodesOutput {
10403	s.Marker = &v
10404	return s
10405}
10406
10407// SetReservedCacheNodes sets the ReservedCacheNodes field's value.
10408func (s *DescribeReservedCacheNodesOutput) SetReservedCacheNodes(v []*ReservedCacheNode) *DescribeReservedCacheNodesOutput {
10409	s.ReservedCacheNodes = v
10410	return s
10411}
10412
10413type DescribeServiceUpdatesInput struct {
10414	_ struct{} `type:"structure"`
10415
10416	// An optional marker returned from a prior request. Use this marker for pagination
10417	// of results from this operation. If this parameter is specified, the response
10418	// includes only records beyond the marker, up to the value specified by MaxRecords.
10419	Marker *string `type:"string"`
10420
10421	// The maximum number of records to include in the response
10422	MaxRecords *int64 `type:"integer"`
10423
10424	// The unique ID of the service update
10425	ServiceUpdateName *string `type:"string"`
10426
10427	// The status of the service update
10428	ServiceUpdateStatus []*string `type:"list"`
10429}
10430
10431// String returns the string representation
10432func (s DescribeServiceUpdatesInput) String() string {
10433	return awsutil.Prettify(s)
10434}
10435
10436// GoString returns the string representation
10437func (s DescribeServiceUpdatesInput) GoString() string {
10438	return s.String()
10439}
10440
10441// SetMarker sets the Marker field's value.
10442func (s *DescribeServiceUpdatesInput) SetMarker(v string) *DescribeServiceUpdatesInput {
10443	s.Marker = &v
10444	return s
10445}
10446
10447// SetMaxRecords sets the MaxRecords field's value.
10448func (s *DescribeServiceUpdatesInput) SetMaxRecords(v int64) *DescribeServiceUpdatesInput {
10449	s.MaxRecords = &v
10450	return s
10451}
10452
10453// SetServiceUpdateName sets the ServiceUpdateName field's value.
10454func (s *DescribeServiceUpdatesInput) SetServiceUpdateName(v string) *DescribeServiceUpdatesInput {
10455	s.ServiceUpdateName = &v
10456	return s
10457}
10458
10459// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
10460func (s *DescribeServiceUpdatesInput) SetServiceUpdateStatus(v []*string) *DescribeServiceUpdatesInput {
10461	s.ServiceUpdateStatus = v
10462	return s
10463}
10464
10465type DescribeServiceUpdatesOutput struct {
10466	_ struct{} `type:"structure"`
10467
10468	// An optional marker returned from a prior request. Use this marker for pagination
10469	// of results from this operation. If this parameter is specified, the response
10470	// includes only records beyond the marker, up to the value specified by MaxRecords.
10471	Marker *string `type:"string"`
10472
10473	// A list of service updates
10474	ServiceUpdates []*ServiceUpdate `locationNameList:"ServiceUpdate" type:"list"`
10475}
10476
10477// String returns the string representation
10478func (s DescribeServiceUpdatesOutput) String() string {
10479	return awsutil.Prettify(s)
10480}
10481
10482// GoString returns the string representation
10483func (s DescribeServiceUpdatesOutput) GoString() string {
10484	return s.String()
10485}
10486
10487// SetMarker sets the Marker field's value.
10488func (s *DescribeServiceUpdatesOutput) SetMarker(v string) *DescribeServiceUpdatesOutput {
10489	s.Marker = &v
10490	return s
10491}
10492
10493// SetServiceUpdates sets the ServiceUpdates field's value.
10494func (s *DescribeServiceUpdatesOutput) SetServiceUpdates(v []*ServiceUpdate) *DescribeServiceUpdatesOutput {
10495	s.ServiceUpdates = v
10496	return s
10497}
10498
10499// Represents the input of a DescribeSnapshotsMessage operation.
10500type DescribeSnapshotsInput struct {
10501	_ struct{} `type:"structure"`
10502
10503	// A user-supplied cluster identifier. If this parameter is specified, only
10504	// snapshots associated with that specific cluster are described.
10505	CacheClusterId *string `type:"string"`
10506
10507	// An optional marker returned from a prior request. Use this marker for pagination
10508	// of results from this operation. If this parameter is specified, the response
10509	// includes only records beyond the marker, up to the value specified by MaxRecords.
10510	Marker *string `type:"string"`
10511
10512	// The maximum number of records to include in the response. If more records
10513	// exist than the specified MaxRecords value, a marker is included in the response
10514	// so that the remaining results can be retrieved.
10515	//
10516	// Default: 50
10517	//
10518	// Constraints: minimum 20; maximum 50.
10519	MaxRecords *int64 `type:"integer"`
10520
10521	// A user-supplied replication group identifier. If this parameter is specified,
10522	// only snapshots associated with that specific replication group are described.
10523	ReplicationGroupId *string `type:"string"`
10524
10525	// A Boolean value which if true, the node group (shard) configuration is included
10526	// in the snapshot description.
10527	ShowNodeGroupConfig *bool `type:"boolean"`
10528
10529	// A user-supplied name of the snapshot. If this parameter is specified, only
10530	// this snapshot are described.
10531	SnapshotName *string `type:"string"`
10532
10533	// If set to system, the output shows snapshots that were automatically created
10534	// by ElastiCache. If set to user the output shows snapshots that were manually
10535	// created. If omitted, the output shows both automatically and manually created
10536	// snapshots.
10537	SnapshotSource *string `type:"string"`
10538}
10539
10540// String returns the string representation
10541func (s DescribeSnapshotsInput) String() string {
10542	return awsutil.Prettify(s)
10543}
10544
10545// GoString returns the string representation
10546func (s DescribeSnapshotsInput) GoString() string {
10547	return s.String()
10548}
10549
10550// SetCacheClusterId sets the CacheClusterId field's value.
10551func (s *DescribeSnapshotsInput) SetCacheClusterId(v string) *DescribeSnapshotsInput {
10552	s.CacheClusterId = &v
10553	return s
10554}
10555
10556// SetMarker sets the Marker field's value.
10557func (s *DescribeSnapshotsInput) SetMarker(v string) *DescribeSnapshotsInput {
10558	s.Marker = &v
10559	return s
10560}
10561
10562// SetMaxRecords sets the MaxRecords field's value.
10563func (s *DescribeSnapshotsInput) SetMaxRecords(v int64) *DescribeSnapshotsInput {
10564	s.MaxRecords = &v
10565	return s
10566}
10567
10568// SetReplicationGroupId sets the ReplicationGroupId field's value.
10569func (s *DescribeSnapshotsInput) SetReplicationGroupId(v string) *DescribeSnapshotsInput {
10570	s.ReplicationGroupId = &v
10571	return s
10572}
10573
10574// SetShowNodeGroupConfig sets the ShowNodeGroupConfig field's value.
10575func (s *DescribeSnapshotsInput) SetShowNodeGroupConfig(v bool) *DescribeSnapshotsInput {
10576	s.ShowNodeGroupConfig = &v
10577	return s
10578}
10579
10580// SetSnapshotName sets the SnapshotName field's value.
10581func (s *DescribeSnapshotsInput) SetSnapshotName(v string) *DescribeSnapshotsInput {
10582	s.SnapshotName = &v
10583	return s
10584}
10585
10586// SetSnapshotSource sets the SnapshotSource field's value.
10587func (s *DescribeSnapshotsInput) SetSnapshotSource(v string) *DescribeSnapshotsInput {
10588	s.SnapshotSource = &v
10589	return s
10590}
10591
10592// Represents the output of a DescribeSnapshots operation.
10593type DescribeSnapshotsOutput struct {
10594	_ struct{} `type:"structure"`
10595
10596	// An optional marker returned from a prior request. Use this marker for pagination
10597	// of results from this operation. If this parameter is specified, the response
10598	// includes only records beyond the marker, up to the value specified by MaxRecords.
10599	Marker *string `type:"string"`
10600
10601	// A list of snapshots. Each item in the list contains detailed information
10602	// about one snapshot.
10603	Snapshots []*Snapshot `locationNameList:"Snapshot" type:"list"`
10604}
10605
10606// String returns the string representation
10607func (s DescribeSnapshotsOutput) String() string {
10608	return awsutil.Prettify(s)
10609}
10610
10611// GoString returns the string representation
10612func (s DescribeSnapshotsOutput) GoString() string {
10613	return s.String()
10614}
10615
10616// SetMarker sets the Marker field's value.
10617func (s *DescribeSnapshotsOutput) SetMarker(v string) *DescribeSnapshotsOutput {
10618	s.Marker = &v
10619	return s
10620}
10621
10622// SetSnapshots sets the Snapshots field's value.
10623func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput {
10624	s.Snapshots = v
10625	return s
10626}
10627
10628type DescribeUpdateActionsInput struct {
10629	_ struct{} `type:"structure"`
10630
10631	// The cache cluster IDs
10632	CacheClusterIds []*string `type:"list"`
10633
10634	// The Elasticache engine to which the update applies. Either Redis or Memcached
10635	Engine *string `type:"string"`
10636
10637	// An optional marker returned from a prior request. Use this marker for pagination
10638	// of results from this operation. If this parameter is specified, the response
10639	// includes only records beyond the marker, up to the value specified by MaxRecords.
10640	Marker *string `type:"string"`
10641
10642	// The maximum number of records to include in the response
10643	MaxRecords *int64 `type:"integer"`
10644
10645	// The replication group IDs
10646	ReplicationGroupIds []*string `type:"list"`
10647
10648	// The unique ID of the service update
10649	ServiceUpdateName *string `type:"string"`
10650
10651	// The status of the service update
10652	ServiceUpdateStatus []*string `type:"list"`
10653
10654	// The range of time specified to search for service updates that are in available
10655	// status
10656	ServiceUpdateTimeRange *TimeRangeFilter `type:"structure"`
10657
10658	// Dictates whether to include node level update status in the response
10659	ShowNodeLevelUpdateStatus *bool `type:"boolean"`
10660
10661	// The status of the update action.
10662	UpdateActionStatus []*string `type:"list"`
10663}
10664
10665// String returns the string representation
10666func (s DescribeUpdateActionsInput) String() string {
10667	return awsutil.Prettify(s)
10668}
10669
10670// GoString returns the string representation
10671func (s DescribeUpdateActionsInput) GoString() string {
10672	return s.String()
10673}
10674
10675// SetCacheClusterIds sets the CacheClusterIds field's value.
10676func (s *DescribeUpdateActionsInput) SetCacheClusterIds(v []*string) *DescribeUpdateActionsInput {
10677	s.CacheClusterIds = v
10678	return s
10679}
10680
10681// SetEngine sets the Engine field's value.
10682func (s *DescribeUpdateActionsInput) SetEngine(v string) *DescribeUpdateActionsInput {
10683	s.Engine = &v
10684	return s
10685}
10686
10687// SetMarker sets the Marker field's value.
10688func (s *DescribeUpdateActionsInput) SetMarker(v string) *DescribeUpdateActionsInput {
10689	s.Marker = &v
10690	return s
10691}
10692
10693// SetMaxRecords sets the MaxRecords field's value.
10694func (s *DescribeUpdateActionsInput) SetMaxRecords(v int64) *DescribeUpdateActionsInput {
10695	s.MaxRecords = &v
10696	return s
10697}
10698
10699// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
10700func (s *DescribeUpdateActionsInput) SetReplicationGroupIds(v []*string) *DescribeUpdateActionsInput {
10701	s.ReplicationGroupIds = v
10702	return s
10703}
10704
10705// SetServiceUpdateName sets the ServiceUpdateName field's value.
10706func (s *DescribeUpdateActionsInput) SetServiceUpdateName(v string) *DescribeUpdateActionsInput {
10707	s.ServiceUpdateName = &v
10708	return s
10709}
10710
10711// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
10712func (s *DescribeUpdateActionsInput) SetServiceUpdateStatus(v []*string) *DescribeUpdateActionsInput {
10713	s.ServiceUpdateStatus = v
10714	return s
10715}
10716
10717// SetServiceUpdateTimeRange sets the ServiceUpdateTimeRange field's value.
10718func (s *DescribeUpdateActionsInput) SetServiceUpdateTimeRange(v *TimeRangeFilter) *DescribeUpdateActionsInput {
10719	s.ServiceUpdateTimeRange = v
10720	return s
10721}
10722
10723// SetShowNodeLevelUpdateStatus sets the ShowNodeLevelUpdateStatus field's value.
10724func (s *DescribeUpdateActionsInput) SetShowNodeLevelUpdateStatus(v bool) *DescribeUpdateActionsInput {
10725	s.ShowNodeLevelUpdateStatus = &v
10726	return s
10727}
10728
10729// SetUpdateActionStatus sets the UpdateActionStatus field's value.
10730func (s *DescribeUpdateActionsInput) SetUpdateActionStatus(v []*string) *DescribeUpdateActionsInput {
10731	s.UpdateActionStatus = v
10732	return s
10733}
10734
10735type DescribeUpdateActionsOutput struct {
10736	_ struct{} `type:"structure"`
10737
10738	// An optional marker returned from a prior request. Use this marker for pagination
10739	// of results from this operation. If this parameter is specified, the response
10740	// includes only records beyond the marker, up to the value specified by MaxRecords.
10741	Marker *string `type:"string"`
10742
10743	// Returns a list of update actions
10744	UpdateActions []*UpdateAction `locationNameList:"UpdateAction" type:"list"`
10745}
10746
10747// String returns the string representation
10748func (s DescribeUpdateActionsOutput) String() string {
10749	return awsutil.Prettify(s)
10750}
10751
10752// GoString returns the string representation
10753func (s DescribeUpdateActionsOutput) GoString() string {
10754	return s.String()
10755}
10756
10757// SetMarker sets the Marker field's value.
10758func (s *DescribeUpdateActionsOutput) SetMarker(v string) *DescribeUpdateActionsOutput {
10759	s.Marker = &v
10760	return s
10761}
10762
10763// SetUpdateActions sets the UpdateActions field's value.
10764func (s *DescribeUpdateActionsOutput) SetUpdateActions(v []*UpdateAction) *DescribeUpdateActionsOutput {
10765	s.UpdateActions = v
10766	return s
10767}
10768
10769// Provides ownership and status information for an Amazon EC2 security group.
10770type EC2SecurityGroup struct {
10771	_ struct{} `type:"structure"`
10772
10773	// The name of the Amazon EC2 security group.
10774	EC2SecurityGroupName *string `type:"string"`
10775
10776	// The AWS account ID of the Amazon EC2 security group owner.
10777	EC2SecurityGroupOwnerId *string `type:"string"`
10778
10779	// The status of the Amazon EC2 security group.
10780	Status *string `type:"string"`
10781}
10782
10783// String returns the string representation
10784func (s EC2SecurityGroup) String() string {
10785	return awsutil.Prettify(s)
10786}
10787
10788// GoString returns the string representation
10789func (s EC2SecurityGroup) GoString() string {
10790	return s.String()
10791}
10792
10793// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
10794func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
10795	s.EC2SecurityGroupName = &v
10796	return s
10797}
10798
10799// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
10800func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
10801	s.EC2SecurityGroupOwnerId = &v
10802	return s
10803}
10804
10805// SetStatus sets the Status field's value.
10806func (s *EC2SecurityGroup) SetStatus(v string) *EC2SecurityGroup {
10807	s.Status = &v
10808	return s
10809}
10810
10811// Represents the information required for client programs to connect to a cache
10812// node.
10813type Endpoint struct {
10814	_ struct{} `type:"structure"`
10815
10816	// The DNS hostname of the cache node.
10817	Address *string `type:"string"`
10818
10819	// The port number that the cache engine is listening on.
10820	Port *int64 `type:"integer"`
10821}
10822
10823// String returns the string representation
10824func (s Endpoint) String() string {
10825	return awsutil.Prettify(s)
10826}
10827
10828// GoString returns the string representation
10829func (s Endpoint) GoString() string {
10830	return s.String()
10831}
10832
10833// SetAddress sets the Address field's value.
10834func (s *Endpoint) SetAddress(v string) *Endpoint {
10835	s.Address = &v
10836	return s
10837}
10838
10839// SetPort sets the Port field's value.
10840func (s *Endpoint) SetPort(v int64) *Endpoint {
10841	s.Port = &v
10842	return s
10843}
10844
10845// Represents the output of a DescribeEngineDefaultParameters operation.
10846type EngineDefaults struct {
10847	_ struct{} `type:"structure"`
10848
10849	// A list of parameters specific to a particular cache node type. Each element
10850	// in the list contains detailed information about one parameter.
10851	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
10852
10853	// Specifies the name of the cache parameter group family to which the engine
10854	// default parameters apply.
10855	//
10856	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
10857	// | redis4.0 | redis5.0 |
10858	CacheParameterGroupFamily *string `type:"string"`
10859
10860	// Provides an identifier to allow retrieval of paginated results.
10861	Marker *string `type:"string"`
10862
10863	// Contains a list of engine default parameters.
10864	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
10865}
10866
10867// String returns the string representation
10868func (s EngineDefaults) String() string {
10869	return awsutil.Prettify(s)
10870}
10871
10872// GoString returns the string representation
10873func (s EngineDefaults) GoString() string {
10874	return s.String()
10875}
10876
10877// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
10878func (s *EngineDefaults) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *EngineDefaults {
10879	s.CacheNodeTypeSpecificParameters = v
10880	return s
10881}
10882
10883// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
10884func (s *EngineDefaults) SetCacheParameterGroupFamily(v string) *EngineDefaults {
10885	s.CacheParameterGroupFamily = &v
10886	return s
10887}
10888
10889// SetMarker sets the Marker field's value.
10890func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
10891	s.Marker = &v
10892	return s
10893}
10894
10895// SetParameters sets the Parameters field's value.
10896func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
10897	s.Parameters = v
10898	return s
10899}
10900
10901// Represents a single occurrence of something interesting within the system.
10902// Some examples of events are creating a cluster, adding or removing a cache
10903// node, or rebooting a node.
10904type Event struct {
10905	_ struct{} `type:"structure"`
10906
10907	// The date and time when the event occurred.
10908	Date *time.Time `type:"timestamp"`
10909
10910	// The text of the event.
10911	Message *string `type:"string"`
10912
10913	// The identifier for the source of the event. For example, if the event occurred
10914	// at the cluster level, the identifier would be the name of the cluster.
10915	SourceIdentifier *string `type:"string"`
10916
10917	// Specifies the origin of this event - a cluster, a parameter group, a security
10918	// group, etc.
10919	SourceType *string `type:"string" enum:"SourceType"`
10920}
10921
10922// String returns the string representation
10923func (s Event) String() string {
10924	return awsutil.Prettify(s)
10925}
10926
10927// GoString returns the string representation
10928func (s Event) GoString() string {
10929	return s.String()
10930}
10931
10932// SetDate sets the Date field's value.
10933func (s *Event) SetDate(v time.Time) *Event {
10934	s.Date = &v
10935	return s
10936}
10937
10938// SetMessage sets the Message field's value.
10939func (s *Event) SetMessage(v string) *Event {
10940	s.Message = &v
10941	return s
10942}
10943
10944// SetSourceIdentifier sets the SourceIdentifier field's value.
10945func (s *Event) SetSourceIdentifier(v string) *Event {
10946	s.SourceIdentifier = &v
10947	return s
10948}
10949
10950// SetSourceType sets the SourceType field's value.
10951func (s *Event) SetSourceType(v string) *Event {
10952	s.SourceType = &v
10953	return s
10954}
10955
10956type IncreaseReplicaCountInput struct {
10957	_ struct{} `type:"structure"`
10958
10959	// If True, the number of replica nodes is increased immediately. ApplyImmediately=False
10960	// is not currently supported.
10961	//
10962	// ApplyImmediately is a required field
10963	ApplyImmediately *bool `type:"boolean" required:"true"`
10964
10965	// The number of read replica nodes you want at the completion of this operation.
10966	// For Redis (cluster mode disabled) replication groups, this is the number
10967	// of replica nodes in the replication group. For Redis (cluster mode enabled)
10968	// replication groups, this is the number of replica nodes in each of the replication
10969	// group's node groups.
10970	NewReplicaCount *int64 `type:"integer"`
10971
10972	// A list of ConfigureShard objects that can be used to configure each shard
10973	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
10974	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
10975	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
10976
10977	// The id of the replication group to which you want to add replica nodes.
10978	//
10979	// ReplicationGroupId is a required field
10980	ReplicationGroupId *string `type:"string" required:"true"`
10981}
10982
10983// String returns the string representation
10984func (s IncreaseReplicaCountInput) String() string {
10985	return awsutil.Prettify(s)
10986}
10987
10988// GoString returns the string representation
10989func (s IncreaseReplicaCountInput) GoString() string {
10990	return s.String()
10991}
10992
10993// Validate inspects the fields of the type to determine if they are valid.
10994func (s *IncreaseReplicaCountInput) Validate() error {
10995	invalidParams := request.ErrInvalidParams{Context: "IncreaseReplicaCountInput"}
10996	if s.ApplyImmediately == nil {
10997		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
10998	}
10999	if s.ReplicationGroupId == nil {
11000		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
11001	}
11002	if s.ReplicaConfiguration != nil {
11003		for i, v := range s.ReplicaConfiguration {
11004			if v == nil {
11005				continue
11006			}
11007			if err := v.Validate(); err != nil {
11008				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
11009			}
11010		}
11011	}
11012
11013	if invalidParams.Len() > 0 {
11014		return invalidParams
11015	}
11016	return nil
11017}
11018
11019// SetApplyImmediately sets the ApplyImmediately field's value.
11020func (s *IncreaseReplicaCountInput) SetApplyImmediately(v bool) *IncreaseReplicaCountInput {
11021	s.ApplyImmediately = &v
11022	return s
11023}
11024
11025// SetNewReplicaCount sets the NewReplicaCount field's value.
11026func (s *IncreaseReplicaCountInput) SetNewReplicaCount(v int64) *IncreaseReplicaCountInput {
11027	s.NewReplicaCount = &v
11028	return s
11029}
11030
11031// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
11032func (s *IncreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *IncreaseReplicaCountInput {
11033	s.ReplicaConfiguration = v
11034	return s
11035}
11036
11037// SetReplicationGroupId sets the ReplicationGroupId field's value.
11038func (s *IncreaseReplicaCountInput) SetReplicationGroupId(v string) *IncreaseReplicaCountInput {
11039	s.ReplicationGroupId = &v
11040	return s
11041}
11042
11043type IncreaseReplicaCountOutput struct {
11044	_ struct{} `type:"structure"`
11045
11046	// Contains all of the attributes of a specific Redis replication group.
11047	ReplicationGroup *ReplicationGroup `type:"structure"`
11048}
11049
11050// String returns the string representation
11051func (s IncreaseReplicaCountOutput) String() string {
11052	return awsutil.Prettify(s)
11053}
11054
11055// GoString returns the string representation
11056func (s IncreaseReplicaCountOutput) GoString() string {
11057	return s.String()
11058}
11059
11060// SetReplicationGroup sets the ReplicationGroup field's value.
11061func (s *IncreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *IncreaseReplicaCountOutput {
11062	s.ReplicationGroup = v
11063	return s
11064}
11065
11066// The input parameters for the ListAllowedNodeTypeModifications operation.
11067type ListAllowedNodeTypeModificationsInput struct {
11068	_ struct{} `type:"structure"`
11069
11070	// The name of the cluster you want to scale up to a larger node instanced type.
11071	// ElastiCache uses the cluster id to identify the current node type of this
11072	// cluster and from that to create a list of node types you can scale up to.
11073	//
11074	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
11075	CacheClusterId *string `type:"string"`
11076
11077	// The name of the replication group want to scale up to a larger node type.
11078	// ElastiCache uses the replication group id to identify the current node type
11079	// being used by this replication group, and from that to create a list of node
11080	// types you can scale up to.
11081	//
11082	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
11083	ReplicationGroupId *string `type:"string"`
11084}
11085
11086// String returns the string representation
11087func (s ListAllowedNodeTypeModificationsInput) String() string {
11088	return awsutil.Prettify(s)
11089}
11090
11091// GoString returns the string representation
11092func (s ListAllowedNodeTypeModificationsInput) GoString() string {
11093	return s.String()
11094}
11095
11096// SetCacheClusterId sets the CacheClusterId field's value.
11097func (s *ListAllowedNodeTypeModificationsInput) SetCacheClusterId(v string) *ListAllowedNodeTypeModificationsInput {
11098	s.CacheClusterId = &v
11099	return s
11100}
11101
11102// SetReplicationGroupId sets the ReplicationGroupId field's value.
11103func (s *ListAllowedNodeTypeModificationsInput) SetReplicationGroupId(v string) *ListAllowedNodeTypeModificationsInput {
11104	s.ReplicationGroupId = &v
11105	return s
11106}
11107
11108// Represents the allowed node types you can use to modify your cluster or replication
11109// group.
11110type ListAllowedNodeTypeModificationsOutput struct {
11111	_ struct{} `type:"structure"`
11112
11113	// A string list, each element of which specifies a cache node type which you
11114	// can use to scale your cluster or replication group.
11115	//
11116	// When scaling down on a Redis cluster or replication group using ModifyCacheCluster
11117	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
11118	// parameter.
11119	ScaleDownModifications []*string `type:"list"`
11120
11121	// A string list, each element of which specifies a cache node type which you
11122	// can use to scale your cluster or replication group.
11123	//
11124	// When scaling up a Redis cluster or replication group using ModifyCacheCluster
11125	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
11126	// parameter.
11127	ScaleUpModifications []*string `type:"list"`
11128}
11129
11130// String returns the string representation
11131func (s ListAllowedNodeTypeModificationsOutput) String() string {
11132	return awsutil.Prettify(s)
11133}
11134
11135// GoString returns the string representation
11136func (s ListAllowedNodeTypeModificationsOutput) GoString() string {
11137	return s.String()
11138}
11139
11140// SetScaleDownModifications sets the ScaleDownModifications field's value.
11141func (s *ListAllowedNodeTypeModificationsOutput) SetScaleDownModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
11142	s.ScaleDownModifications = v
11143	return s
11144}
11145
11146// SetScaleUpModifications sets the ScaleUpModifications field's value.
11147func (s *ListAllowedNodeTypeModificationsOutput) SetScaleUpModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
11148	s.ScaleUpModifications = v
11149	return s
11150}
11151
11152// The input parameters for the ListTagsForResource operation.
11153type ListTagsForResourceInput struct {
11154	_ struct{} `type:"structure"`
11155
11156	// The Amazon Resource Name (ARN) of the resource for which you want the list
11157	// of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
11158	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
11159	//
11160	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
11161	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
11162	//
11163	// ResourceName is a required field
11164	ResourceName *string `type:"string" required:"true"`
11165}
11166
11167// String returns the string representation
11168func (s ListTagsForResourceInput) String() string {
11169	return awsutil.Prettify(s)
11170}
11171
11172// GoString returns the string representation
11173func (s ListTagsForResourceInput) GoString() string {
11174	return s.String()
11175}
11176
11177// Validate inspects the fields of the type to determine if they are valid.
11178func (s *ListTagsForResourceInput) Validate() error {
11179	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
11180	if s.ResourceName == nil {
11181		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
11182	}
11183
11184	if invalidParams.Len() > 0 {
11185		return invalidParams
11186	}
11187	return nil
11188}
11189
11190// SetResourceName sets the ResourceName field's value.
11191func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
11192	s.ResourceName = &v
11193	return s
11194}
11195
11196// Represents the input of a ModifyCacheCluster operation.
11197type ModifyCacheClusterInput struct {
11198	_ struct{} `type:"structure"`
11199
11200	// Specifies whether the new nodes in this Memcached cluster are all created
11201	// in a single Availability Zone or created across multiple Availability Zones.
11202	//
11203	// Valid values: single-az | cross-az.
11204	//
11205	// This option is only supported for Memcached clusters.
11206	//
11207	// You cannot specify single-az if the Memcached cluster already has cache nodes
11208	// in different Availability Zones. If cross-az is specified, existing Memcached
11209	// nodes remain in their current Availability Zone.
11210	//
11211	// Only newly created nodes are located in different Availability Zones.
11212	AZMode *string `type:"string" enum:"AZMode"`
11213
11214	// If true, this parameter causes the modifications in this request and any
11215	// pending modifications to be applied, asynchronously and as soon as possible,
11216	// regardless of the PreferredMaintenanceWindow setting for the cluster.
11217	//
11218	// If false, changes to the cluster are applied on the next maintenance reboot,
11219	// or the next failure reboot, whichever occurs first.
11220	//
11221	// If you perform a ModifyCacheCluster before a pending modification is applied,
11222	// the pending modification is replaced by the newer modification.
11223	//
11224	// Valid values: true | false
11225	//
11226	// Default: false
11227	ApplyImmediately *bool `type:"boolean"`
11228
11229	// Reserved parameter. The password used to access a password protected server.
11230	// This parameter must be specified with the auth-token-update parameter. Password
11231	// constraints:
11232	//
11233	//    * Must be only printable ASCII characters
11234	//
11235	//    * Must be at least 16 characters and no more than 128 characters in length
11236	//
11237	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
11238	//
11239	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
11240	AuthToken *string `type:"string"`
11241
11242	// Specifies the strategy to use to update the AUTH token. This parameter must
11243	// be specified with the auth-token parameter. Possible values:
11244	//
11245	//    * Rotate
11246	//
11247	//    * Set
11248	//
11249	// For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
11250	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
11251
11252	// This parameter is currently disabled.
11253	AutoMinorVersionUpgrade *bool `type:"boolean"`
11254
11255	// The cluster identifier. This value is stored as a lowercase string.
11256	//
11257	// CacheClusterId is a required field
11258	CacheClusterId *string `type:"string" required:"true"`
11259
11260	// A list of cache node IDs to be removed. A node ID is a numeric identifier
11261	// (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less
11262	// than the existing number of cache nodes. The number of cache node IDs supplied
11263	// in this parameter must match the difference between the existing number of
11264	// cache nodes in the cluster or pending cache nodes, whichever is greater,
11265	// and the value of NumCacheNodes in the request.
11266	//
11267	// For example: If you have 3 active cache nodes, 7 pending cache nodes, and
11268	// the number of cache nodes in this ModifyCacheCluster call is 5, you must
11269	// list 2 (7 - 5) cache node IDs to remove.
11270	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
11271
11272	// A valid cache node type that you want to scale this cluster up to.
11273	CacheNodeType *string `type:"string"`
11274
11275	// The name of the cache parameter group to apply to this cluster. This change
11276	// is asynchronously applied as soon as possible for parameters when the ApplyImmediately
11277	// parameter is specified as true for this request.
11278	CacheParameterGroupName *string `type:"string"`
11279
11280	// A list of cache security group names to authorize on this cluster. This change
11281	// is asynchronously applied as soon as possible.
11282	//
11283	// You can use this parameter only with clusters that are created outside of
11284	// an Amazon Virtual Private Cloud (Amazon VPC).
11285	//
11286	// Constraints: Must contain no more than 255 alphanumeric characters. Must
11287	// not be "Default".
11288	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
11289
11290	// The upgraded version of the cache engine to be run on the cache nodes.
11291	//
11292	// Important: You can upgrade to a newer engine version (see Selecting a Cache
11293	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
11294	// but you cannot downgrade to an earlier engine version. If you want to use
11295	// an earlier engine version, you must delete the existing cluster and create
11296	// it anew with the earlier engine version.
11297	EngineVersion *string `type:"string"`
11298
11299	// The list of Availability Zones where the new Memcached cache nodes are created.
11300	//
11301	// This parameter is only valid when NumCacheNodes in the request is greater
11302	// than the sum of the number of active cache nodes and the number of cache
11303	// nodes pending creation (which may be zero). The number of Availability Zones
11304	// supplied in this list must match the cache nodes being added in this request.
11305	//
11306	// This option is only supported on Memcached clusters.
11307	//
11308	// Scenarios:
11309	//
11310	//    * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
11311	//    NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones
11312	//    for the two new nodes.
11313	//
11314	//    * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from
11315	//    the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6
11316	//    ((3 + 2) + 1) and optionally specify an Availability Zone for the new
11317	//    node.
11318	//
11319	//    * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3
11320	//    to cancel all pending operations.
11321	//
11322	// The Availability Zone placement of nodes pending creation cannot be modified.
11323	// If you wish to cancel any nodes pending creation, add 0 nodes by setting
11324	// NumCacheNodes to the number of current nodes.
11325	//
11326	// If cross-az is specified, existing Memcached nodes remain in their current
11327	// Availability Zone. Only newly created nodes can be located in different Availability
11328	// Zones. For guidance on how to move existing Memcached nodes to different
11329	// Availability Zones, see the Availability Zone Considerations section of Cache
11330	// Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
11331	//
11332	// Impact of new add/remove requests upon pending requests
11333	//
11334	//    * Scenario-1 Pending Action: Delete New Request: Delete Result: The new
11335	//    delete, pending or immediate, replaces the pending delete.
11336	//
11337	//    * Scenario-2 Pending Action: Delete New Request: Create Result: The new
11338	//    create, pending or immediate, replaces the pending delete.
11339	//
11340	//    * Scenario-3 Pending Action: Create New Request: Delete Result: The new
11341	//    delete, pending or immediate, replaces the pending create.
11342	//
11343	//    * Scenario-4 Pending Action: Create New Request: Create Result: The new
11344	//    create is added to the pending create. Important: If the new create request
11345	//    is Apply Immediately - Yes, all creates are performed immediately. If
11346	//    the new create request is Apply Immediately - No, all creates are pending.
11347	NewAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
11348
11349	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
11350	// are sent.
11351	//
11352	// The Amazon SNS topic owner must be same as the cluster owner.
11353	NotificationTopicArn *string `type:"string"`
11354
11355	// The status of the Amazon SNS notification topic. Notifications are sent only
11356	// if the status is active.
11357	//
11358	// Valid values: active | inactive
11359	NotificationTopicStatus *string `type:"string"`
11360
11361	// The number of cache nodes that the cluster should have. If the value for
11362	// NumCacheNodes is greater than the sum of the number of current cache nodes
11363	// and the number of cache nodes pending creation (which may be zero), more
11364	// nodes are added. If the value is less than the number of existing cache nodes,
11365	// nodes are removed. If the value is equal to the number of current cache nodes,
11366	// any pending add or remove requests are canceled.
11367	//
11368	// If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter
11369	// to provide the IDs of the specific cache nodes to remove.
11370	//
11371	// For clusters running Redis, this value must be 1. For clusters running Memcached,
11372	// this value must be between 1 and 20.
11373	//
11374	// Adding or removing Memcached cache nodes can be applied immediately or as
11375	// a pending operation (see ApplyImmediately).
11376	//
11377	// A pending operation to modify the number of cache nodes in a cluster during
11378	// its maintenance window, whether by adding or removing nodes in accordance
11379	// with the scale out architecture, is not queued. The customer's latest request
11380	// to add or remove nodes to the cluster overrides any previous pending operations
11381	// to modify the number of cache nodes in the cluster. For example, a request
11382	// to remove 2 nodes would override a previous pending operation to remove 3
11383	// nodes. Similarly, a request to add 2 nodes would override a previous pending
11384	// operation to remove 3 nodes and vice versa. As Memcached cache nodes may
11385	// now be provisioned in different Availability Zones with flexible cache node
11386	// placement, a request to add nodes does not automatically override a previous
11387	// pending operation to add nodes. The customer can modify the previous pending
11388	// operation to add more nodes or explicitly cancel the pending request and
11389	// retry the new request. To cancel pending operations to modify the number
11390	// of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes
11391	// equal to the number of cache nodes currently in the cluster.
11392	NumCacheNodes *int64 `type:"integer"`
11393
11394	// Specifies the weekly time range during which maintenance on the cluster is
11395	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
11396	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
11397	//
11398	// Valid values for ddd are:
11399	//
11400	//    * sun
11401	//
11402	//    * mon
11403	//
11404	//    * tue
11405	//
11406	//    * wed
11407	//
11408	//    * thu
11409	//
11410	//    * fri
11411	//
11412	//    * sat
11413	//
11414	// Example: sun:23:00-mon:01:30
11415	PreferredMaintenanceWindow *string `type:"string"`
11416
11417	// Specifies the VPC Security Groups associated with the cluster.
11418	//
11419	// This parameter can be used only with clusters that are created in an Amazon
11420	// Virtual Private Cloud (Amazon VPC).
11421	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
11422
11423	// The number of days for which ElastiCache retains automatic cluster snapshots
11424	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
11425	// a snapshot that was taken today is retained for 5 days before being deleted.
11426	//
11427	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
11428	// off.
11429	SnapshotRetentionLimit *int64 `type:"integer"`
11430
11431	// The daily time range (in UTC) during which ElastiCache begins taking a daily
11432	// snapshot of your cluster.
11433	SnapshotWindow *string `type:"string"`
11434}
11435
11436// String returns the string representation
11437func (s ModifyCacheClusterInput) String() string {
11438	return awsutil.Prettify(s)
11439}
11440
11441// GoString returns the string representation
11442func (s ModifyCacheClusterInput) GoString() string {
11443	return s.String()
11444}
11445
11446// Validate inspects the fields of the type to determine if they are valid.
11447func (s *ModifyCacheClusterInput) Validate() error {
11448	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheClusterInput"}
11449	if s.CacheClusterId == nil {
11450		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
11451	}
11452
11453	if invalidParams.Len() > 0 {
11454		return invalidParams
11455	}
11456	return nil
11457}
11458
11459// SetAZMode sets the AZMode field's value.
11460func (s *ModifyCacheClusterInput) SetAZMode(v string) *ModifyCacheClusterInput {
11461	s.AZMode = &v
11462	return s
11463}
11464
11465// SetApplyImmediately sets the ApplyImmediately field's value.
11466func (s *ModifyCacheClusterInput) SetApplyImmediately(v bool) *ModifyCacheClusterInput {
11467	s.ApplyImmediately = &v
11468	return s
11469}
11470
11471// SetAuthToken sets the AuthToken field's value.
11472func (s *ModifyCacheClusterInput) SetAuthToken(v string) *ModifyCacheClusterInput {
11473	s.AuthToken = &v
11474	return s
11475}
11476
11477// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
11478func (s *ModifyCacheClusterInput) SetAuthTokenUpdateStrategy(v string) *ModifyCacheClusterInput {
11479	s.AuthTokenUpdateStrategy = &v
11480	return s
11481}
11482
11483// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
11484func (s *ModifyCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyCacheClusterInput {
11485	s.AutoMinorVersionUpgrade = &v
11486	return s
11487}
11488
11489// SetCacheClusterId sets the CacheClusterId field's value.
11490func (s *ModifyCacheClusterInput) SetCacheClusterId(v string) *ModifyCacheClusterInput {
11491	s.CacheClusterId = &v
11492	return s
11493}
11494
11495// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
11496func (s *ModifyCacheClusterInput) SetCacheNodeIdsToRemove(v []*string) *ModifyCacheClusterInput {
11497	s.CacheNodeIdsToRemove = v
11498	return s
11499}
11500
11501// SetCacheNodeType sets the CacheNodeType field's value.
11502func (s *ModifyCacheClusterInput) SetCacheNodeType(v string) *ModifyCacheClusterInput {
11503	s.CacheNodeType = &v
11504	return s
11505}
11506
11507// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
11508func (s *ModifyCacheClusterInput) SetCacheParameterGroupName(v string) *ModifyCacheClusterInput {
11509	s.CacheParameterGroupName = &v
11510	return s
11511}
11512
11513// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
11514func (s *ModifyCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *ModifyCacheClusterInput {
11515	s.CacheSecurityGroupNames = v
11516	return s
11517}
11518
11519// SetEngineVersion sets the EngineVersion field's value.
11520func (s *ModifyCacheClusterInput) SetEngineVersion(v string) *ModifyCacheClusterInput {
11521	s.EngineVersion = &v
11522	return s
11523}
11524
11525// SetNewAvailabilityZones sets the NewAvailabilityZones field's value.
11526func (s *ModifyCacheClusterInput) SetNewAvailabilityZones(v []*string) *ModifyCacheClusterInput {
11527	s.NewAvailabilityZones = v
11528	return s
11529}
11530
11531// SetNotificationTopicArn sets the NotificationTopicArn field's value.
11532func (s *ModifyCacheClusterInput) SetNotificationTopicArn(v string) *ModifyCacheClusterInput {
11533	s.NotificationTopicArn = &v
11534	return s
11535}
11536
11537// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
11538func (s *ModifyCacheClusterInput) SetNotificationTopicStatus(v string) *ModifyCacheClusterInput {
11539	s.NotificationTopicStatus = &v
11540	return s
11541}
11542
11543// SetNumCacheNodes sets the NumCacheNodes field's value.
11544func (s *ModifyCacheClusterInput) SetNumCacheNodes(v int64) *ModifyCacheClusterInput {
11545	s.NumCacheNodes = &v
11546	return s
11547}
11548
11549// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
11550func (s *ModifyCacheClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyCacheClusterInput {
11551	s.PreferredMaintenanceWindow = &v
11552	return s
11553}
11554
11555// SetSecurityGroupIds sets the SecurityGroupIds field's value.
11556func (s *ModifyCacheClusterInput) SetSecurityGroupIds(v []*string) *ModifyCacheClusterInput {
11557	s.SecurityGroupIds = v
11558	return s
11559}
11560
11561// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
11562func (s *ModifyCacheClusterInput) SetSnapshotRetentionLimit(v int64) *ModifyCacheClusterInput {
11563	s.SnapshotRetentionLimit = &v
11564	return s
11565}
11566
11567// SetSnapshotWindow sets the SnapshotWindow field's value.
11568func (s *ModifyCacheClusterInput) SetSnapshotWindow(v string) *ModifyCacheClusterInput {
11569	s.SnapshotWindow = &v
11570	return s
11571}
11572
11573type ModifyCacheClusterOutput struct {
11574	_ struct{} `type:"structure"`
11575
11576	// Contains all of the attributes of a specific cluster.
11577	CacheCluster *CacheCluster `type:"structure"`
11578}
11579
11580// String returns the string representation
11581func (s ModifyCacheClusterOutput) String() string {
11582	return awsutil.Prettify(s)
11583}
11584
11585// GoString returns the string representation
11586func (s ModifyCacheClusterOutput) GoString() string {
11587	return s.String()
11588}
11589
11590// SetCacheCluster sets the CacheCluster field's value.
11591func (s *ModifyCacheClusterOutput) SetCacheCluster(v *CacheCluster) *ModifyCacheClusterOutput {
11592	s.CacheCluster = v
11593	return s
11594}
11595
11596// Represents the input of a ModifyCacheParameterGroup operation.
11597type ModifyCacheParameterGroupInput struct {
11598	_ struct{} `type:"structure"`
11599
11600	// The name of the cache parameter group to modify.
11601	//
11602	// CacheParameterGroupName is a required field
11603	CacheParameterGroupName *string `type:"string" required:"true"`
11604
11605	// An array of parameter names and values for the parameter update. You must
11606	// supply at least one parameter name and value; subsequent arguments are optional.
11607	// A maximum of 20 parameters may be modified per request.
11608	//
11609	// ParameterNameValues is a required field
11610	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"`
11611}
11612
11613// String returns the string representation
11614func (s ModifyCacheParameterGroupInput) String() string {
11615	return awsutil.Prettify(s)
11616}
11617
11618// GoString returns the string representation
11619func (s ModifyCacheParameterGroupInput) GoString() string {
11620	return s.String()
11621}
11622
11623// Validate inspects the fields of the type to determine if they are valid.
11624func (s *ModifyCacheParameterGroupInput) Validate() error {
11625	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheParameterGroupInput"}
11626	if s.CacheParameterGroupName == nil {
11627		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
11628	}
11629	if s.ParameterNameValues == nil {
11630		invalidParams.Add(request.NewErrParamRequired("ParameterNameValues"))
11631	}
11632
11633	if invalidParams.Len() > 0 {
11634		return invalidParams
11635	}
11636	return nil
11637}
11638
11639// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
11640func (s *ModifyCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ModifyCacheParameterGroupInput {
11641	s.CacheParameterGroupName = &v
11642	return s
11643}
11644
11645// SetParameterNameValues sets the ParameterNameValues field's value.
11646func (s *ModifyCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ModifyCacheParameterGroupInput {
11647	s.ParameterNameValues = v
11648	return s
11649}
11650
11651// Represents the input of a ModifyCacheSubnetGroup operation.
11652type ModifyCacheSubnetGroupInput struct {
11653	_ struct{} `type:"structure"`
11654
11655	// A description of the cache subnet group.
11656	CacheSubnetGroupDescription *string `type:"string"`
11657
11658	// The name for the cache subnet group. This value is stored as a lowercase
11659	// string.
11660	//
11661	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
11662	//
11663	// Example: mysubnetgroup
11664	//
11665	// CacheSubnetGroupName is a required field
11666	CacheSubnetGroupName *string `type:"string" required:"true"`
11667
11668	// The EC2 subnet IDs for the cache subnet group.
11669	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list"`
11670}
11671
11672// String returns the string representation
11673func (s ModifyCacheSubnetGroupInput) String() string {
11674	return awsutil.Prettify(s)
11675}
11676
11677// GoString returns the string representation
11678func (s ModifyCacheSubnetGroupInput) GoString() string {
11679	return s.String()
11680}
11681
11682// Validate inspects the fields of the type to determine if they are valid.
11683func (s *ModifyCacheSubnetGroupInput) Validate() error {
11684	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheSubnetGroupInput"}
11685	if s.CacheSubnetGroupName == nil {
11686		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
11687	}
11688
11689	if invalidParams.Len() > 0 {
11690		return invalidParams
11691	}
11692	return nil
11693}
11694
11695// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
11696func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *ModifyCacheSubnetGroupInput {
11697	s.CacheSubnetGroupDescription = &v
11698	return s
11699}
11700
11701// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
11702func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *ModifyCacheSubnetGroupInput {
11703	s.CacheSubnetGroupName = &v
11704	return s
11705}
11706
11707// SetSubnetIds sets the SubnetIds field's value.
11708func (s *ModifyCacheSubnetGroupInput) SetSubnetIds(v []*string) *ModifyCacheSubnetGroupInput {
11709	s.SubnetIds = v
11710	return s
11711}
11712
11713type ModifyCacheSubnetGroupOutput struct {
11714	_ struct{} `type:"structure"`
11715
11716	// Represents the output of one of the following operations:
11717	//
11718	//    * CreateCacheSubnetGroup
11719	//
11720	//    * ModifyCacheSubnetGroup
11721	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
11722}
11723
11724// String returns the string representation
11725func (s ModifyCacheSubnetGroupOutput) String() string {
11726	return awsutil.Prettify(s)
11727}
11728
11729// GoString returns the string representation
11730func (s ModifyCacheSubnetGroupOutput) GoString() string {
11731	return s.String()
11732}
11733
11734// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
11735func (s *ModifyCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *ModifyCacheSubnetGroupOutput {
11736	s.CacheSubnetGroup = v
11737	return s
11738}
11739
11740// Represents the input of a ModifyReplicationGroups operation.
11741type ModifyReplicationGroupInput struct {
11742	_ struct{} `type:"structure"`
11743
11744	// If true, this parameter causes the modifications in this request and any
11745	// pending modifications to be applied, asynchronously and as soon as possible,
11746	// regardless of the PreferredMaintenanceWindow setting for the replication
11747	// group.
11748	//
11749	// If false, changes to the nodes in the replication group are applied on the
11750	// next maintenance reboot, or the next failure reboot, whichever occurs first.
11751	//
11752	// Valid values: true | false
11753	//
11754	// Default: false
11755	ApplyImmediately *bool `type:"boolean"`
11756
11757	// Reserved parameter. The password used to access a password protected server.
11758	// This parameter must be specified with the auth-token-update-strategy parameter.
11759	// Password constraints:
11760	//
11761	//    * Must be only printable ASCII characters
11762	//
11763	//    * Must be at least 16 characters and no more than 128 characters in length
11764	//
11765	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
11766	//
11767	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
11768	AuthToken *string `type:"string"`
11769
11770	// Specifies the strategy to use to update the AUTH token. This parameter must
11771	// be specified with the auth-token parameter. Possible values:
11772	//
11773	//    * Rotate
11774	//
11775	//    * Set
11776	//
11777	// For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
11778	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
11779
11780	// This parameter is currently disabled.
11781	AutoMinorVersionUpgrade *bool `type:"boolean"`
11782
11783	// Determines whether a read replica is automatically promoted to read/write
11784	// primary if the existing primary encounters a failure.
11785	//
11786	// Valid values: true | false
11787	//
11788	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
11789	// on:
11790	//
11791	//    * Redis versions earlier than 2.8.6.
11792	//
11793	//    * Redis (cluster mode disabled): T1 node types.
11794	//
11795	//    * Redis (cluster mode enabled): T1 node types.
11796	AutomaticFailoverEnabled *bool `type:"boolean"`
11797
11798	// A valid cache node type that you want to scale this replication group to.
11799	CacheNodeType *string `type:"string"`
11800
11801	// The name of the cache parameter group to apply to all of the clusters in
11802	// this replication group. This change is asynchronously applied as soon as
11803	// possible for parameters when the ApplyImmediately parameter is specified
11804	// as true for this request.
11805	CacheParameterGroupName *string `type:"string"`
11806
11807	// A list of cache security group names to authorize for the clusters in this
11808	// replication group. This change is asynchronously applied as soon as possible.
11809	//
11810	// This parameter can be used only with replication group containing clusters
11811	// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
11812	//
11813	// Constraints: Must contain no more than 255 alphanumeric characters. Must
11814	// not be Default.
11815	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
11816
11817	// The upgraded version of the cache engine to be run on the clusters in the
11818	// replication group.
11819	//
11820	// Important: You can upgrade to a newer engine version (see Selecting a Cache
11821	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
11822	// but you cannot downgrade to an earlier engine version. If you want to use
11823	// an earlier engine version, you must delete the existing replication group
11824	// and create it anew with the earlier engine version.
11825	EngineVersion *string `type:"string"`
11826
11827	// Deprecated. This parameter is not used.
11828	//
11829	// Deprecated: NodeGroupId has been deprecated
11830	NodeGroupId *string `deprecated:"true" type:"string"`
11831
11832	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
11833	// are sent.
11834	//
11835	// The Amazon SNS topic owner must be same as the replication group owner.
11836	NotificationTopicArn *string `type:"string"`
11837
11838	// The status of the Amazon SNS notification topic for the replication group.
11839	// Notifications are sent only if the status is active.
11840	//
11841	// Valid values: active | inactive
11842	NotificationTopicStatus *string `type:"string"`
11843
11844	// Specifies the weekly time range during which maintenance on the cluster is
11845	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
11846	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
11847	//
11848	// Valid values for ddd are:
11849	//
11850	//    * sun
11851	//
11852	//    * mon
11853	//
11854	//    * tue
11855	//
11856	//    * wed
11857	//
11858	//    * thu
11859	//
11860	//    * fri
11861	//
11862	//    * sat
11863	//
11864	// Example: sun:23:00-mon:01:30
11865	PreferredMaintenanceWindow *string `type:"string"`
11866
11867	// For replication groups with a single primary, if this parameter is specified,
11868	// ElastiCache promotes the specified cluster in the specified replication group
11869	// to the primary role. The nodes of all other clusters in the replication group
11870	// are read replicas.
11871	PrimaryClusterId *string `type:"string"`
11872
11873	// A description for the replication group. Maximum length is 255 characters.
11874	ReplicationGroupDescription *string `type:"string"`
11875
11876	// The identifier of the replication group to modify.
11877	//
11878	// ReplicationGroupId is a required field
11879	ReplicationGroupId *string `type:"string" required:"true"`
11880
11881	// Specifies the VPC Security Groups associated with the clusters in the replication
11882	// group.
11883	//
11884	// This parameter can be used only with replication group containing clusters
11885	// running in an Amazon Virtual Private Cloud (Amazon VPC).
11886	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
11887
11888	// The number of days for which ElastiCache retains automatic node group (shard)
11889	// snapshots before deleting them. For example, if you set SnapshotRetentionLimit
11890	// to 5, a snapshot that was taken today is retained for 5 days before being
11891	// deleted.
11892	//
11893	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
11894	// are turned off.
11895	SnapshotRetentionLimit *int64 `type:"integer"`
11896
11897	// The daily time range (in UTC) during which ElastiCache begins taking a daily
11898	// snapshot of the node group (shard) specified by SnapshottingClusterId.
11899	//
11900	// Example: 05:00-09:00
11901	//
11902	// If you do not specify this parameter, ElastiCache automatically chooses an
11903	// appropriate time range.
11904	SnapshotWindow *string `type:"string"`
11905
11906	// The cluster ID that is used as the daily snapshot source for the replication
11907	// group. This parameter cannot be set for Redis (cluster mode enabled) replication
11908	// groups.
11909	SnapshottingClusterId *string `type:"string"`
11910}
11911
11912// String returns the string representation
11913func (s ModifyReplicationGroupInput) String() string {
11914	return awsutil.Prettify(s)
11915}
11916
11917// GoString returns the string representation
11918func (s ModifyReplicationGroupInput) GoString() string {
11919	return s.String()
11920}
11921
11922// Validate inspects the fields of the type to determine if they are valid.
11923func (s *ModifyReplicationGroupInput) Validate() error {
11924	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupInput"}
11925	if s.ReplicationGroupId == nil {
11926		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
11927	}
11928
11929	if invalidParams.Len() > 0 {
11930		return invalidParams
11931	}
11932	return nil
11933}
11934
11935// SetApplyImmediately sets the ApplyImmediately field's value.
11936func (s *ModifyReplicationGroupInput) SetApplyImmediately(v bool) *ModifyReplicationGroupInput {
11937	s.ApplyImmediately = &v
11938	return s
11939}
11940
11941// SetAuthToken sets the AuthToken field's value.
11942func (s *ModifyReplicationGroupInput) SetAuthToken(v string) *ModifyReplicationGroupInput {
11943	s.AuthToken = &v
11944	return s
11945}
11946
11947// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
11948func (s *ModifyReplicationGroupInput) SetAuthTokenUpdateStrategy(v string) *ModifyReplicationGroupInput {
11949	s.AuthTokenUpdateStrategy = &v
11950	return s
11951}
11952
11953// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
11954func (s *ModifyReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *ModifyReplicationGroupInput {
11955	s.AutoMinorVersionUpgrade = &v
11956	return s
11957}
11958
11959// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
11960func (s *ModifyReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyReplicationGroupInput {
11961	s.AutomaticFailoverEnabled = &v
11962	return s
11963}
11964
11965// SetCacheNodeType sets the CacheNodeType field's value.
11966func (s *ModifyReplicationGroupInput) SetCacheNodeType(v string) *ModifyReplicationGroupInput {
11967	s.CacheNodeType = &v
11968	return s
11969}
11970
11971// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
11972func (s *ModifyReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyReplicationGroupInput {
11973	s.CacheParameterGroupName = &v
11974	return s
11975}
11976
11977// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
11978func (s *ModifyReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *ModifyReplicationGroupInput {
11979	s.CacheSecurityGroupNames = v
11980	return s
11981}
11982
11983// SetEngineVersion sets the EngineVersion field's value.
11984func (s *ModifyReplicationGroupInput) SetEngineVersion(v string) *ModifyReplicationGroupInput {
11985	s.EngineVersion = &v
11986	return s
11987}
11988
11989// SetNodeGroupId sets the NodeGroupId field's value.
11990func (s *ModifyReplicationGroupInput) SetNodeGroupId(v string) *ModifyReplicationGroupInput {
11991	s.NodeGroupId = &v
11992	return s
11993}
11994
11995// SetNotificationTopicArn sets the NotificationTopicArn field's value.
11996func (s *ModifyReplicationGroupInput) SetNotificationTopicArn(v string) *ModifyReplicationGroupInput {
11997	s.NotificationTopicArn = &v
11998	return s
11999}
12000
12001// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
12002func (s *ModifyReplicationGroupInput) SetNotificationTopicStatus(v string) *ModifyReplicationGroupInput {
12003	s.NotificationTopicStatus = &v
12004	return s
12005}
12006
12007// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
12008func (s *ModifyReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *ModifyReplicationGroupInput {
12009	s.PreferredMaintenanceWindow = &v
12010	return s
12011}
12012
12013// SetPrimaryClusterId sets the PrimaryClusterId field's value.
12014func (s *ModifyReplicationGroupInput) SetPrimaryClusterId(v string) *ModifyReplicationGroupInput {
12015	s.PrimaryClusterId = &v
12016	return s
12017}
12018
12019// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
12020func (s *ModifyReplicationGroupInput) SetReplicationGroupDescription(v string) *ModifyReplicationGroupInput {
12021	s.ReplicationGroupDescription = &v
12022	return s
12023}
12024
12025// SetReplicationGroupId sets the ReplicationGroupId field's value.
12026func (s *ModifyReplicationGroupInput) SetReplicationGroupId(v string) *ModifyReplicationGroupInput {
12027	s.ReplicationGroupId = &v
12028	return s
12029}
12030
12031// SetSecurityGroupIds sets the SecurityGroupIds field's value.
12032func (s *ModifyReplicationGroupInput) SetSecurityGroupIds(v []*string) *ModifyReplicationGroupInput {
12033	s.SecurityGroupIds = v
12034	return s
12035}
12036
12037// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
12038func (s *ModifyReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *ModifyReplicationGroupInput {
12039	s.SnapshotRetentionLimit = &v
12040	return s
12041}
12042
12043// SetSnapshotWindow sets the SnapshotWindow field's value.
12044func (s *ModifyReplicationGroupInput) SetSnapshotWindow(v string) *ModifyReplicationGroupInput {
12045	s.SnapshotWindow = &v
12046	return s
12047}
12048
12049// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
12050func (s *ModifyReplicationGroupInput) SetSnapshottingClusterId(v string) *ModifyReplicationGroupInput {
12051	s.SnapshottingClusterId = &v
12052	return s
12053}
12054
12055type ModifyReplicationGroupOutput struct {
12056	_ struct{} `type:"structure"`
12057
12058	// Contains all of the attributes of a specific Redis replication group.
12059	ReplicationGroup *ReplicationGroup `type:"structure"`
12060}
12061
12062// String returns the string representation
12063func (s ModifyReplicationGroupOutput) String() string {
12064	return awsutil.Prettify(s)
12065}
12066
12067// GoString returns the string representation
12068func (s ModifyReplicationGroupOutput) GoString() string {
12069	return s.String()
12070}
12071
12072// SetReplicationGroup sets the ReplicationGroup field's value.
12073func (s *ModifyReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupOutput {
12074	s.ReplicationGroup = v
12075	return s
12076}
12077
12078// Represents the input for a ModifyReplicationGroupShardConfiguration operation.
12079type ModifyReplicationGroupShardConfigurationInput struct {
12080	_ struct{} `type:"structure"`
12081
12082	// Indicates that the shard reconfiguration process begins immediately. At present,
12083	// the only permitted value for this parameter is true.
12084	//
12085	// Value: true
12086	//
12087	// ApplyImmediately is a required field
12088	ApplyImmediately *bool `type:"boolean" required:"true"`
12089
12090	// The number of node groups (shards) that results from the modification of
12091	// the shard configuration.
12092	//
12093	// NodeGroupCount is a required field
12094	NodeGroupCount *int64 `type:"integer" required:"true"`
12095
12096	// If the value of NodeGroupCount is less than the current number of node groups
12097	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
12098	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
12099	//
12100	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
12101	// from the cluster.
12102	NodeGroupsToRemove []*string `locationNameList:"NodeGroupToRemove" type:"list"`
12103
12104	// If the value of NodeGroupCount is less than the current number of node groups
12105	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
12106	// NodeGroupsToRetain is a list of NodeGroupIds to retain in the cluster.
12107	//
12108	// ElastiCache for Redis will attempt to remove all node groups except those
12109	// listed by NodeGroupsToRetain from the cluster.
12110	NodeGroupsToRetain []*string `locationNameList:"NodeGroupToRetain" type:"list"`
12111
12112	// The name of the Redis (cluster mode enabled) cluster (replication group)
12113	// on which the shards are to be configured.
12114	//
12115	// ReplicationGroupId is a required field
12116	ReplicationGroupId *string `type:"string" required:"true"`
12117
12118	// Specifies the preferred availability zones for each node group in the cluster.
12119	// If the value of NodeGroupCount is greater than the current number of node
12120	// groups (shards), you can use this parameter to specify the preferred availability
12121	// zones of the cluster's shards. If you omit this parameter ElastiCache selects
12122	// availability zones for you.
12123	//
12124	// You can specify this parameter only if the value of NodeGroupCount is greater
12125	// than the current number of node groups (shards).
12126	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list"`
12127}
12128
12129// String returns the string representation
12130func (s ModifyReplicationGroupShardConfigurationInput) String() string {
12131	return awsutil.Prettify(s)
12132}
12133
12134// GoString returns the string representation
12135func (s ModifyReplicationGroupShardConfigurationInput) GoString() string {
12136	return s.String()
12137}
12138
12139// Validate inspects the fields of the type to determine if they are valid.
12140func (s *ModifyReplicationGroupShardConfigurationInput) Validate() error {
12141	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupShardConfigurationInput"}
12142	if s.ApplyImmediately == nil {
12143		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
12144	}
12145	if s.NodeGroupCount == nil {
12146		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
12147	}
12148	if s.ReplicationGroupId == nil {
12149		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
12150	}
12151	if s.ReshardingConfiguration != nil {
12152		for i, v := range s.ReshardingConfiguration {
12153			if v == nil {
12154				continue
12155			}
12156			if err := v.Validate(); err != nil {
12157				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
12158			}
12159		}
12160	}
12161
12162	if invalidParams.Len() > 0 {
12163		return invalidParams
12164	}
12165	return nil
12166}
12167
12168// SetApplyImmediately sets the ApplyImmediately field's value.
12169func (s *ModifyReplicationGroupShardConfigurationInput) SetApplyImmediately(v bool) *ModifyReplicationGroupShardConfigurationInput {
12170	s.ApplyImmediately = &v
12171	return s
12172}
12173
12174// SetNodeGroupCount sets the NodeGroupCount field's value.
12175func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupCount(v int64) *ModifyReplicationGroupShardConfigurationInput {
12176	s.NodeGroupCount = &v
12177	return s
12178}
12179
12180// SetNodeGroupsToRemove sets the NodeGroupsToRemove field's value.
12181func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRemove(v []*string) *ModifyReplicationGroupShardConfigurationInput {
12182	s.NodeGroupsToRemove = v
12183	return s
12184}
12185
12186// SetNodeGroupsToRetain sets the NodeGroupsToRetain field's value.
12187func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRetain(v []*string) *ModifyReplicationGroupShardConfigurationInput {
12188	s.NodeGroupsToRetain = v
12189	return s
12190}
12191
12192// SetReplicationGroupId sets the ReplicationGroupId field's value.
12193func (s *ModifyReplicationGroupShardConfigurationInput) SetReplicationGroupId(v string) *ModifyReplicationGroupShardConfigurationInput {
12194	s.ReplicationGroupId = &v
12195	return s
12196}
12197
12198// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
12199func (s *ModifyReplicationGroupShardConfigurationInput) SetReshardingConfiguration(v []*ReshardingConfiguration) *ModifyReplicationGroupShardConfigurationInput {
12200	s.ReshardingConfiguration = v
12201	return s
12202}
12203
12204type ModifyReplicationGroupShardConfigurationOutput struct {
12205	_ struct{} `type:"structure"`
12206
12207	// Contains all of the attributes of a specific Redis replication group.
12208	ReplicationGroup *ReplicationGroup `type:"structure"`
12209}
12210
12211// String returns the string representation
12212func (s ModifyReplicationGroupShardConfigurationOutput) String() string {
12213	return awsutil.Prettify(s)
12214}
12215
12216// GoString returns the string representation
12217func (s ModifyReplicationGroupShardConfigurationOutput) GoString() string {
12218	return s.String()
12219}
12220
12221// SetReplicationGroup sets the ReplicationGroup field's value.
12222func (s *ModifyReplicationGroupShardConfigurationOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupShardConfigurationOutput {
12223	s.ReplicationGroup = v
12224	return s
12225}
12226
12227// Represents a collection of cache nodes in a replication group. One node in
12228// the node group is the read/write primary node. All the other nodes are read-only
12229// Replica nodes.
12230type NodeGroup struct {
12231	_ struct{} `type:"structure"`
12232
12233	// The identifier for the node group (shard). A Redis (cluster mode disabled)
12234	// replication group contains only 1 node group; therefore, the node group ID
12235	// is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90
12236	// node groups numbered 0001 to 0090. Optionally, the user can provide the id
12237	// for a node group.
12238	NodeGroupId *string `type:"string"`
12239
12240	// A list containing information about individual nodes within the node group
12241	// (shard).
12242	NodeGroupMembers []*NodeGroupMember `locationNameList:"NodeGroupMember" type:"list"`
12243
12244	// The endpoint of the primary node in this node group (shard).
12245	PrimaryEndpoint *Endpoint `type:"structure"`
12246
12247	// The endpoint of the replica nodes in this node group (shard).
12248	ReaderEndpoint *Endpoint `type:"structure"`
12249
12250	// The keyspace for this node group (shard).
12251	Slots *string `type:"string"`
12252
12253	// The current state of this replication group - creating, available, etc.
12254	Status *string `type:"string"`
12255}
12256
12257// String returns the string representation
12258func (s NodeGroup) String() string {
12259	return awsutil.Prettify(s)
12260}
12261
12262// GoString returns the string representation
12263func (s NodeGroup) GoString() string {
12264	return s.String()
12265}
12266
12267// SetNodeGroupId sets the NodeGroupId field's value.
12268func (s *NodeGroup) SetNodeGroupId(v string) *NodeGroup {
12269	s.NodeGroupId = &v
12270	return s
12271}
12272
12273// SetNodeGroupMembers sets the NodeGroupMembers field's value.
12274func (s *NodeGroup) SetNodeGroupMembers(v []*NodeGroupMember) *NodeGroup {
12275	s.NodeGroupMembers = v
12276	return s
12277}
12278
12279// SetPrimaryEndpoint sets the PrimaryEndpoint field's value.
12280func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup {
12281	s.PrimaryEndpoint = v
12282	return s
12283}
12284
12285// SetReaderEndpoint sets the ReaderEndpoint field's value.
12286func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup {
12287	s.ReaderEndpoint = v
12288	return s
12289}
12290
12291// SetSlots sets the Slots field's value.
12292func (s *NodeGroup) SetSlots(v string) *NodeGroup {
12293	s.Slots = &v
12294	return s
12295}
12296
12297// SetStatus sets the Status field's value.
12298func (s *NodeGroup) SetStatus(v string) *NodeGroup {
12299	s.Status = &v
12300	return s
12301}
12302
12303// Node group (shard) configuration options. Each node group (shard) configuration
12304// has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
12305// ReplicaCount.
12306type NodeGroupConfiguration struct {
12307	_ struct{} `type:"structure"`
12308
12309	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
12310	// for the node group these configuration values apply to.
12311	NodeGroupId *string `min:"1" type:"string"`
12312
12313	// The Availability Zone where the primary node of this node group (shard) is
12314	// launched.
12315	PrimaryAvailabilityZone *string `type:"string"`
12316
12317	// A list of Availability Zones to be used for the read replicas. The number
12318	// of Availability Zones in this list must match the value of ReplicaCount or
12319	// ReplicasPerNodeGroup if not specified.
12320	ReplicaAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
12321
12322	// The number of read replica nodes in this node group (shard).
12323	ReplicaCount *int64 `type:"integer"`
12324
12325	// A string that specifies the keyspace for a particular node group. Keyspaces
12326	// range from 0 to 16,383. The string is in the format startkey-endkey.
12327	//
12328	// Example: "0-3999"
12329	Slots *string `type:"string"`
12330}
12331
12332// String returns the string representation
12333func (s NodeGroupConfiguration) String() string {
12334	return awsutil.Prettify(s)
12335}
12336
12337// GoString returns the string representation
12338func (s NodeGroupConfiguration) GoString() string {
12339	return s.String()
12340}
12341
12342// Validate inspects the fields of the type to determine if they are valid.
12343func (s *NodeGroupConfiguration) Validate() error {
12344	invalidParams := request.ErrInvalidParams{Context: "NodeGroupConfiguration"}
12345	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
12346		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
12347	}
12348
12349	if invalidParams.Len() > 0 {
12350		return invalidParams
12351	}
12352	return nil
12353}
12354
12355// SetNodeGroupId sets the NodeGroupId field's value.
12356func (s *NodeGroupConfiguration) SetNodeGroupId(v string) *NodeGroupConfiguration {
12357	s.NodeGroupId = &v
12358	return s
12359}
12360
12361// SetPrimaryAvailabilityZone sets the PrimaryAvailabilityZone field's value.
12362func (s *NodeGroupConfiguration) SetPrimaryAvailabilityZone(v string) *NodeGroupConfiguration {
12363	s.PrimaryAvailabilityZone = &v
12364	return s
12365}
12366
12367// SetReplicaAvailabilityZones sets the ReplicaAvailabilityZones field's value.
12368func (s *NodeGroupConfiguration) SetReplicaAvailabilityZones(v []*string) *NodeGroupConfiguration {
12369	s.ReplicaAvailabilityZones = v
12370	return s
12371}
12372
12373// SetReplicaCount sets the ReplicaCount field's value.
12374func (s *NodeGroupConfiguration) SetReplicaCount(v int64) *NodeGroupConfiguration {
12375	s.ReplicaCount = &v
12376	return s
12377}
12378
12379// SetSlots sets the Slots field's value.
12380func (s *NodeGroupConfiguration) SetSlots(v string) *NodeGroupConfiguration {
12381	s.Slots = &v
12382	return s
12383}
12384
12385// Represents a single node within a node group (shard).
12386type NodeGroupMember struct {
12387	_ struct{} `type:"structure"`
12388
12389	// The ID of the cluster to which the node belongs.
12390	CacheClusterId *string `type:"string"`
12391
12392	// The ID of the node within its cluster. A node ID is a numeric identifier
12393	// (0001, 0002, etc.).
12394	CacheNodeId *string `type:"string"`
12395
12396	// The role that is currently assigned to the node - primary or replica. This
12397	// member is only applicable for Redis (cluster mode disabled) replication groups.
12398	CurrentRole *string `type:"string"`
12399
12400	// The name of the Availability Zone in which the node is located.
12401	PreferredAvailabilityZone *string `type:"string"`
12402
12403	// The information required for client programs to connect to a node for read
12404	// operations. The read endpoint is only applicable on Redis (cluster mode disabled)
12405	// clusters.
12406	ReadEndpoint *Endpoint `type:"structure"`
12407}
12408
12409// String returns the string representation
12410func (s NodeGroupMember) String() string {
12411	return awsutil.Prettify(s)
12412}
12413
12414// GoString returns the string representation
12415func (s NodeGroupMember) GoString() string {
12416	return s.String()
12417}
12418
12419// SetCacheClusterId sets the CacheClusterId field's value.
12420func (s *NodeGroupMember) SetCacheClusterId(v string) *NodeGroupMember {
12421	s.CacheClusterId = &v
12422	return s
12423}
12424
12425// SetCacheNodeId sets the CacheNodeId field's value.
12426func (s *NodeGroupMember) SetCacheNodeId(v string) *NodeGroupMember {
12427	s.CacheNodeId = &v
12428	return s
12429}
12430
12431// SetCurrentRole sets the CurrentRole field's value.
12432func (s *NodeGroupMember) SetCurrentRole(v string) *NodeGroupMember {
12433	s.CurrentRole = &v
12434	return s
12435}
12436
12437// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
12438func (s *NodeGroupMember) SetPreferredAvailabilityZone(v string) *NodeGroupMember {
12439	s.PreferredAvailabilityZone = &v
12440	return s
12441}
12442
12443// SetReadEndpoint sets the ReadEndpoint field's value.
12444func (s *NodeGroupMember) SetReadEndpoint(v *Endpoint) *NodeGroupMember {
12445	s.ReadEndpoint = v
12446	return s
12447}
12448
12449// The status of the service update on the node group member
12450type NodeGroupMemberUpdateStatus struct {
12451	_ struct{} `type:"structure"`
12452
12453	// The cache cluster ID
12454	CacheClusterId *string `type:"string"`
12455
12456	// The node ID of the cache cluster
12457	CacheNodeId *string `type:"string"`
12458
12459	// The deletion date of the node
12460	NodeDeletionDate *time.Time `type:"timestamp"`
12461
12462	// The end date of the update for a node
12463	NodeUpdateEndDate *time.Time `type:"timestamp"`
12464
12465	// Reflects whether the update was initiated by the customer or automatically
12466	// applied
12467	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
12468
12469	// The date when the update is triggered
12470	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
12471
12472	// The start date of the update for a node
12473	NodeUpdateStartDate *time.Time `type:"timestamp"`
12474
12475	// The update status of the node
12476	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
12477
12478	// The date when the NodeUpdateStatus was last modified
12479	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
12480}
12481
12482// String returns the string representation
12483func (s NodeGroupMemberUpdateStatus) String() string {
12484	return awsutil.Prettify(s)
12485}
12486
12487// GoString returns the string representation
12488func (s NodeGroupMemberUpdateStatus) GoString() string {
12489	return s.String()
12490}
12491
12492// SetCacheClusterId sets the CacheClusterId field's value.
12493func (s *NodeGroupMemberUpdateStatus) SetCacheClusterId(v string) *NodeGroupMemberUpdateStatus {
12494	s.CacheClusterId = &v
12495	return s
12496}
12497
12498// SetCacheNodeId sets the CacheNodeId field's value.
12499func (s *NodeGroupMemberUpdateStatus) SetCacheNodeId(v string) *NodeGroupMemberUpdateStatus {
12500	s.CacheNodeId = &v
12501	return s
12502}
12503
12504// SetNodeDeletionDate sets the NodeDeletionDate field's value.
12505func (s *NodeGroupMemberUpdateStatus) SetNodeDeletionDate(v time.Time) *NodeGroupMemberUpdateStatus {
12506	s.NodeDeletionDate = &v
12507	return s
12508}
12509
12510// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
12511func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateEndDate(v time.Time) *NodeGroupMemberUpdateStatus {
12512	s.NodeUpdateEndDate = &v
12513	return s
12514}
12515
12516// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
12517func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedBy(v string) *NodeGroupMemberUpdateStatus {
12518	s.NodeUpdateInitiatedBy = &v
12519	return s
12520}
12521
12522// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
12523func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *NodeGroupMemberUpdateStatus {
12524	s.NodeUpdateInitiatedDate = &v
12525	return s
12526}
12527
12528// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
12529func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStartDate(v time.Time) *NodeGroupMemberUpdateStatus {
12530	s.NodeUpdateStartDate = &v
12531	return s
12532}
12533
12534// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
12535func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatus(v string) *NodeGroupMemberUpdateStatus {
12536	s.NodeUpdateStatus = &v
12537	return s
12538}
12539
12540// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
12541func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *NodeGroupMemberUpdateStatus {
12542	s.NodeUpdateStatusModifiedDate = &v
12543	return s
12544}
12545
12546// The status of the service update on the node group
12547type NodeGroupUpdateStatus struct {
12548	_ struct{} `type:"structure"`
12549
12550	// The ID of the node group
12551	NodeGroupId *string `type:"string"`
12552
12553	// The status of the service update on the node group member
12554	NodeGroupMemberUpdateStatus []*NodeGroupMemberUpdateStatus `locationNameList:"NodeGroupMemberUpdateStatus" type:"list"`
12555}
12556
12557// String returns the string representation
12558func (s NodeGroupUpdateStatus) String() string {
12559	return awsutil.Prettify(s)
12560}
12561
12562// GoString returns the string representation
12563func (s NodeGroupUpdateStatus) GoString() string {
12564	return s.String()
12565}
12566
12567// SetNodeGroupId sets the NodeGroupId field's value.
12568func (s *NodeGroupUpdateStatus) SetNodeGroupId(v string) *NodeGroupUpdateStatus {
12569	s.NodeGroupId = &v
12570	return s
12571}
12572
12573// SetNodeGroupMemberUpdateStatus sets the NodeGroupMemberUpdateStatus field's value.
12574func (s *NodeGroupUpdateStatus) SetNodeGroupMemberUpdateStatus(v []*NodeGroupMemberUpdateStatus) *NodeGroupUpdateStatus {
12575	s.NodeGroupMemberUpdateStatus = v
12576	return s
12577}
12578
12579// Represents an individual cache node in a snapshot of a cluster.
12580type NodeSnapshot struct {
12581	_ struct{} `type:"structure"`
12582
12583	// A unique identifier for the source cluster.
12584	CacheClusterId *string `type:"string"`
12585
12586	// The date and time when the cache node was created in the source cluster.
12587	CacheNodeCreateTime *time.Time `type:"timestamp"`
12588
12589	// The cache node identifier for the node in the source cluster.
12590	CacheNodeId *string `type:"string"`
12591
12592	// The size of the cache on the source cache node.
12593	CacheSize *string `type:"string"`
12594
12595	// The configuration for the source node group (shard).
12596	NodeGroupConfiguration *NodeGroupConfiguration `type:"structure"`
12597
12598	// A unique identifier for the source node group (shard).
12599	NodeGroupId *string `type:"string"`
12600
12601	// The date and time when the source node's metadata and cache data set was
12602	// obtained for the snapshot.
12603	SnapshotCreateTime *time.Time `type:"timestamp"`
12604}
12605
12606// String returns the string representation
12607func (s NodeSnapshot) String() string {
12608	return awsutil.Prettify(s)
12609}
12610
12611// GoString returns the string representation
12612func (s NodeSnapshot) GoString() string {
12613	return s.String()
12614}
12615
12616// SetCacheClusterId sets the CacheClusterId field's value.
12617func (s *NodeSnapshot) SetCacheClusterId(v string) *NodeSnapshot {
12618	s.CacheClusterId = &v
12619	return s
12620}
12621
12622// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
12623func (s *NodeSnapshot) SetCacheNodeCreateTime(v time.Time) *NodeSnapshot {
12624	s.CacheNodeCreateTime = &v
12625	return s
12626}
12627
12628// SetCacheNodeId sets the CacheNodeId field's value.
12629func (s *NodeSnapshot) SetCacheNodeId(v string) *NodeSnapshot {
12630	s.CacheNodeId = &v
12631	return s
12632}
12633
12634// SetCacheSize sets the CacheSize field's value.
12635func (s *NodeSnapshot) SetCacheSize(v string) *NodeSnapshot {
12636	s.CacheSize = &v
12637	return s
12638}
12639
12640// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
12641func (s *NodeSnapshot) SetNodeGroupConfiguration(v *NodeGroupConfiguration) *NodeSnapshot {
12642	s.NodeGroupConfiguration = v
12643	return s
12644}
12645
12646// SetNodeGroupId sets the NodeGroupId field's value.
12647func (s *NodeSnapshot) SetNodeGroupId(v string) *NodeSnapshot {
12648	s.NodeGroupId = &v
12649	return s
12650}
12651
12652// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
12653func (s *NodeSnapshot) SetSnapshotCreateTime(v time.Time) *NodeSnapshot {
12654	s.SnapshotCreateTime = &v
12655	return s
12656}
12657
12658// Describes a notification topic and its status. Notification topics are used
12659// for publishing ElastiCache events to subscribers using Amazon Simple Notification
12660// Service (SNS).
12661type NotificationConfiguration struct {
12662	_ struct{} `type:"structure"`
12663
12664	// The Amazon Resource Name (ARN) that identifies the topic.
12665	TopicArn *string `type:"string"`
12666
12667	// The current state of the topic.
12668	TopicStatus *string `type:"string"`
12669}
12670
12671// String returns the string representation
12672func (s NotificationConfiguration) String() string {
12673	return awsutil.Prettify(s)
12674}
12675
12676// GoString returns the string representation
12677func (s NotificationConfiguration) GoString() string {
12678	return s.String()
12679}
12680
12681// SetTopicArn sets the TopicArn field's value.
12682func (s *NotificationConfiguration) SetTopicArn(v string) *NotificationConfiguration {
12683	s.TopicArn = &v
12684	return s
12685}
12686
12687// SetTopicStatus sets the TopicStatus field's value.
12688func (s *NotificationConfiguration) SetTopicStatus(v string) *NotificationConfiguration {
12689	s.TopicStatus = &v
12690	return s
12691}
12692
12693// Describes an individual setting that controls some aspect of ElastiCache
12694// behavior.
12695type Parameter struct {
12696	_ struct{} `type:"structure"`
12697
12698	// The valid range of values for the parameter.
12699	AllowedValues *string `type:"string"`
12700
12701	// Indicates whether a change to the parameter is applied immediately or requires
12702	// a reboot for the change to be applied. You can force a reboot or wait until
12703	// the next maintenance window's reboot. For more information, see Rebooting
12704	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
12705	ChangeType *string `type:"string" enum:"ChangeType"`
12706
12707	// The valid data type for the parameter.
12708	DataType *string `type:"string"`
12709
12710	// A description of the parameter.
12711	Description *string `type:"string"`
12712
12713	// Indicates whether (true) or not (false) the parameter can be modified. Some
12714	// parameters have security or operational implications that prevent them from
12715	// being changed.
12716	IsModifiable *bool `type:"boolean"`
12717
12718	// The earliest cache engine version to which the parameter can apply.
12719	MinimumEngineVersion *string `type:"string"`
12720
12721	// The name of the parameter.
12722	ParameterName *string `type:"string"`
12723
12724	// The value of the parameter.
12725	ParameterValue *string `type:"string"`
12726
12727	// The source of the parameter.
12728	Source *string `type:"string"`
12729}
12730
12731// String returns the string representation
12732func (s Parameter) String() string {
12733	return awsutil.Prettify(s)
12734}
12735
12736// GoString returns the string representation
12737func (s Parameter) GoString() string {
12738	return s.String()
12739}
12740
12741// SetAllowedValues sets the AllowedValues field's value.
12742func (s *Parameter) SetAllowedValues(v string) *Parameter {
12743	s.AllowedValues = &v
12744	return s
12745}
12746
12747// SetChangeType sets the ChangeType field's value.
12748func (s *Parameter) SetChangeType(v string) *Parameter {
12749	s.ChangeType = &v
12750	return s
12751}
12752
12753// SetDataType sets the DataType field's value.
12754func (s *Parameter) SetDataType(v string) *Parameter {
12755	s.DataType = &v
12756	return s
12757}
12758
12759// SetDescription sets the Description field's value.
12760func (s *Parameter) SetDescription(v string) *Parameter {
12761	s.Description = &v
12762	return s
12763}
12764
12765// SetIsModifiable sets the IsModifiable field's value.
12766func (s *Parameter) SetIsModifiable(v bool) *Parameter {
12767	s.IsModifiable = &v
12768	return s
12769}
12770
12771// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
12772func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
12773	s.MinimumEngineVersion = &v
12774	return s
12775}
12776
12777// SetParameterName sets the ParameterName field's value.
12778func (s *Parameter) SetParameterName(v string) *Parameter {
12779	s.ParameterName = &v
12780	return s
12781}
12782
12783// SetParameterValue sets the ParameterValue field's value.
12784func (s *Parameter) SetParameterValue(v string) *Parameter {
12785	s.ParameterValue = &v
12786	return s
12787}
12788
12789// SetSource sets the Source field's value.
12790func (s *Parameter) SetSource(v string) *Parameter {
12791	s.Source = &v
12792	return s
12793}
12794
12795// Describes a name-value pair that is used to update the value of a parameter.
12796type ParameterNameValue struct {
12797	_ struct{} `type:"structure"`
12798
12799	// The name of the parameter.
12800	ParameterName *string `type:"string"`
12801
12802	// The value of the parameter.
12803	ParameterValue *string `type:"string"`
12804}
12805
12806// String returns the string representation
12807func (s ParameterNameValue) String() string {
12808	return awsutil.Prettify(s)
12809}
12810
12811// GoString returns the string representation
12812func (s ParameterNameValue) GoString() string {
12813	return s.String()
12814}
12815
12816// SetParameterName sets the ParameterName field's value.
12817func (s *ParameterNameValue) SetParameterName(v string) *ParameterNameValue {
12818	s.ParameterName = &v
12819	return s
12820}
12821
12822// SetParameterValue sets the ParameterValue field's value.
12823func (s *ParameterNameValue) SetParameterValue(v string) *ParameterNameValue {
12824	s.ParameterValue = &v
12825	return s
12826}
12827
12828// A group of settings that are applied to the cluster in the future, or that
12829// are currently being applied.
12830type PendingModifiedValues struct {
12831	_ struct{} `type:"structure"`
12832
12833	// The auth token status
12834	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
12835
12836	// A list of cache node IDs that are being removed (or will be removed) from
12837	// the cluster. A node ID is a 4-digit numeric identifier (0001, 0002, etc.).
12838	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
12839
12840	// The cache node type that this cluster or replication group is scaled to.
12841	CacheNodeType *string `type:"string"`
12842
12843	// The new cache engine version that the cluster runs.
12844	EngineVersion *string `type:"string"`
12845
12846	// The new number of cache nodes for the cluster.
12847	//
12848	// For clusters running Redis, this value must be 1. For clusters running Memcached,
12849	// this value must be between 1 and 20.
12850	NumCacheNodes *int64 `type:"integer"`
12851}
12852
12853// String returns the string representation
12854func (s PendingModifiedValues) String() string {
12855	return awsutil.Prettify(s)
12856}
12857
12858// GoString returns the string representation
12859func (s PendingModifiedValues) GoString() string {
12860	return s.String()
12861}
12862
12863// SetAuthTokenStatus sets the AuthTokenStatus field's value.
12864func (s *PendingModifiedValues) SetAuthTokenStatus(v string) *PendingModifiedValues {
12865	s.AuthTokenStatus = &v
12866	return s
12867}
12868
12869// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
12870func (s *PendingModifiedValues) SetCacheNodeIdsToRemove(v []*string) *PendingModifiedValues {
12871	s.CacheNodeIdsToRemove = v
12872	return s
12873}
12874
12875// SetCacheNodeType sets the CacheNodeType field's value.
12876func (s *PendingModifiedValues) SetCacheNodeType(v string) *PendingModifiedValues {
12877	s.CacheNodeType = &v
12878	return s
12879}
12880
12881// SetEngineVersion sets the EngineVersion field's value.
12882func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
12883	s.EngineVersion = &v
12884	return s
12885}
12886
12887// SetNumCacheNodes sets the NumCacheNodes field's value.
12888func (s *PendingModifiedValues) SetNumCacheNodes(v int64) *PendingModifiedValues {
12889	s.NumCacheNodes = &v
12890	return s
12891}
12892
12893// Update action that has been processed for the corresponding apply/stop request
12894type ProcessedUpdateAction struct {
12895	_ struct{} `type:"structure"`
12896
12897	// The ID of the cache cluster
12898	CacheClusterId *string `type:"string"`
12899
12900	// The ID of the replication group
12901	ReplicationGroupId *string `type:"string"`
12902
12903	// The unique ID of the service update
12904	ServiceUpdateName *string `type:"string"`
12905
12906	// The status of the update action on the Redis cluster
12907	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
12908}
12909
12910// String returns the string representation
12911func (s ProcessedUpdateAction) String() string {
12912	return awsutil.Prettify(s)
12913}
12914
12915// GoString returns the string representation
12916func (s ProcessedUpdateAction) GoString() string {
12917	return s.String()
12918}
12919
12920// SetCacheClusterId sets the CacheClusterId field's value.
12921func (s *ProcessedUpdateAction) SetCacheClusterId(v string) *ProcessedUpdateAction {
12922	s.CacheClusterId = &v
12923	return s
12924}
12925
12926// SetReplicationGroupId sets the ReplicationGroupId field's value.
12927func (s *ProcessedUpdateAction) SetReplicationGroupId(v string) *ProcessedUpdateAction {
12928	s.ReplicationGroupId = &v
12929	return s
12930}
12931
12932// SetServiceUpdateName sets the ServiceUpdateName field's value.
12933func (s *ProcessedUpdateAction) SetServiceUpdateName(v string) *ProcessedUpdateAction {
12934	s.ServiceUpdateName = &v
12935	return s
12936}
12937
12938// SetUpdateActionStatus sets the UpdateActionStatus field's value.
12939func (s *ProcessedUpdateAction) SetUpdateActionStatus(v string) *ProcessedUpdateAction {
12940	s.UpdateActionStatus = &v
12941	return s
12942}
12943
12944// Represents the input of a PurchaseReservedCacheNodesOffering operation.
12945type PurchaseReservedCacheNodesOfferingInput struct {
12946	_ struct{} `type:"structure"`
12947
12948	// The number of cache node instances to reserve.
12949	//
12950	// Default: 1
12951	CacheNodeCount *int64 `type:"integer"`
12952
12953	// A customer-specified identifier to track this reservation.
12954	//
12955	// The Reserved Cache Node ID is an unique customer-specified identifier to
12956	// track this reservation. If this parameter is not specified, ElastiCache automatically
12957	// generates an identifier for the reservation.
12958	//
12959	// Example: myreservationID
12960	ReservedCacheNodeId *string `type:"string"`
12961
12962	// The ID of the reserved cache node offering to purchase.
12963	//
12964	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
12965	//
12966	// ReservedCacheNodesOfferingId is a required field
12967	ReservedCacheNodesOfferingId *string `type:"string" required:"true"`
12968}
12969
12970// String returns the string representation
12971func (s PurchaseReservedCacheNodesOfferingInput) String() string {
12972	return awsutil.Prettify(s)
12973}
12974
12975// GoString returns the string representation
12976func (s PurchaseReservedCacheNodesOfferingInput) GoString() string {
12977	return s.String()
12978}
12979
12980// Validate inspects the fields of the type to determine if they are valid.
12981func (s *PurchaseReservedCacheNodesOfferingInput) Validate() error {
12982	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedCacheNodesOfferingInput"}
12983	if s.ReservedCacheNodesOfferingId == nil {
12984		invalidParams.Add(request.NewErrParamRequired("ReservedCacheNodesOfferingId"))
12985	}
12986
12987	if invalidParams.Len() > 0 {
12988		return invalidParams
12989	}
12990	return nil
12991}
12992
12993// SetCacheNodeCount sets the CacheNodeCount field's value.
12994func (s *PurchaseReservedCacheNodesOfferingInput) SetCacheNodeCount(v int64) *PurchaseReservedCacheNodesOfferingInput {
12995	s.CacheNodeCount = &v
12996	return s
12997}
12998
12999// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
13000func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodeId(v string) *PurchaseReservedCacheNodesOfferingInput {
13001	s.ReservedCacheNodeId = &v
13002	return s
13003}
13004
13005// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13006func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodesOfferingId(v string) *PurchaseReservedCacheNodesOfferingInput {
13007	s.ReservedCacheNodesOfferingId = &v
13008	return s
13009}
13010
13011type PurchaseReservedCacheNodesOfferingOutput struct {
13012	_ struct{} `type:"structure"`
13013
13014	// Represents the output of a PurchaseReservedCacheNodesOffering operation.
13015	ReservedCacheNode *ReservedCacheNode `type:"structure"`
13016}
13017
13018// String returns the string representation
13019func (s PurchaseReservedCacheNodesOfferingOutput) String() string {
13020	return awsutil.Prettify(s)
13021}
13022
13023// GoString returns the string representation
13024func (s PurchaseReservedCacheNodesOfferingOutput) GoString() string {
13025	return s.String()
13026}
13027
13028// SetReservedCacheNode sets the ReservedCacheNode field's value.
13029func (s *PurchaseReservedCacheNodesOfferingOutput) SetReservedCacheNode(v *ReservedCacheNode) *PurchaseReservedCacheNodesOfferingOutput {
13030	s.ReservedCacheNode = v
13031	return s
13032}
13033
13034// Represents the input of a RebootCacheCluster operation.
13035type RebootCacheClusterInput struct {
13036	_ struct{} `type:"structure"`
13037
13038	// The cluster identifier. This parameter is stored as a lowercase string.
13039	//
13040	// CacheClusterId is a required field
13041	CacheClusterId *string `type:"string" required:"true"`
13042
13043	// A list of cache node IDs to reboot. A node ID is a numeric identifier (0001,
13044	// 0002, etc.). To reboot an entire cluster, specify all of the cache node IDs.
13045	//
13046	// CacheNodeIdsToReboot is a required field
13047	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list" required:"true"`
13048}
13049
13050// String returns the string representation
13051func (s RebootCacheClusterInput) String() string {
13052	return awsutil.Prettify(s)
13053}
13054
13055// GoString returns the string representation
13056func (s RebootCacheClusterInput) GoString() string {
13057	return s.String()
13058}
13059
13060// Validate inspects the fields of the type to determine if they are valid.
13061func (s *RebootCacheClusterInput) Validate() error {
13062	invalidParams := request.ErrInvalidParams{Context: "RebootCacheClusterInput"}
13063	if s.CacheClusterId == nil {
13064		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
13065	}
13066	if s.CacheNodeIdsToReboot == nil {
13067		invalidParams.Add(request.NewErrParamRequired("CacheNodeIdsToReboot"))
13068	}
13069
13070	if invalidParams.Len() > 0 {
13071		return invalidParams
13072	}
13073	return nil
13074}
13075
13076// SetCacheClusterId sets the CacheClusterId field's value.
13077func (s *RebootCacheClusterInput) SetCacheClusterId(v string) *RebootCacheClusterInput {
13078	s.CacheClusterId = &v
13079	return s
13080}
13081
13082// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
13083func (s *RebootCacheClusterInput) SetCacheNodeIdsToReboot(v []*string) *RebootCacheClusterInput {
13084	s.CacheNodeIdsToReboot = v
13085	return s
13086}
13087
13088type RebootCacheClusterOutput struct {
13089	_ struct{} `type:"structure"`
13090
13091	// Contains all of the attributes of a specific cluster.
13092	CacheCluster *CacheCluster `type:"structure"`
13093}
13094
13095// String returns the string representation
13096func (s RebootCacheClusterOutput) String() string {
13097	return awsutil.Prettify(s)
13098}
13099
13100// GoString returns the string representation
13101func (s RebootCacheClusterOutput) GoString() string {
13102	return s.String()
13103}
13104
13105// SetCacheCluster sets the CacheCluster field's value.
13106func (s *RebootCacheClusterOutput) SetCacheCluster(v *CacheCluster) *RebootCacheClusterOutput {
13107	s.CacheCluster = v
13108	return s
13109}
13110
13111// Contains the specific price and frequency of a recurring charges for a reserved
13112// cache node, or for a reserved cache node offering.
13113type RecurringCharge struct {
13114	_ struct{} `type:"structure"`
13115
13116	// The monetary amount of the recurring charge.
13117	RecurringChargeAmount *float64 `type:"double"`
13118
13119	// The frequency of the recurring charge.
13120	RecurringChargeFrequency *string `type:"string"`
13121}
13122
13123// String returns the string representation
13124func (s RecurringCharge) String() string {
13125	return awsutil.Prettify(s)
13126}
13127
13128// GoString returns the string representation
13129func (s RecurringCharge) GoString() string {
13130	return s.String()
13131}
13132
13133// SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
13134func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
13135	s.RecurringChargeAmount = &v
13136	return s
13137}
13138
13139// SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
13140func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
13141	s.RecurringChargeFrequency = &v
13142	return s
13143}
13144
13145// Represents the input of a RemoveTagsFromResource operation.
13146type RemoveTagsFromResourceInput struct {
13147	_ struct{} `type:"structure"`
13148
13149	// The Amazon Resource Name (ARN) of the resource from which you want the tags
13150	// removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
13151	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
13152	//
13153	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
13154	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
13155	//
13156	// ResourceName is a required field
13157	ResourceName *string `type:"string" required:"true"`
13158
13159	// A list of TagKeys identifying the tags you want removed from the named resource.
13160	//
13161	// TagKeys is a required field
13162	TagKeys []*string `type:"list" required:"true"`
13163}
13164
13165// String returns the string representation
13166func (s RemoveTagsFromResourceInput) String() string {
13167	return awsutil.Prettify(s)
13168}
13169
13170// GoString returns the string representation
13171func (s RemoveTagsFromResourceInput) GoString() string {
13172	return s.String()
13173}
13174
13175// Validate inspects the fields of the type to determine if they are valid.
13176func (s *RemoveTagsFromResourceInput) Validate() error {
13177	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
13178	if s.ResourceName == nil {
13179		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
13180	}
13181	if s.TagKeys == nil {
13182		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
13183	}
13184
13185	if invalidParams.Len() > 0 {
13186		return invalidParams
13187	}
13188	return nil
13189}
13190
13191// SetResourceName sets the ResourceName field's value.
13192func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
13193	s.ResourceName = &v
13194	return s
13195}
13196
13197// SetTagKeys sets the TagKeys field's value.
13198func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
13199	s.TagKeys = v
13200	return s
13201}
13202
13203// Contains all of the attributes of a specific Redis replication group.
13204type ReplicationGroup struct {
13205	_ struct{} `type:"structure"`
13206
13207	// A flag that enables encryption at-rest when set to true.
13208	//
13209	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
13210	// is created. To enable encryption at-rest on a cluster you must set AtRestEncryptionEnabled
13211	// to true when you create a cluster.
13212	//
13213	// Required: Only available when creating a replication group in an Amazon VPC
13214	// using redis version 3.2.6, 4.x or later.
13215	//
13216	// Default: false
13217	AtRestEncryptionEnabled *bool `type:"boolean"`
13218
13219	// A flag that enables using an AuthToken (password) when issuing Redis commands.
13220	//
13221	// Default: false
13222	AuthTokenEnabled *bool `type:"boolean"`
13223
13224	// The date the auth token was last modified
13225	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
13226
13227	// Indicates the status of Multi-AZ with automatic failover for this Redis replication
13228	// group.
13229	//
13230	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
13231	// on:
13232	//
13233	//    * Redis versions earlier than 2.8.6.
13234	//
13235	//    * Redis (cluster mode disabled): T1 node types.
13236	//
13237	//    * Redis (cluster mode enabled): T1 node types.
13238	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
13239
13240	// The name of the compute and memory capacity node type for each node in the
13241	// replication group.
13242	CacheNodeType *string `type:"string"`
13243
13244	// A flag indicating whether or not this replication group is cluster enabled;
13245	// i.e., whether its data can be partitioned across multiple shards (API/CLI:
13246	// node groups).
13247	//
13248	// Valid values: true | false
13249	ClusterEnabled *bool `type:"boolean"`
13250
13251	// The configuration endpoint for this replication group. Use the configuration
13252	// endpoint to connect to this replication group.
13253	ConfigurationEndpoint *Endpoint `type:"structure"`
13254
13255	// The user supplied description of the replication group.
13256	Description *string `type:"string"`
13257
13258	// The ID of the KMS key used to encrypt the disk in the cluster.
13259	KmsKeyId *string `type:"string"`
13260
13261	// The names of all the cache clusters that are part of this replication group.
13262	MemberClusters []*string `locationNameList:"ClusterId" type:"list"`
13263
13264	// A list of node groups in this replication group. For Redis (cluster mode
13265	// disabled) replication groups, this is a single-element list. For Redis (cluster
13266	// mode enabled) replication groups, the list contains an entry for each node
13267	// group (shard).
13268	NodeGroups []*NodeGroup `locationNameList:"NodeGroup" type:"list"`
13269
13270	// A group of settings to be applied to the replication group, either immediately
13271	// or during the next maintenance window.
13272	PendingModifiedValues *ReplicationGroupPendingModifiedValues `type:"structure"`
13273
13274	// The identifier for the replication group.
13275	ReplicationGroupId *string `type:"string"`
13276
13277	// The number of days for which ElastiCache retains automatic cluster snapshots
13278	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
13279	// a snapshot that was taken today is retained for 5 days before being deleted.
13280	//
13281	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
13282	// off.
13283	SnapshotRetentionLimit *int64 `type:"integer"`
13284
13285	// The daily time range (in UTC) during which ElastiCache begins taking a daily
13286	// snapshot of your node group (shard).
13287	//
13288	// Example: 05:00-09:00
13289	//
13290	// If you do not specify this parameter, ElastiCache automatically chooses an
13291	// appropriate time range.
13292	//
13293	// This parameter is only valid if the Engine parameter is redis.
13294	SnapshotWindow *string `type:"string"`
13295
13296	// The cluster ID that is used as the daily snapshot source for the replication
13297	// group.
13298	SnapshottingClusterId *string `type:"string"`
13299
13300	// The current state of this replication group - creating, available, modifying,
13301	// deleting, create-failed, snapshotting.
13302	Status *string `type:"string"`
13303
13304	// A flag that enables in-transit encryption when set to true.
13305	//
13306	// You cannot modify the value of TransitEncryptionEnabled after the cluster
13307	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
13308	// to true when you create a cluster.
13309	//
13310	// Required: Only available when creating a replication group in an Amazon VPC
13311	// using redis version 3.2.6, 4.x or later.
13312	//
13313	// Default: false
13314	TransitEncryptionEnabled *bool `type:"boolean"`
13315}
13316
13317// String returns the string representation
13318func (s ReplicationGroup) String() string {
13319	return awsutil.Prettify(s)
13320}
13321
13322// GoString returns the string representation
13323func (s ReplicationGroup) GoString() string {
13324	return s.String()
13325}
13326
13327// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
13328func (s *ReplicationGroup) SetAtRestEncryptionEnabled(v bool) *ReplicationGroup {
13329	s.AtRestEncryptionEnabled = &v
13330	return s
13331}
13332
13333// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
13334func (s *ReplicationGroup) SetAuthTokenEnabled(v bool) *ReplicationGroup {
13335	s.AuthTokenEnabled = &v
13336	return s
13337}
13338
13339// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
13340func (s *ReplicationGroup) SetAuthTokenLastModifiedDate(v time.Time) *ReplicationGroup {
13341	s.AuthTokenLastModifiedDate = &v
13342	return s
13343}
13344
13345// SetAutomaticFailover sets the AutomaticFailover field's value.
13346func (s *ReplicationGroup) SetAutomaticFailover(v string) *ReplicationGroup {
13347	s.AutomaticFailover = &v
13348	return s
13349}
13350
13351// SetCacheNodeType sets the CacheNodeType field's value.
13352func (s *ReplicationGroup) SetCacheNodeType(v string) *ReplicationGroup {
13353	s.CacheNodeType = &v
13354	return s
13355}
13356
13357// SetClusterEnabled sets the ClusterEnabled field's value.
13358func (s *ReplicationGroup) SetClusterEnabled(v bool) *ReplicationGroup {
13359	s.ClusterEnabled = &v
13360	return s
13361}
13362
13363// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
13364func (s *ReplicationGroup) SetConfigurationEndpoint(v *Endpoint) *ReplicationGroup {
13365	s.ConfigurationEndpoint = v
13366	return s
13367}
13368
13369// SetDescription sets the Description field's value.
13370func (s *ReplicationGroup) SetDescription(v string) *ReplicationGroup {
13371	s.Description = &v
13372	return s
13373}
13374
13375// SetKmsKeyId sets the KmsKeyId field's value.
13376func (s *ReplicationGroup) SetKmsKeyId(v string) *ReplicationGroup {
13377	s.KmsKeyId = &v
13378	return s
13379}
13380
13381// SetMemberClusters sets the MemberClusters field's value.
13382func (s *ReplicationGroup) SetMemberClusters(v []*string) *ReplicationGroup {
13383	s.MemberClusters = v
13384	return s
13385}
13386
13387// SetNodeGroups sets the NodeGroups field's value.
13388func (s *ReplicationGroup) SetNodeGroups(v []*NodeGroup) *ReplicationGroup {
13389	s.NodeGroups = v
13390	return s
13391}
13392
13393// SetPendingModifiedValues sets the PendingModifiedValues field's value.
13394func (s *ReplicationGroup) SetPendingModifiedValues(v *ReplicationGroupPendingModifiedValues) *ReplicationGroup {
13395	s.PendingModifiedValues = v
13396	return s
13397}
13398
13399// SetReplicationGroupId sets the ReplicationGroupId field's value.
13400func (s *ReplicationGroup) SetReplicationGroupId(v string) *ReplicationGroup {
13401	s.ReplicationGroupId = &v
13402	return s
13403}
13404
13405// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
13406func (s *ReplicationGroup) SetSnapshotRetentionLimit(v int64) *ReplicationGroup {
13407	s.SnapshotRetentionLimit = &v
13408	return s
13409}
13410
13411// SetSnapshotWindow sets the SnapshotWindow field's value.
13412func (s *ReplicationGroup) SetSnapshotWindow(v string) *ReplicationGroup {
13413	s.SnapshotWindow = &v
13414	return s
13415}
13416
13417// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
13418func (s *ReplicationGroup) SetSnapshottingClusterId(v string) *ReplicationGroup {
13419	s.SnapshottingClusterId = &v
13420	return s
13421}
13422
13423// SetStatus sets the Status field's value.
13424func (s *ReplicationGroup) SetStatus(v string) *ReplicationGroup {
13425	s.Status = &v
13426	return s
13427}
13428
13429// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
13430func (s *ReplicationGroup) SetTransitEncryptionEnabled(v bool) *ReplicationGroup {
13431	s.TransitEncryptionEnabled = &v
13432	return s
13433}
13434
13435// The settings to be applied to the Redis replication group, either immediately
13436// or during the next maintenance window.
13437type ReplicationGroupPendingModifiedValues struct {
13438	_ struct{} `type:"structure"`
13439
13440	// The auth token status
13441	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
13442
13443	// Indicates the status of Multi-AZ with automatic failover for this Redis replication
13444	// group.
13445	//
13446	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
13447	// on:
13448	//
13449	//    * Redis versions earlier than 2.8.6.
13450	//
13451	//    * Redis (cluster mode disabled): T1 node types.
13452	//
13453	//    * Redis (cluster mode enabled): T1 node types.
13454	AutomaticFailoverStatus *string `type:"string" enum:"PendingAutomaticFailoverStatus"`
13455
13456	// The primary cluster ID that is applied immediately (if --apply-immediately
13457	// was specified), or during the next maintenance window.
13458	PrimaryClusterId *string `type:"string"`
13459
13460	// The status of an online resharding operation.
13461	Resharding *ReshardingStatus `type:"structure"`
13462}
13463
13464// String returns the string representation
13465func (s ReplicationGroupPendingModifiedValues) String() string {
13466	return awsutil.Prettify(s)
13467}
13468
13469// GoString returns the string representation
13470func (s ReplicationGroupPendingModifiedValues) GoString() string {
13471	return s.String()
13472}
13473
13474// SetAuthTokenStatus sets the AuthTokenStatus field's value.
13475func (s *ReplicationGroupPendingModifiedValues) SetAuthTokenStatus(v string) *ReplicationGroupPendingModifiedValues {
13476	s.AuthTokenStatus = &v
13477	return s
13478}
13479
13480// SetAutomaticFailoverStatus sets the AutomaticFailoverStatus field's value.
13481func (s *ReplicationGroupPendingModifiedValues) SetAutomaticFailoverStatus(v string) *ReplicationGroupPendingModifiedValues {
13482	s.AutomaticFailoverStatus = &v
13483	return s
13484}
13485
13486// SetPrimaryClusterId sets the PrimaryClusterId field's value.
13487func (s *ReplicationGroupPendingModifiedValues) SetPrimaryClusterId(v string) *ReplicationGroupPendingModifiedValues {
13488	s.PrimaryClusterId = &v
13489	return s
13490}
13491
13492// SetResharding sets the Resharding field's value.
13493func (s *ReplicationGroupPendingModifiedValues) SetResharding(v *ReshardingStatus) *ReplicationGroupPendingModifiedValues {
13494	s.Resharding = v
13495	return s
13496}
13497
13498// Represents the output of a PurchaseReservedCacheNodesOffering operation.
13499type ReservedCacheNode struct {
13500	_ struct{} `type:"structure"`
13501
13502	// The number of cache nodes that have been reserved.
13503	CacheNodeCount *int64 `type:"integer"`
13504
13505	// The cache node type for the reserved cache nodes.
13506	//
13507	// The following node types are supported by ElastiCache. Generally speaking,
13508	// the current generation types provide more memory and computational power
13509	// at lower cost when compared to their equivalent previous generation counterparts.
13510	//
13511	//    * General purpose: Current generation: M5 node types: cache.m5.large,
13512	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
13513	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
13514	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
13515	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
13516	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
13517	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
13518	//    cache.m3.2xlarge
13519	//
13520	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
13521	//    cache.c1.xlarge
13522	//
13523	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
13524	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
13525	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
13526	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
13527	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
13528	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
13529	//    cache.r3.8xlarge
13530	//
13531	// Additional node type info
13532	//
13533	//    * All current generation instance types are created in Amazon VPC by default.
13534	//
13535	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
13536	//
13537	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
13538	//
13539	//    * Redis configuration variables appendonly and appendfsync are not supported
13540	//    on Redis version 2.8.22 and later.
13541	CacheNodeType *string `type:"string"`
13542
13543	// The duration of the reservation in seconds.
13544	Duration *int64 `type:"integer"`
13545
13546	// The fixed price charged for this reserved cache node.
13547	FixedPrice *float64 `type:"double"`
13548
13549	// The offering type of this reserved cache node.
13550	OfferingType *string `type:"string"`
13551
13552	// The description of the reserved cache node.
13553	ProductDescription *string `type:"string"`
13554
13555	// The recurring price charged to run this reserved cache node.
13556	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
13557
13558	// The Amazon Resource Name (ARN) of the reserved cache node.
13559	//
13560	// Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582
13561	ReservationARN *string `type:"string"`
13562
13563	// The unique identifier for the reservation.
13564	ReservedCacheNodeId *string `type:"string"`
13565
13566	// The offering identifier.
13567	ReservedCacheNodesOfferingId *string `type:"string"`
13568
13569	// The time the reservation started.
13570	StartTime *time.Time `type:"timestamp"`
13571
13572	// The state of the reserved cache node.
13573	State *string `type:"string"`
13574
13575	// The hourly price charged for this reserved cache node.
13576	UsagePrice *float64 `type:"double"`
13577}
13578
13579// String returns the string representation
13580func (s ReservedCacheNode) String() string {
13581	return awsutil.Prettify(s)
13582}
13583
13584// GoString returns the string representation
13585func (s ReservedCacheNode) GoString() string {
13586	return s.String()
13587}
13588
13589// SetCacheNodeCount sets the CacheNodeCount field's value.
13590func (s *ReservedCacheNode) SetCacheNodeCount(v int64) *ReservedCacheNode {
13591	s.CacheNodeCount = &v
13592	return s
13593}
13594
13595// SetCacheNodeType sets the CacheNodeType field's value.
13596func (s *ReservedCacheNode) SetCacheNodeType(v string) *ReservedCacheNode {
13597	s.CacheNodeType = &v
13598	return s
13599}
13600
13601// SetDuration sets the Duration field's value.
13602func (s *ReservedCacheNode) SetDuration(v int64) *ReservedCacheNode {
13603	s.Duration = &v
13604	return s
13605}
13606
13607// SetFixedPrice sets the FixedPrice field's value.
13608func (s *ReservedCacheNode) SetFixedPrice(v float64) *ReservedCacheNode {
13609	s.FixedPrice = &v
13610	return s
13611}
13612
13613// SetOfferingType sets the OfferingType field's value.
13614func (s *ReservedCacheNode) SetOfferingType(v string) *ReservedCacheNode {
13615	s.OfferingType = &v
13616	return s
13617}
13618
13619// SetProductDescription sets the ProductDescription field's value.
13620func (s *ReservedCacheNode) SetProductDescription(v string) *ReservedCacheNode {
13621	s.ProductDescription = &v
13622	return s
13623}
13624
13625// SetRecurringCharges sets the RecurringCharges field's value.
13626func (s *ReservedCacheNode) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNode {
13627	s.RecurringCharges = v
13628	return s
13629}
13630
13631// SetReservationARN sets the ReservationARN field's value.
13632func (s *ReservedCacheNode) SetReservationARN(v string) *ReservedCacheNode {
13633	s.ReservationARN = &v
13634	return s
13635}
13636
13637// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
13638func (s *ReservedCacheNode) SetReservedCacheNodeId(v string) *ReservedCacheNode {
13639	s.ReservedCacheNodeId = &v
13640	return s
13641}
13642
13643// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13644func (s *ReservedCacheNode) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNode {
13645	s.ReservedCacheNodesOfferingId = &v
13646	return s
13647}
13648
13649// SetStartTime sets the StartTime field's value.
13650func (s *ReservedCacheNode) SetStartTime(v time.Time) *ReservedCacheNode {
13651	s.StartTime = &v
13652	return s
13653}
13654
13655// SetState sets the State field's value.
13656func (s *ReservedCacheNode) SetState(v string) *ReservedCacheNode {
13657	s.State = &v
13658	return s
13659}
13660
13661// SetUsagePrice sets the UsagePrice field's value.
13662func (s *ReservedCacheNode) SetUsagePrice(v float64) *ReservedCacheNode {
13663	s.UsagePrice = &v
13664	return s
13665}
13666
13667// Describes all of the attributes of a reserved cache node offering.
13668type ReservedCacheNodesOffering struct {
13669	_ struct{} `type:"structure"`
13670
13671	// The cache node type for the reserved cache node.
13672	//
13673	// The following node types are supported by ElastiCache. Generally speaking,
13674	// the current generation types provide more memory and computational power
13675	// at lower cost when compared to their equivalent previous generation counterparts.
13676	//
13677	//    * General purpose: Current generation: M5 node types: cache.m5.large,
13678	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
13679	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
13680	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
13681	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
13682	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
13683	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
13684	//    cache.m3.2xlarge
13685	//
13686	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
13687	//    cache.c1.xlarge
13688	//
13689	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
13690	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
13691	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
13692	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
13693	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
13694	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
13695	//    cache.r3.8xlarge
13696	//
13697	// Additional node type info
13698	//
13699	//    * All current generation instance types are created in Amazon VPC by default.
13700	//
13701	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
13702	//
13703	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
13704	//
13705	//    * Redis configuration variables appendonly and appendfsync are not supported
13706	//    on Redis version 2.8.22 and later.
13707	CacheNodeType *string `type:"string"`
13708
13709	// The duration of the offering. in seconds.
13710	Duration *int64 `type:"integer"`
13711
13712	// The fixed price charged for this offering.
13713	FixedPrice *float64 `type:"double"`
13714
13715	// The offering type.
13716	OfferingType *string `type:"string"`
13717
13718	// The cache engine used by the offering.
13719	ProductDescription *string `type:"string"`
13720
13721	// The recurring price charged to run this reserved cache node.
13722	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
13723
13724	// A unique identifier for the reserved cache node offering.
13725	ReservedCacheNodesOfferingId *string `type:"string"`
13726
13727	// The hourly price charged for this offering.
13728	UsagePrice *float64 `type:"double"`
13729}
13730
13731// String returns the string representation
13732func (s ReservedCacheNodesOffering) String() string {
13733	return awsutil.Prettify(s)
13734}
13735
13736// GoString returns the string representation
13737func (s ReservedCacheNodesOffering) GoString() string {
13738	return s.String()
13739}
13740
13741// SetCacheNodeType sets the CacheNodeType field's value.
13742func (s *ReservedCacheNodesOffering) SetCacheNodeType(v string) *ReservedCacheNodesOffering {
13743	s.CacheNodeType = &v
13744	return s
13745}
13746
13747// SetDuration sets the Duration field's value.
13748func (s *ReservedCacheNodesOffering) SetDuration(v int64) *ReservedCacheNodesOffering {
13749	s.Duration = &v
13750	return s
13751}
13752
13753// SetFixedPrice sets the FixedPrice field's value.
13754func (s *ReservedCacheNodesOffering) SetFixedPrice(v float64) *ReservedCacheNodesOffering {
13755	s.FixedPrice = &v
13756	return s
13757}
13758
13759// SetOfferingType sets the OfferingType field's value.
13760func (s *ReservedCacheNodesOffering) SetOfferingType(v string) *ReservedCacheNodesOffering {
13761	s.OfferingType = &v
13762	return s
13763}
13764
13765// SetProductDescription sets the ProductDescription field's value.
13766func (s *ReservedCacheNodesOffering) SetProductDescription(v string) *ReservedCacheNodesOffering {
13767	s.ProductDescription = &v
13768	return s
13769}
13770
13771// SetRecurringCharges sets the RecurringCharges field's value.
13772func (s *ReservedCacheNodesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNodesOffering {
13773	s.RecurringCharges = v
13774	return s
13775}
13776
13777// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13778func (s *ReservedCacheNodesOffering) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNodesOffering {
13779	s.ReservedCacheNodesOfferingId = &v
13780	return s
13781}
13782
13783// SetUsagePrice sets the UsagePrice field's value.
13784func (s *ReservedCacheNodesOffering) SetUsagePrice(v float64) *ReservedCacheNodesOffering {
13785	s.UsagePrice = &v
13786	return s
13787}
13788
13789// Represents the input of a ResetCacheParameterGroup operation.
13790type ResetCacheParameterGroupInput struct {
13791	_ struct{} `type:"structure"`
13792
13793	// The name of the cache parameter group to reset.
13794	//
13795	// CacheParameterGroupName is a required field
13796	CacheParameterGroupName *string `type:"string" required:"true"`
13797
13798	// An array of parameter names to reset to their default values. If ResetAllParameters
13799	// is true, do not use ParameterNameValues. If ResetAllParameters is false,
13800	// you must specify the name of at least one parameter to reset.
13801	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"`
13802
13803	// If true, all parameters in the cache parameter group are reset to their default
13804	// values. If false, only the parameters listed by ParameterNameValues are reset
13805	// to their default values.
13806	//
13807	// Valid values: true | false
13808	ResetAllParameters *bool `type:"boolean"`
13809}
13810
13811// String returns the string representation
13812func (s ResetCacheParameterGroupInput) String() string {
13813	return awsutil.Prettify(s)
13814}
13815
13816// GoString returns the string representation
13817func (s ResetCacheParameterGroupInput) GoString() string {
13818	return s.String()
13819}
13820
13821// Validate inspects the fields of the type to determine if they are valid.
13822func (s *ResetCacheParameterGroupInput) Validate() error {
13823	invalidParams := request.ErrInvalidParams{Context: "ResetCacheParameterGroupInput"}
13824	if s.CacheParameterGroupName == nil {
13825		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
13826	}
13827
13828	if invalidParams.Len() > 0 {
13829		return invalidParams
13830	}
13831	return nil
13832}
13833
13834// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13835func (s *ResetCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ResetCacheParameterGroupInput {
13836	s.CacheParameterGroupName = &v
13837	return s
13838}
13839
13840// SetParameterNameValues sets the ParameterNameValues field's value.
13841func (s *ResetCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ResetCacheParameterGroupInput {
13842	s.ParameterNameValues = v
13843	return s
13844}
13845
13846// SetResetAllParameters sets the ResetAllParameters field's value.
13847func (s *ResetCacheParameterGroupInput) SetResetAllParameters(v bool) *ResetCacheParameterGroupInput {
13848	s.ResetAllParameters = &v
13849	return s
13850}
13851
13852// A list of PreferredAvailabilityZones objects that specifies the configuration
13853// of a node group in the resharded cluster.
13854type ReshardingConfiguration struct {
13855	_ struct{} `type:"structure"`
13856
13857	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
13858	// for the node group these configuration values apply to.
13859	NodeGroupId *string `min:"1" type:"string"`
13860
13861	// A list of preferred availability zones for the nodes in this cluster.
13862	PreferredAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
13863}
13864
13865// String returns the string representation
13866func (s ReshardingConfiguration) String() string {
13867	return awsutil.Prettify(s)
13868}
13869
13870// GoString returns the string representation
13871func (s ReshardingConfiguration) GoString() string {
13872	return s.String()
13873}
13874
13875// Validate inspects the fields of the type to determine if they are valid.
13876func (s *ReshardingConfiguration) Validate() error {
13877	invalidParams := request.ErrInvalidParams{Context: "ReshardingConfiguration"}
13878	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
13879		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
13880	}
13881
13882	if invalidParams.Len() > 0 {
13883		return invalidParams
13884	}
13885	return nil
13886}
13887
13888// SetNodeGroupId sets the NodeGroupId field's value.
13889func (s *ReshardingConfiguration) SetNodeGroupId(v string) *ReshardingConfiguration {
13890	s.NodeGroupId = &v
13891	return s
13892}
13893
13894// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
13895func (s *ReshardingConfiguration) SetPreferredAvailabilityZones(v []*string) *ReshardingConfiguration {
13896	s.PreferredAvailabilityZones = v
13897	return s
13898}
13899
13900// The status of an online resharding operation.
13901type ReshardingStatus struct {
13902	_ struct{} `type:"structure"`
13903
13904	// Represents the progress of an online resharding operation.
13905	SlotMigration *SlotMigration `type:"structure"`
13906}
13907
13908// String returns the string representation
13909func (s ReshardingStatus) String() string {
13910	return awsutil.Prettify(s)
13911}
13912
13913// GoString returns the string representation
13914func (s ReshardingStatus) GoString() string {
13915	return s.String()
13916}
13917
13918// SetSlotMigration sets the SlotMigration field's value.
13919func (s *ReshardingStatus) SetSlotMigration(v *SlotMigration) *ReshardingStatus {
13920	s.SlotMigration = v
13921	return s
13922}
13923
13924// Represents the input of a RevokeCacheSecurityGroupIngress operation.
13925type RevokeCacheSecurityGroupIngressInput struct {
13926	_ struct{} `type:"structure"`
13927
13928	// The name of the cache security group to revoke ingress from.
13929	//
13930	// CacheSecurityGroupName is a required field
13931	CacheSecurityGroupName *string `type:"string" required:"true"`
13932
13933	// The name of the Amazon EC2 security group to revoke access from.
13934	//
13935	// EC2SecurityGroupName is a required field
13936	EC2SecurityGroupName *string `type:"string" required:"true"`
13937
13938	// The AWS account number of the Amazon EC2 security group owner. Note that
13939	// this is not the same thing as an AWS access key ID - you must provide a valid
13940	// AWS account number for this parameter.
13941	//
13942	// EC2SecurityGroupOwnerId is a required field
13943	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
13944}
13945
13946// String returns the string representation
13947func (s RevokeCacheSecurityGroupIngressInput) String() string {
13948	return awsutil.Prettify(s)
13949}
13950
13951// GoString returns the string representation
13952func (s RevokeCacheSecurityGroupIngressInput) GoString() string {
13953	return s.String()
13954}
13955
13956// Validate inspects the fields of the type to determine if they are valid.
13957func (s *RevokeCacheSecurityGroupIngressInput) Validate() error {
13958	invalidParams := request.ErrInvalidParams{Context: "RevokeCacheSecurityGroupIngressInput"}
13959	if s.CacheSecurityGroupName == nil {
13960		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
13961	}
13962	if s.EC2SecurityGroupName == nil {
13963		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
13964	}
13965	if s.EC2SecurityGroupOwnerId == nil {
13966		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
13967	}
13968
13969	if invalidParams.Len() > 0 {
13970		return invalidParams
13971	}
13972	return nil
13973}
13974
13975// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
13976func (s *RevokeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
13977	s.CacheSecurityGroupName = &v
13978	return s
13979}
13980
13981// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
13982func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
13983	s.EC2SecurityGroupName = &v
13984	return s
13985}
13986
13987// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
13988func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeCacheSecurityGroupIngressInput {
13989	s.EC2SecurityGroupOwnerId = &v
13990	return s
13991}
13992
13993type RevokeCacheSecurityGroupIngressOutput struct {
13994	_ struct{} `type:"structure"`
13995
13996	// Represents the output of one of the following operations:
13997	//
13998	//    * AuthorizeCacheSecurityGroupIngress
13999	//
14000	//    * CreateCacheSecurityGroup
14001	//
14002	//    * RevokeCacheSecurityGroupIngress
14003	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
14004}
14005
14006// String returns the string representation
14007func (s RevokeCacheSecurityGroupIngressOutput) String() string {
14008	return awsutil.Prettify(s)
14009}
14010
14011// GoString returns the string representation
14012func (s RevokeCacheSecurityGroupIngressOutput) GoString() string {
14013	return s.String()
14014}
14015
14016// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
14017func (s *RevokeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *RevokeCacheSecurityGroupIngressOutput {
14018	s.CacheSecurityGroup = v
14019	return s
14020}
14021
14022// Represents a single cache security group and its status.
14023type SecurityGroupMembership struct {
14024	_ struct{} `type:"structure"`
14025
14026	// The identifier of the cache security group.
14027	SecurityGroupId *string `type:"string"`
14028
14029	// The status of the cache security group membership. The status changes whenever
14030	// a cache security group is modified, or when the cache security groups assigned
14031	// to a cluster are modified.
14032	Status *string `type:"string"`
14033}
14034
14035// String returns the string representation
14036func (s SecurityGroupMembership) String() string {
14037	return awsutil.Prettify(s)
14038}
14039
14040// GoString returns the string representation
14041func (s SecurityGroupMembership) GoString() string {
14042	return s.String()
14043}
14044
14045// SetSecurityGroupId sets the SecurityGroupId field's value.
14046func (s *SecurityGroupMembership) SetSecurityGroupId(v string) *SecurityGroupMembership {
14047	s.SecurityGroupId = &v
14048	return s
14049}
14050
14051// SetStatus sets the Status field's value.
14052func (s *SecurityGroupMembership) SetStatus(v string) *SecurityGroupMembership {
14053	s.Status = &v
14054	return s
14055}
14056
14057// An update that you can apply to your Redis clusters.
14058type ServiceUpdate struct {
14059	_ struct{} `type:"structure"`
14060
14061	// Indicates whether the service update will be automatically applied once the
14062	// recommended apply-by date has expired.
14063	AutoUpdateAfterRecommendedApplyByDate *bool `type:"boolean"`
14064
14065	// The Elasticache engine to which the update applies. Either Redis or Memcached
14066	Engine *string `type:"string"`
14067
14068	// The Elasticache engine version to which the update applies. Either Redis
14069	// or Memcached engine version
14070	EngineVersion *string `type:"string"`
14071
14072	// The estimated length of time the service update will take
14073	EstimatedUpdateTime *string `type:"string"`
14074
14075	// Provides details of the service update
14076	ServiceUpdateDescription *string `type:"string"`
14077
14078	// The date after which the service update is no longer available
14079	ServiceUpdateEndDate *time.Time `type:"timestamp"`
14080
14081	// The unique ID of the service update
14082	ServiceUpdateName *string `type:"string"`
14083
14084	// The recommendend date to apply the service update in order to ensure compliance.
14085	// For information on compliance, see Self-Service Security Updates for Compliance
14086	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
14087	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
14088
14089	// The date when the service update is initially available
14090	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
14091
14092	// The severity of the service update
14093	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
14094
14095	// The status of the service update
14096	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
14097
14098	// Reflects the nature of the service update
14099	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
14100}
14101
14102// String returns the string representation
14103func (s ServiceUpdate) String() string {
14104	return awsutil.Prettify(s)
14105}
14106
14107// GoString returns the string representation
14108func (s ServiceUpdate) GoString() string {
14109	return s.String()
14110}
14111
14112// SetAutoUpdateAfterRecommendedApplyByDate sets the AutoUpdateAfterRecommendedApplyByDate field's value.
14113func (s *ServiceUpdate) SetAutoUpdateAfterRecommendedApplyByDate(v bool) *ServiceUpdate {
14114	s.AutoUpdateAfterRecommendedApplyByDate = &v
14115	return s
14116}
14117
14118// SetEngine sets the Engine field's value.
14119func (s *ServiceUpdate) SetEngine(v string) *ServiceUpdate {
14120	s.Engine = &v
14121	return s
14122}
14123
14124// SetEngineVersion sets the EngineVersion field's value.
14125func (s *ServiceUpdate) SetEngineVersion(v string) *ServiceUpdate {
14126	s.EngineVersion = &v
14127	return s
14128}
14129
14130// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
14131func (s *ServiceUpdate) SetEstimatedUpdateTime(v string) *ServiceUpdate {
14132	s.EstimatedUpdateTime = &v
14133	return s
14134}
14135
14136// SetServiceUpdateDescription sets the ServiceUpdateDescription field's value.
14137func (s *ServiceUpdate) SetServiceUpdateDescription(v string) *ServiceUpdate {
14138	s.ServiceUpdateDescription = &v
14139	return s
14140}
14141
14142// SetServiceUpdateEndDate sets the ServiceUpdateEndDate field's value.
14143func (s *ServiceUpdate) SetServiceUpdateEndDate(v time.Time) *ServiceUpdate {
14144	s.ServiceUpdateEndDate = &v
14145	return s
14146}
14147
14148// SetServiceUpdateName sets the ServiceUpdateName field's value.
14149func (s *ServiceUpdate) SetServiceUpdateName(v string) *ServiceUpdate {
14150	s.ServiceUpdateName = &v
14151	return s
14152}
14153
14154// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
14155func (s *ServiceUpdate) SetServiceUpdateRecommendedApplyByDate(v time.Time) *ServiceUpdate {
14156	s.ServiceUpdateRecommendedApplyByDate = &v
14157	return s
14158}
14159
14160// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
14161func (s *ServiceUpdate) SetServiceUpdateReleaseDate(v time.Time) *ServiceUpdate {
14162	s.ServiceUpdateReleaseDate = &v
14163	return s
14164}
14165
14166// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
14167func (s *ServiceUpdate) SetServiceUpdateSeverity(v string) *ServiceUpdate {
14168	s.ServiceUpdateSeverity = &v
14169	return s
14170}
14171
14172// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
14173func (s *ServiceUpdate) SetServiceUpdateStatus(v string) *ServiceUpdate {
14174	s.ServiceUpdateStatus = &v
14175	return s
14176}
14177
14178// SetServiceUpdateType sets the ServiceUpdateType field's value.
14179func (s *ServiceUpdate) SetServiceUpdateType(v string) *ServiceUpdate {
14180	s.ServiceUpdateType = &v
14181	return s
14182}
14183
14184// Represents the progress of an online resharding operation.
14185type SlotMigration struct {
14186	_ struct{} `type:"structure"`
14187
14188	// The percentage of the slot migration that is complete.
14189	ProgressPercentage *float64 `type:"double"`
14190}
14191
14192// String returns the string representation
14193func (s SlotMigration) String() string {
14194	return awsutil.Prettify(s)
14195}
14196
14197// GoString returns the string representation
14198func (s SlotMigration) GoString() string {
14199	return s.String()
14200}
14201
14202// SetProgressPercentage sets the ProgressPercentage field's value.
14203func (s *SlotMigration) SetProgressPercentage(v float64) *SlotMigration {
14204	s.ProgressPercentage = &v
14205	return s
14206}
14207
14208// Represents a copy of an entire Redis cluster as of the time when the snapshot
14209// was taken.
14210type Snapshot struct {
14211	_ struct{} `type:"structure"`
14212
14213	// This parameter is currently disabled.
14214	AutoMinorVersionUpgrade *bool `type:"boolean"`
14215
14216	// Indicates the status of Multi-AZ with automatic failover for the source Redis
14217	// replication group.
14218	//
14219	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
14220	// on:
14221	//
14222	//    * Redis versions earlier than 2.8.6.
14223	//
14224	//    * Redis (cluster mode disabled): T1 node types.
14225	//
14226	//    * Redis (cluster mode enabled): T1 node types.
14227	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
14228
14229	// The date and time when the source cluster was created.
14230	CacheClusterCreateTime *time.Time `type:"timestamp"`
14231
14232	// The user-supplied identifier of the source cluster.
14233	CacheClusterId *string `type:"string"`
14234
14235	// The name of the compute and memory capacity node type for the source cluster.
14236	//
14237	// The following node types are supported by ElastiCache. Generally speaking,
14238	// the current generation types provide more memory and computational power
14239	// at lower cost when compared to their equivalent previous generation counterparts.
14240	//
14241	//    * General purpose: Current generation: M5 node types: cache.m5.large,
14242	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
14243	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
14244	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
14245	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
14246	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
14247	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
14248	//    cache.m3.2xlarge
14249	//
14250	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
14251	//    cache.c1.xlarge
14252	//
14253	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
14254	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
14255	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
14256	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
14257	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
14258	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
14259	//    cache.r3.8xlarge
14260	//
14261	// Additional node type info
14262	//
14263	//    * All current generation instance types are created in Amazon VPC by default.
14264	//
14265	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
14266	//
14267	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
14268	//
14269	//    * Redis configuration variables appendonly and appendfsync are not supported
14270	//    on Redis version 2.8.22 and later.
14271	CacheNodeType *string `type:"string"`
14272
14273	// The cache parameter group that is associated with the source cluster.
14274	CacheParameterGroupName *string `type:"string"`
14275
14276	// The name of the cache subnet group associated with the source cluster.
14277	CacheSubnetGroupName *string `type:"string"`
14278
14279	// The name of the cache engine (memcached or redis) used by the source cluster.
14280	Engine *string `type:"string"`
14281
14282	// The version of the cache engine version that is used by the source cluster.
14283	EngineVersion *string `type:"string"`
14284
14285	// The ID of the KMS key used to encrypt the snapshot.
14286	KmsKeyId *string `type:"string"`
14287
14288	// A list of the cache nodes in the source cluster.
14289	NodeSnapshots []*NodeSnapshot `locationNameList:"NodeSnapshot" type:"list"`
14290
14291	// The number of cache nodes in the source cluster.
14292	//
14293	// For clusters running Redis, this value must be 1. For clusters running Memcached,
14294	// this value must be between 1 and 20.
14295	NumCacheNodes *int64 `type:"integer"`
14296
14297	// The number of node groups (shards) in this snapshot. When restoring from
14298	// a snapshot, the number of node groups (shards) in the snapshot and in the
14299	// restored replication group must be the same.
14300	NumNodeGroups *int64 `type:"integer"`
14301
14302	// The port number used by each cache nodes in the source cluster.
14303	Port *int64 `type:"integer"`
14304
14305	// The name of the Availability Zone in which the source cluster is located.
14306	PreferredAvailabilityZone *string `type:"string"`
14307
14308	// Specifies the weekly time range during which maintenance on the cluster is
14309	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
14310	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
14311	//
14312	// Valid values for ddd are:
14313	//
14314	//    * sun
14315	//
14316	//    * mon
14317	//
14318	//    * tue
14319	//
14320	//    * wed
14321	//
14322	//    * thu
14323	//
14324	//    * fri
14325	//
14326	//    * sat
14327	//
14328	// Example: sun:23:00-mon:01:30
14329	PreferredMaintenanceWindow *string `type:"string"`
14330
14331	// A description of the source replication group.
14332	ReplicationGroupDescription *string `type:"string"`
14333
14334	// The unique identifier of the source replication group.
14335	ReplicationGroupId *string `type:"string"`
14336
14337	// The name of a snapshot. For an automatic snapshot, the name is system-generated.
14338	// For a manual snapshot, this is the user-provided name.
14339	SnapshotName *string `type:"string"`
14340
14341	// For an automatic snapshot, the number of days for which ElastiCache retains
14342	// the snapshot before deleting it.
14343	//
14344	// For manual snapshots, this field reflects the SnapshotRetentionLimit for
14345	// the source cluster when the snapshot was created. This field is otherwise
14346	// ignored: Manual snapshots do not expire, and can only be deleted using the
14347	// DeleteSnapshot operation.
14348	//
14349	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
14350	// are turned off.
14351	SnapshotRetentionLimit *int64 `type:"integer"`
14352
14353	// Indicates whether the snapshot is from an automatic backup (automated) or
14354	// was created manually (manual).
14355	SnapshotSource *string `type:"string"`
14356
14357	// The status of the snapshot. Valid values: creating | available | restoring
14358	// | copying | deleting.
14359	SnapshotStatus *string `type:"string"`
14360
14361	// The daily time range during which ElastiCache takes daily snapshots of the
14362	// source cluster.
14363	SnapshotWindow *string `type:"string"`
14364
14365	// The Amazon Resource Name (ARN) for the topic used by the source cluster for
14366	// publishing notifications.
14367	TopicArn *string `type:"string"`
14368
14369	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
14370	// group for the source cluster.
14371	VpcId *string `type:"string"`
14372}
14373
14374// String returns the string representation
14375func (s Snapshot) String() string {
14376	return awsutil.Prettify(s)
14377}
14378
14379// GoString returns the string representation
14380func (s Snapshot) GoString() string {
14381	return s.String()
14382}
14383
14384// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
14385func (s *Snapshot) SetAutoMinorVersionUpgrade(v bool) *Snapshot {
14386	s.AutoMinorVersionUpgrade = &v
14387	return s
14388}
14389
14390// SetAutomaticFailover sets the AutomaticFailover field's value.
14391func (s *Snapshot) SetAutomaticFailover(v string) *Snapshot {
14392	s.AutomaticFailover = &v
14393	return s
14394}
14395
14396// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
14397func (s *Snapshot) SetCacheClusterCreateTime(v time.Time) *Snapshot {
14398	s.CacheClusterCreateTime = &v
14399	return s
14400}
14401
14402// SetCacheClusterId sets the CacheClusterId field's value.
14403func (s *Snapshot) SetCacheClusterId(v string) *Snapshot {
14404	s.CacheClusterId = &v
14405	return s
14406}
14407
14408// SetCacheNodeType sets the CacheNodeType field's value.
14409func (s *Snapshot) SetCacheNodeType(v string) *Snapshot {
14410	s.CacheNodeType = &v
14411	return s
14412}
14413
14414// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
14415func (s *Snapshot) SetCacheParameterGroupName(v string) *Snapshot {
14416	s.CacheParameterGroupName = &v
14417	return s
14418}
14419
14420// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
14421func (s *Snapshot) SetCacheSubnetGroupName(v string) *Snapshot {
14422	s.CacheSubnetGroupName = &v
14423	return s
14424}
14425
14426// SetEngine sets the Engine field's value.
14427func (s *Snapshot) SetEngine(v string) *Snapshot {
14428	s.Engine = &v
14429	return s
14430}
14431
14432// SetEngineVersion sets the EngineVersion field's value.
14433func (s *Snapshot) SetEngineVersion(v string) *Snapshot {
14434	s.EngineVersion = &v
14435	return s
14436}
14437
14438// SetKmsKeyId sets the KmsKeyId field's value.
14439func (s *Snapshot) SetKmsKeyId(v string) *Snapshot {
14440	s.KmsKeyId = &v
14441	return s
14442}
14443
14444// SetNodeSnapshots sets the NodeSnapshots field's value.
14445func (s *Snapshot) SetNodeSnapshots(v []*NodeSnapshot) *Snapshot {
14446	s.NodeSnapshots = v
14447	return s
14448}
14449
14450// SetNumCacheNodes sets the NumCacheNodes field's value.
14451func (s *Snapshot) SetNumCacheNodes(v int64) *Snapshot {
14452	s.NumCacheNodes = &v
14453	return s
14454}
14455
14456// SetNumNodeGroups sets the NumNodeGroups field's value.
14457func (s *Snapshot) SetNumNodeGroups(v int64) *Snapshot {
14458	s.NumNodeGroups = &v
14459	return s
14460}
14461
14462// SetPort sets the Port field's value.
14463func (s *Snapshot) SetPort(v int64) *Snapshot {
14464	s.Port = &v
14465	return s
14466}
14467
14468// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
14469func (s *Snapshot) SetPreferredAvailabilityZone(v string) *Snapshot {
14470	s.PreferredAvailabilityZone = &v
14471	return s
14472}
14473
14474// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
14475func (s *Snapshot) SetPreferredMaintenanceWindow(v string) *Snapshot {
14476	s.PreferredMaintenanceWindow = &v
14477	return s
14478}
14479
14480// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
14481func (s *Snapshot) SetReplicationGroupDescription(v string) *Snapshot {
14482	s.ReplicationGroupDescription = &v
14483	return s
14484}
14485
14486// SetReplicationGroupId sets the ReplicationGroupId field's value.
14487func (s *Snapshot) SetReplicationGroupId(v string) *Snapshot {
14488	s.ReplicationGroupId = &v
14489	return s
14490}
14491
14492// SetSnapshotName sets the SnapshotName field's value.
14493func (s *Snapshot) SetSnapshotName(v string) *Snapshot {
14494	s.SnapshotName = &v
14495	return s
14496}
14497
14498// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
14499func (s *Snapshot) SetSnapshotRetentionLimit(v int64) *Snapshot {
14500	s.SnapshotRetentionLimit = &v
14501	return s
14502}
14503
14504// SetSnapshotSource sets the SnapshotSource field's value.
14505func (s *Snapshot) SetSnapshotSource(v string) *Snapshot {
14506	s.SnapshotSource = &v
14507	return s
14508}
14509
14510// SetSnapshotStatus sets the SnapshotStatus field's value.
14511func (s *Snapshot) SetSnapshotStatus(v string) *Snapshot {
14512	s.SnapshotStatus = &v
14513	return s
14514}
14515
14516// SetSnapshotWindow sets the SnapshotWindow field's value.
14517func (s *Snapshot) SetSnapshotWindow(v string) *Snapshot {
14518	s.SnapshotWindow = &v
14519	return s
14520}
14521
14522// SetTopicArn sets the TopicArn field's value.
14523func (s *Snapshot) SetTopicArn(v string) *Snapshot {
14524	s.TopicArn = &v
14525	return s
14526}
14527
14528// SetVpcId sets the VpcId field's value.
14529func (s *Snapshot) SetVpcId(v string) *Snapshot {
14530	s.VpcId = &v
14531	return s
14532}
14533
14534type StartMigrationInput struct {
14535	_ struct{} `type:"structure"`
14536
14537	// List of endpoints from which data should be migrated. For Redis (cluster
14538	// mode disabled), list should have only one element.
14539	//
14540	// CustomerNodeEndpointList is a required field
14541	CustomerNodeEndpointList []*CustomerNodeEndpoint `type:"list" required:"true"`
14542
14543	// The ID of the replication group to which data should be migrated.
14544	//
14545	// ReplicationGroupId is a required field
14546	ReplicationGroupId *string `type:"string" required:"true"`
14547}
14548
14549// String returns the string representation
14550func (s StartMigrationInput) String() string {
14551	return awsutil.Prettify(s)
14552}
14553
14554// GoString returns the string representation
14555func (s StartMigrationInput) GoString() string {
14556	return s.String()
14557}
14558
14559// Validate inspects the fields of the type to determine if they are valid.
14560func (s *StartMigrationInput) Validate() error {
14561	invalidParams := request.ErrInvalidParams{Context: "StartMigrationInput"}
14562	if s.CustomerNodeEndpointList == nil {
14563		invalidParams.Add(request.NewErrParamRequired("CustomerNodeEndpointList"))
14564	}
14565	if s.ReplicationGroupId == nil {
14566		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
14567	}
14568
14569	if invalidParams.Len() > 0 {
14570		return invalidParams
14571	}
14572	return nil
14573}
14574
14575// SetCustomerNodeEndpointList sets the CustomerNodeEndpointList field's value.
14576func (s *StartMigrationInput) SetCustomerNodeEndpointList(v []*CustomerNodeEndpoint) *StartMigrationInput {
14577	s.CustomerNodeEndpointList = v
14578	return s
14579}
14580
14581// SetReplicationGroupId sets the ReplicationGroupId field's value.
14582func (s *StartMigrationInput) SetReplicationGroupId(v string) *StartMigrationInput {
14583	s.ReplicationGroupId = &v
14584	return s
14585}
14586
14587type StartMigrationOutput struct {
14588	_ struct{} `type:"structure"`
14589
14590	// Contains all of the attributes of a specific Redis replication group.
14591	ReplicationGroup *ReplicationGroup `type:"structure"`
14592}
14593
14594// String returns the string representation
14595func (s StartMigrationOutput) String() string {
14596	return awsutil.Prettify(s)
14597}
14598
14599// GoString returns the string representation
14600func (s StartMigrationOutput) GoString() string {
14601	return s.String()
14602}
14603
14604// SetReplicationGroup sets the ReplicationGroup field's value.
14605func (s *StartMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *StartMigrationOutput {
14606	s.ReplicationGroup = v
14607	return s
14608}
14609
14610// Represents the subnet associated with a cluster. This parameter refers to
14611// subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with
14612// ElastiCache.
14613type Subnet struct {
14614	_ struct{} `type:"structure"`
14615
14616	// The Availability Zone associated with the subnet.
14617	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`
14618
14619	// The unique identifier for the subnet.
14620	SubnetIdentifier *string `type:"string"`
14621}
14622
14623// String returns the string representation
14624func (s Subnet) String() string {
14625	return awsutil.Prettify(s)
14626}
14627
14628// GoString returns the string representation
14629func (s Subnet) GoString() string {
14630	return s.String()
14631}
14632
14633// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
14634func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
14635	s.SubnetAvailabilityZone = v
14636	return s
14637}
14638
14639// SetSubnetIdentifier sets the SubnetIdentifier field's value.
14640func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
14641	s.SubnetIdentifier = &v
14642	return s
14643}
14644
14645// A cost allocation Tag that can be added to an ElastiCache cluster or replication
14646// group. Tags are composed of a Key/Value pair. A tag with a null Value is
14647// permitted.
14648type Tag struct {
14649	_ struct{} `type:"structure"`
14650
14651	// The key for the tag. May not be null.
14652	Key *string `type:"string"`
14653
14654	// The tag's value. May be null.
14655	Value *string `type:"string"`
14656}
14657
14658// String returns the string representation
14659func (s Tag) String() string {
14660	return awsutil.Prettify(s)
14661}
14662
14663// GoString returns the string representation
14664func (s Tag) GoString() string {
14665	return s.String()
14666}
14667
14668// SetKey sets the Key field's value.
14669func (s *Tag) SetKey(v string) *Tag {
14670	s.Key = &v
14671	return s
14672}
14673
14674// SetValue sets the Value field's value.
14675func (s *Tag) SetValue(v string) *Tag {
14676	s.Value = &v
14677	return s
14678}
14679
14680// Represents the output from the AddTagsToResource, ListTagsForResource, and
14681// RemoveTagsFromResource operations.
14682type TagListMessage struct {
14683	_ struct{} `type:"structure"`
14684
14685	// A list of cost allocation tags as key-value pairs.
14686	TagList []*Tag `locationNameList:"Tag" type:"list"`
14687}
14688
14689// String returns the string representation
14690func (s TagListMessage) String() string {
14691	return awsutil.Prettify(s)
14692}
14693
14694// GoString returns the string representation
14695func (s TagListMessage) GoString() string {
14696	return s.String()
14697}
14698
14699// SetTagList sets the TagList field's value.
14700func (s *TagListMessage) SetTagList(v []*Tag) *TagListMessage {
14701	s.TagList = v
14702	return s
14703}
14704
14705type TestFailoverInput struct {
14706	_ struct{} `type:"structure"`
14707
14708	// The name of the node group (called shard in the console) in this replication
14709	// group on which automatic failover is to be tested. You may test automatic
14710	// failover on up to 5 node groups in any rolling 24-hour period.
14711	//
14712	// NodeGroupId is a required field
14713	NodeGroupId *string `min:"1" type:"string" required:"true"`
14714
14715	// The name of the replication group (console: cluster) whose automatic failover
14716	// is being tested by this operation.
14717	//
14718	// ReplicationGroupId is a required field
14719	ReplicationGroupId *string `type:"string" required:"true"`
14720}
14721
14722// String returns the string representation
14723func (s TestFailoverInput) String() string {
14724	return awsutil.Prettify(s)
14725}
14726
14727// GoString returns the string representation
14728func (s TestFailoverInput) GoString() string {
14729	return s.String()
14730}
14731
14732// Validate inspects the fields of the type to determine if they are valid.
14733func (s *TestFailoverInput) Validate() error {
14734	invalidParams := request.ErrInvalidParams{Context: "TestFailoverInput"}
14735	if s.NodeGroupId == nil {
14736		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
14737	}
14738	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
14739		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
14740	}
14741	if s.ReplicationGroupId == nil {
14742		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
14743	}
14744
14745	if invalidParams.Len() > 0 {
14746		return invalidParams
14747	}
14748	return nil
14749}
14750
14751// SetNodeGroupId sets the NodeGroupId field's value.
14752func (s *TestFailoverInput) SetNodeGroupId(v string) *TestFailoverInput {
14753	s.NodeGroupId = &v
14754	return s
14755}
14756
14757// SetReplicationGroupId sets the ReplicationGroupId field's value.
14758func (s *TestFailoverInput) SetReplicationGroupId(v string) *TestFailoverInput {
14759	s.ReplicationGroupId = &v
14760	return s
14761}
14762
14763type TestFailoverOutput struct {
14764	_ struct{} `type:"structure"`
14765
14766	// Contains all of the attributes of a specific Redis replication group.
14767	ReplicationGroup *ReplicationGroup `type:"structure"`
14768}
14769
14770// String returns the string representation
14771func (s TestFailoverOutput) String() string {
14772	return awsutil.Prettify(s)
14773}
14774
14775// GoString returns the string representation
14776func (s TestFailoverOutput) GoString() string {
14777	return s.String()
14778}
14779
14780// SetReplicationGroup sets the ReplicationGroup field's value.
14781func (s *TestFailoverOutput) SetReplicationGroup(v *ReplicationGroup) *TestFailoverOutput {
14782	s.ReplicationGroup = v
14783	return s
14784}
14785
14786// Filters update actions from the service updates that are in available status
14787// during the time range.
14788type TimeRangeFilter struct {
14789	_ struct{} `type:"structure"`
14790
14791	// The end time of the time range filter
14792	EndTime *time.Time `type:"timestamp"`
14793
14794	// The start time of the time range filter
14795	StartTime *time.Time `type:"timestamp"`
14796}
14797
14798// String returns the string representation
14799func (s TimeRangeFilter) String() string {
14800	return awsutil.Prettify(s)
14801}
14802
14803// GoString returns the string representation
14804func (s TimeRangeFilter) GoString() string {
14805	return s.String()
14806}
14807
14808// SetEndTime sets the EndTime field's value.
14809func (s *TimeRangeFilter) SetEndTime(v time.Time) *TimeRangeFilter {
14810	s.EndTime = &v
14811	return s
14812}
14813
14814// SetStartTime sets the StartTime field's value.
14815func (s *TimeRangeFilter) SetStartTime(v time.Time) *TimeRangeFilter {
14816	s.StartTime = &v
14817	return s
14818}
14819
14820// Update action that has failed to be processed for the corresponding apply/stop
14821// request
14822type UnprocessedUpdateAction struct {
14823	_ struct{} `type:"structure"`
14824
14825	// The ID of the cache cluster
14826	CacheClusterId *string `type:"string"`
14827
14828	// The error message that describes the reason the request was not processed
14829	ErrorMessage *string `type:"string"`
14830
14831	// The error type for requests that are not processed
14832	ErrorType *string `type:"string"`
14833
14834	// The replication group ID
14835	ReplicationGroupId *string `type:"string"`
14836
14837	// The unique ID of the service update
14838	ServiceUpdateName *string `type:"string"`
14839}
14840
14841// String returns the string representation
14842func (s UnprocessedUpdateAction) String() string {
14843	return awsutil.Prettify(s)
14844}
14845
14846// GoString returns the string representation
14847func (s UnprocessedUpdateAction) GoString() string {
14848	return s.String()
14849}
14850
14851// SetCacheClusterId sets the CacheClusterId field's value.
14852func (s *UnprocessedUpdateAction) SetCacheClusterId(v string) *UnprocessedUpdateAction {
14853	s.CacheClusterId = &v
14854	return s
14855}
14856
14857// SetErrorMessage sets the ErrorMessage field's value.
14858func (s *UnprocessedUpdateAction) SetErrorMessage(v string) *UnprocessedUpdateAction {
14859	s.ErrorMessage = &v
14860	return s
14861}
14862
14863// SetErrorType sets the ErrorType field's value.
14864func (s *UnprocessedUpdateAction) SetErrorType(v string) *UnprocessedUpdateAction {
14865	s.ErrorType = &v
14866	return s
14867}
14868
14869// SetReplicationGroupId sets the ReplicationGroupId field's value.
14870func (s *UnprocessedUpdateAction) SetReplicationGroupId(v string) *UnprocessedUpdateAction {
14871	s.ReplicationGroupId = &v
14872	return s
14873}
14874
14875// SetServiceUpdateName sets the ServiceUpdateName field's value.
14876func (s *UnprocessedUpdateAction) SetServiceUpdateName(v string) *UnprocessedUpdateAction {
14877	s.ServiceUpdateName = &v
14878	return s
14879}
14880
14881// The status of the service update for a specific replication group
14882type UpdateAction struct {
14883	_ struct{} `type:"structure"`
14884
14885	// The ID of the cache cluster
14886	CacheClusterId *string `type:"string"`
14887
14888	// The status of the service update on the cache node
14889	CacheNodeUpdateStatus []*CacheNodeUpdateStatus `locationNameList:"CacheNodeUpdateStatus" type:"list"`
14890
14891	// The Elasticache engine to which the update applies. Either Redis or Memcached
14892	Engine *string `type:"string"`
14893
14894	// The estimated length of time for the update to complete
14895	EstimatedUpdateTime *string `type:"string"`
14896
14897	// The status of the service update on the node group
14898	NodeGroupUpdateStatus []*NodeGroupUpdateStatus `locationNameList:"NodeGroupUpdateStatus" type:"list"`
14899
14900	// The progress of the service update on the replication group
14901	NodesUpdated *string `type:"string"`
14902
14903	// The ID of the replication group
14904	ReplicationGroupId *string `type:"string"`
14905
14906	// The unique ID of the service update
14907	ServiceUpdateName *string `type:"string"`
14908
14909	// The recommended date to apply the service update to ensure compliance. For
14910	// information on compliance, see Self-Service Security Updates for Compliance
14911	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
14912	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
14913
14914	// The date the update is first available
14915	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
14916
14917	// The severity of the service update
14918	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
14919
14920	// The status of the service update
14921	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
14922
14923	// Reflects the nature of the service update
14924	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
14925
14926	// If yes, all nodes in the replication group have been updated by the recommended
14927	// apply-by date. If no, at least one node in the replication group have not
14928	// been updated by the recommended apply-by date. If N/A, the replication group
14929	// was created after the recommended apply-by date.
14930	SlaMet *string `type:"string" enum:"SlaMet"`
14931
14932	// The date that the service update is available to a replication group
14933	UpdateActionAvailableDate *time.Time `type:"timestamp"`
14934
14935	// The status of the update action
14936	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
14937
14938	// The date when the UpdateActionStatus was last modified
14939	UpdateActionStatusModifiedDate *time.Time `type:"timestamp"`
14940}
14941
14942// String returns the string representation
14943func (s UpdateAction) String() string {
14944	return awsutil.Prettify(s)
14945}
14946
14947// GoString returns the string representation
14948func (s UpdateAction) GoString() string {
14949	return s.String()
14950}
14951
14952// SetCacheClusterId sets the CacheClusterId field's value.
14953func (s *UpdateAction) SetCacheClusterId(v string) *UpdateAction {
14954	s.CacheClusterId = &v
14955	return s
14956}
14957
14958// SetCacheNodeUpdateStatus sets the CacheNodeUpdateStatus field's value.
14959func (s *UpdateAction) SetCacheNodeUpdateStatus(v []*CacheNodeUpdateStatus) *UpdateAction {
14960	s.CacheNodeUpdateStatus = v
14961	return s
14962}
14963
14964// SetEngine sets the Engine field's value.
14965func (s *UpdateAction) SetEngine(v string) *UpdateAction {
14966	s.Engine = &v
14967	return s
14968}
14969
14970// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
14971func (s *UpdateAction) SetEstimatedUpdateTime(v string) *UpdateAction {
14972	s.EstimatedUpdateTime = &v
14973	return s
14974}
14975
14976// SetNodeGroupUpdateStatus sets the NodeGroupUpdateStatus field's value.
14977func (s *UpdateAction) SetNodeGroupUpdateStatus(v []*NodeGroupUpdateStatus) *UpdateAction {
14978	s.NodeGroupUpdateStatus = v
14979	return s
14980}
14981
14982// SetNodesUpdated sets the NodesUpdated field's value.
14983func (s *UpdateAction) SetNodesUpdated(v string) *UpdateAction {
14984	s.NodesUpdated = &v
14985	return s
14986}
14987
14988// SetReplicationGroupId sets the ReplicationGroupId field's value.
14989func (s *UpdateAction) SetReplicationGroupId(v string) *UpdateAction {
14990	s.ReplicationGroupId = &v
14991	return s
14992}
14993
14994// SetServiceUpdateName sets the ServiceUpdateName field's value.
14995func (s *UpdateAction) SetServiceUpdateName(v string) *UpdateAction {
14996	s.ServiceUpdateName = &v
14997	return s
14998}
14999
15000// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
15001func (s *UpdateAction) SetServiceUpdateRecommendedApplyByDate(v time.Time) *UpdateAction {
15002	s.ServiceUpdateRecommendedApplyByDate = &v
15003	return s
15004}
15005
15006// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
15007func (s *UpdateAction) SetServiceUpdateReleaseDate(v time.Time) *UpdateAction {
15008	s.ServiceUpdateReleaseDate = &v
15009	return s
15010}
15011
15012// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
15013func (s *UpdateAction) SetServiceUpdateSeverity(v string) *UpdateAction {
15014	s.ServiceUpdateSeverity = &v
15015	return s
15016}
15017
15018// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
15019func (s *UpdateAction) SetServiceUpdateStatus(v string) *UpdateAction {
15020	s.ServiceUpdateStatus = &v
15021	return s
15022}
15023
15024// SetServiceUpdateType sets the ServiceUpdateType field's value.
15025func (s *UpdateAction) SetServiceUpdateType(v string) *UpdateAction {
15026	s.ServiceUpdateType = &v
15027	return s
15028}
15029
15030// SetSlaMet sets the SlaMet field's value.
15031func (s *UpdateAction) SetSlaMet(v string) *UpdateAction {
15032	s.SlaMet = &v
15033	return s
15034}
15035
15036// SetUpdateActionAvailableDate sets the UpdateActionAvailableDate field's value.
15037func (s *UpdateAction) SetUpdateActionAvailableDate(v time.Time) *UpdateAction {
15038	s.UpdateActionAvailableDate = &v
15039	return s
15040}
15041
15042// SetUpdateActionStatus sets the UpdateActionStatus field's value.
15043func (s *UpdateAction) SetUpdateActionStatus(v string) *UpdateAction {
15044	s.UpdateActionStatus = &v
15045	return s
15046}
15047
15048// SetUpdateActionStatusModifiedDate sets the UpdateActionStatusModifiedDate field's value.
15049func (s *UpdateAction) SetUpdateActionStatusModifiedDate(v time.Time) *UpdateAction {
15050	s.UpdateActionStatusModifiedDate = &v
15051	return s
15052}
15053
15054const (
15055	// AZModeSingleAz is a AZMode enum value
15056	AZModeSingleAz = "single-az"
15057
15058	// AZModeCrossAz is a AZMode enum value
15059	AZModeCrossAz = "cross-az"
15060)
15061
15062const (
15063	// AuthTokenUpdateStatusSetting is a AuthTokenUpdateStatus enum value
15064	AuthTokenUpdateStatusSetting = "SETTING"
15065
15066	// AuthTokenUpdateStatusRotating is a AuthTokenUpdateStatus enum value
15067	AuthTokenUpdateStatusRotating = "ROTATING"
15068)
15069
15070const (
15071	// AuthTokenUpdateStrategyTypeSet is a AuthTokenUpdateStrategyType enum value
15072	AuthTokenUpdateStrategyTypeSet = "SET"
15073
15074	// AuthTokenUpdateStrategyTypeRotate is a AuthTokenUpdateStrategyType enum value
15075	AuthTokenUpdateStrategyTypeRotate = "ROTATE"
15076)
15077
15078const (
15079	// AutomaticFailoverStatusEnabled is a AutomaticFailoverStatus enum value
15080	AutomaticFailoverStatusEnabled = "enabled"
15081
15082	// AutomaticFailoverStatusDisabled is a AutomaticFailoverStatus enum value
15083	AutomaticFailoverStatusDisabled = "disabled"
15084
15085	// AutomaticFailoverStatusEnabling is a AutomaticFailoverStatus enum value
15086	AutomaticFailoverStatusEnabling = "enabling"
15087
15088	// AutomaticFailoverStatusDisabling is a AutomaticFailoverStatus enum value
15089	AutomaticFailoverStatusDisabling = "disabling"
15090)
15091
15092const (
15093	// ChangeTypeImmediate is a ChangeType enum value
15094	ChangeTypeImmediate = "immediate"
15095
15096	// ChangeTypeRequiresReboot is a ChangeType enum value
15097	ChangeTypeRequiresReboot = "requires-reboot"
15098)
15099
15100const (
15101	// NodeUpdateInitiatedBySystem is a NodeUpdateInitiatedBy enum value
15102	NodeUpdateInitiatedBySystem = "system"
15103
15104	// NodeUpdateInitiatedByCustomer is a NodeUpdateInitiatedBy enum value
15105	NodeUpdateInitiatedByCustomer = "customer"
15106)
15107
15108const (
15109	// NodeUpdateStatusNotApplied is a NodeUpdateStatus enum value
15110	NodeUpdateStatusNotApplied = "not-applied"
15111
15112	// NodeUpdateStatusWaitingToStart is a NodeUpdateStatus enum value
15113	NodeUpdateStatusWaitingToStart = "waiting-to-start"
15114
15115	// NodeUpdateStatusInProgress is a NodeUpdateStatus enum value
15116	NodeUpdateStatusInProgress = "in-progress"
15117
15118	// NodeUpdateStatusStopping is a NodeUpdateStatus enum value
15119	NodeUpdateStatusStopping = "stopping"
15120
15121	// NodeUpdateStatusStopped is a NodeUpdateStatus enum value
15122	NodeUpdateStatusStopped = "stopped"
15123
15124	// NodeUpdateStatusComplete is a NodeUpdateStatus enum value
15125	NodeUpdateStatusComplete = "complete"
15126)
15127
15128const (
15129	// PendingAutomaticFailoverStatusEnabled is a PendingAutomaticFailoverStatus enum value
15130	PendingAutomaticFailoverStatusEnabled = "enabled"
15131
15132	// PendingAutomaticFailoverStatusDisabled is a PendingAutomaticFailoverStatus enum value
15133	PendingAutomaticFailoverStatusDisabled = "disabled"
15134)
15135
15136const (
15137	// ServiceUpdateSeverityCritical is a ServiceUpdateSeverity enum value
15138	ServiceUpdateSeverityCritical = "critical"
15139
15140	// ServiceUpdateSeverityImportant is a ServiceUpdateSeverity enum value
15141	ServiceUpdateSeverityImportant = "important"
15142
15143	// ServiceUpdateSeverityMedium is a ServiceUpdateSeverity enum value
15144	ServiceUpdateSeverityMedium = "medium"
15145
15146	// ServiceUpdateSeverityLow is a ServiceUpdateSeverity enum value
15147	ServiceUpdateSeverityLow = "low"
15148)
15149
15150const (
15151	// ServiceUpdateStatusAvailable is a ServiceUpdateStatus enum value
15152	ServiceUpdateStatusAvailable = "available"
15153
15154	// ServiceUpdateStatusCancelled is a ServiceUpdateStatus enum value
15155	ServiceUpdateStatusCancelled = "cancelled"
15156
15157	// ServiceUpdateStatusExpired is a ServiceUpdateStatus enum value
15158	ServiceUpdateStatusExpired = "expired"
15159)
15160
15161const (
15162	// ServiceUpdateTypeSecurityUpdate is a ServiceUpdateType enum value
15163	ServiceUpdateTypeSecurityUpdate = "security-update"
15164)
15165
15166const (
15167	// SlaMetYes is a SlaMet enum value
15168	SlaMetYes = "yes"
15169
15170	// SlaMetNo is a SlaMet enum value
15171	SlaMetNo = "no"
15172
15173	// SlaMetNA is a SlaMet enum value
15174	SlaMetNA = "n/a"
15175)
15176
15177const (
15178	// SourceTypeCacheCluster is a SourceType enum value
15179	SourceTypeCacheCluster = "cache-cluster"
15180
15181	// SourceTypeCacheParameterGroup is a SourceType enum value
15182	SourceTypeCacheParameterGroup = "cache-parameter-group"
15183
15184	// SourceTypeCacheSecurityGroup is a SourceType enum value
15185	SourceTypeCacheSecurityGroup = "cache-security-group"
15186
15187	// SourceTypeCacheSubnetGroup is a SourceType enum value
15188	SourceTypeCacheSubnetGroup = "cache-subnet-group"
15189
15190	// SourceTypeReplicationGroup is a SourceType enum value
15191	SourceTypeReplicationGroup = "replication-group"
15192)
15193
15194const (
15195	// UpdateActionStatusNotApplied is a UpdateActionStatus enum value
15196	UpdateActionStatusNotApplied = "not-applied"
15197
15198	// UpdateActionStatusWaitingToStart is a UpdateActionStatus enum value
15199	UpdateActionStatusWaitingToStart = "waiting-to-start"
15200
15201	// UpdateActionStatusInProgress is a UpdateActionStatus enum value
15202	UpdateActionStatusInProgress = "in-progress"
15203
15204	// UpdateActionStatusStopping is a UpdateActionStatus enum value
15205	UpdateActionStatusStopping = "stopping"
15206
15207	// UpdateActionStatusStopped is a UpdateActionStatus enum value
15208	UpdateActionStatusStopped = "stopped"
15209
15210	// UpdateActionStatusComplete is a UpdateActionStatus enum value
15211	UpdateActionStatusComplete = "complete"
15212)
15213