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 opCopySnapshot = "CopySnapshot"
381
382// CopySnapshotRequest generates a "aws/request.Request" representing the
383// client's request for the CopySnapshot 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 CopySnapshot for more information on using the CopySnapshot
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 CopySnapshotRequest method.
398//    req, resp := client.CopySnapshotRequest(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/CopySnapshot
406func (c *ElastiCache) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) {
407	op := &request.Operation{
408		Name:       opCopySnapshot,
409		HTTPMethod: "POST",
410		HTTPPath:   "/",
411	}
412
413	if input == nil {
414		input = &CopySnapshotInput{}
415	}
416
417	output = &CopySnapshotOutput{}
418	req = c.newRequest(op, input, output)
419	return
420}
421
422// CopySnapshot API operation for Amazon ElastiCache.
423//
424// Makes a copy of an existing snapshot.
425//
426// This operation is valid for Redis only.
427//
428// Users or groups that have permissions to use the CopySnapshot operation can
429// create their own Amazon S3 buckets and copy snapshots to it. To control access
430// to your snapshots, use an IAM policy to control who has the ability to use
431// the CopySnapshot operation. For more information about using IAM to control
432// the use of ElastiCache operations, see Exporting Snapshots (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)
433// and Authentication & Access Control (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.html).
434//
435// You could receive the following error messages.
436//
437// Error Messages
438//
439//    * Error Message: The S3 bucket %s is outside of the region. Solution:
440//    Create an Amazon S3 bucket in the same region as your snapshot. For more
441//    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)
442//    in the ElastiCache User Guide.
443//
444//    * Error Message: The S3 bucket %s does not exist. Solution: Create an
445//    Amazon S3 bucket in the same region as your snapshot. For more information,
446//    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)
447//    in the ElastiCache User Guide.
448//
449//    * Error Message: The S3 bucket %s is not owned by the authenticated user.
450//    Solution: Create an Amazon S3 bucket in the same region as your snapshot.
451//    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)
452//    in the ElastiCache User Guide.
453//
454//    * Error Message: The authenticated user does not have sufficient permissions
455//    to perform the desired activity. Solution: Contact your system administrator
456//    to get the needed permissions.
457//
458//    * Error Message: The S3 bucket %s already contains an object with key
459//    %s. Solution: Give the TargetSnapshotName a new and unique value. If exporting
460//    a snapshot, you could alternatively create a new Amazon S3 bucket and
461//    use this same value for TargetSnapshotName.
462//
463//    * Error Message: ElastiCache has not been granted READ permissions %s
464//    on the S3 Bucket. Solution: Add List and Read permissions on the bucket.
465//    For more information, see Step 2: Grant ElastiCache Access to Your Amazon
466//    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
467//    in the ElastiCache User Guide.
468//
469//    * Error Message: ElastiCache has not been granted WRITE permissions %s
470//    on the S3 Bucket. Solution: Add Upload/Delete permissions on the bucket.
471//    For more information, see Step 2: Grant ElastiCache Access to Your Amazon
472//    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
473//    in the ElastiCache User Guide.
474//
475//    * Error Message: ElastiCache has not been granted READ_ACP permissions
476//    %s on the S3 Bucket. Solution: Add View Permissions on the bucket. For
477//    more information, see Step 2: Grant ElastiCache Access to Your Amazon
478//    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
479//    in the ElastiCache User Guide.
480//
481// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
482// with awserr.Error's Code and Message methods to get detailed information about
483// the error.
484//
485// See the AWS API reference guide for Amazon ElastiCache's
486// API operation CopySnapshot for usage and error information.
487//
488// Returned Error Codes:
489//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
490//   You already have a snapshot with the given name.
491//
492//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
493//   The requested snapshot name does not refer to an existing snapshot.
494//
495//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
496//   The request cannot be processed because it would exceed the maximum number
497//   of snapshots.
498//
499//   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
500//   The current state of the snapshot does not allow the requested operation
501//   to occur.
502//
503//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
504//   The value for a parameter is invalid.
505//
506//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
507//   Two or more incompatible parameters were specified.
508//
509// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CopySnapshot
510func (c *ElastiCache) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) {
511	req, out := c.CopySnapshotRequest(input)
512	return out, req.Send()
513}
514
515// CopySnapshotWithContext is the same as CopySnapshot with the addition of
516// the ability to pass a context and additional request options.
517//
518// See CopySnapshot for details on how to use this API operation.
519//
520// The context must be non-nil and will be used for request cancellation. If
521// the context is nil a panic will occur. In the future the SDK may create
522// sub-contexts for http.Requests. See https://golang.org/pkg/context/
523// for more information on using Contexts.
524func (c *ElastiCache) CopySnapshotWithContext(ctx aws.Context, input *CopySnapshotInput, opts ...request.Option) (*CopySnapshotOutput, error) {
525	req, out := c.CopySnapshotRequest(input)
526	req.SetContext(ctx)
527	req.ApplyOptions(opts...)
528	return out, req.Send()
529}
530
531const opCreateCacheCluster = "CreateCacheCluster"
532
533// CreateCacheClusterRequest generates a "aws/request.Request" representing the
534// client's request for the CreateCacheCluster operation. The "output" return
535// value will be populated with the request's response once the request completes
536// successfully.
537//
538// Use "Send" method on the returned Request to send the API call to the service.
539// the "output" return value is not valid until after Send returns without error.
540//
541// See CreateCacheCluster for more information on using the CreateCacheCluster
542// API call, and error handling.
543//
544// This method is useful when you want to inject custom logic or configuration
545// into the SDK's request lifecycle. Such as custom headers, or retry logic.
546//
547//
548//    // Example sending a request using the CreateCacheClusterRequest method.
549//    req, resp := client.CreateCacheClusterRequest(params)
550//
551//    err := req.Send()
552//    if err == nil { // resp is now filled
553//        fmt.Println(resp)
554//    }
555//
556// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheCluster
557func (c *ElastiCache) CreateCacheClusterRequest(input *CreateCacheClusterInput) (req *request.Request, output *CreateCacheClusterOutput) {
558	op := &request.Operation{
559		Name:       opCreateCacheCluster,
560		HTTPMethod: "POST",
561		HTTPPath:   "/",
562	}
563
564	if input == nil {
565		input = &CreateCacheClusterInput{}
566	}
567
568	output = &CreateCacheClusterOutput{}
569	req = c.newRequest(op, input, output)
570	return
571}
572
573// CreateCacheCluster API operation for Amazon ElastiCache.
574//
575// Creates a cluster. All nodes in the cluster run the same protocol-compliant
576// cache engine software, either Memcached or Redis.
577//
578// This operation is not supported for Redis (cluster mode enabled) clusters.
579//
580// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
581// with awserr.Error's Code and Message methods to get detailed information about
582// the error.
583//
584// See the AWS API reference guide for Amazon ElastiCache's
585// API operation CreateCacheCluster for usage and error information.
586//
587// Returned Error Codes:
588//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
589//   The specified replication group does not exist.
590//
591//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
592//   The requested replication group is not in the available state.
593//
594//   * ErrCodeCacheClusterAlreadyExistsFault "CacheClusterAlreadyExists"
595//   You already have a cluster with the given identifier.
596//
597//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
598//   The requested cache node type is not available in the specified Availability
599//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
600//   in the ElastiCache User Guide.
601//
602//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
603//   The requested cache security group name does not refer to an existing cache
604//   security group.
605//
606//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
607//   The requested cache subnet group name does not refer to an existing cache
608//   subnet group.
609//
610//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
611//   The request cannot be processed because it would exceed the allowed number
612//   of clusters per customer.
613//
614//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
615//   The request cannot be processed because it would exceed the allowed number
616//   of cache nodes in a single cluster.
617//
618//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
619//   The request cannot be processed because it would exceed the allowed number
620//   of cache nodes per customer.
621//
622//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
623//   The requested cache parameter group name does not refer to an existing cache
624//   parameter group.
625//
626//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
627//   The VPC network is in an invalid state.
628//
629//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
630//   The request cannot be processed because it would cause the resource to have
631//   more than the allowed number of tags. The maximum number of tags permitted
632//   on a resource is 50.
633//
634//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
635//   The value for a parameter is invalid.
636//
637//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
638//   Two or more incompatible parameters were specified.
639//
640// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheCluster
641func (c *ElastiCache) CreateCacheCluster(input *CreateCacheClusterInput) (*CreateCacheClusterOutput, error) {
642	req, out := c.CreateCacheClusterRequest(input)
643	return out, req.Send()
644}
645
646// CreateCacheClusterWithContext is the same as CreateCacheCluster with the addition of
647// the ability to pass a context and additional request options.
648//
649// See CreateCacheCluster for details on how to use this API operation.
650//
651// The context must be non-nil and will be used for request cancellation. If
652// the context is nil a panic will occur. In the future the SDK may create
653// sub-contexts for http.Requests. See https://golang.org/pkg/context/
654// for more information on using Contexts.
655func (c *ElastiCache) CreateCacheClusterWithContext(ctx aws.Context, input *CreateCacheClusterInput, opts ...request.Option) (*CreateCacheClusterOutput, error) {
656	req, out := c.CreateCacheClusterRequest(input)
657	req.SetContext(ctx)
658	req.ApplyOptions(opts...)
659	return out, req.Send()
660}
661
662const opCreateCacheParameterGroup = "CreateCacheParameterGroup"
663
664// CreateCacheParameterGroupRequest generates a "aws/request.Request" representing the
665// client's request for the CreateCacheParameterGroup operation. The "output" return
666// value will be populated with the request's response once the request completes
667// successfully.
668//
669// Use "Send" method on the returned Request to send the API call to the service.
670// the "output" return value is not valid until after Send returns without error.
671//
672// See CreateCacheParameterGroup for more information on using the CreateCacheParameterGroup
673// API call, and error handling.
674//
675// This method is useful when you want to inject custom logic or configuration
676// into the SDK's request lifecycle. Such as custom headers, or retry logic.
677//
678//
679//    // Example sending a request using the CreateCacheParameterGroupRequest method.
680//    req, resp := client.CreateCacheParameterGroupRequest(params)
681//
682//    err := req.Send()
683//    if err == nil { // resp is now filled
684//        fmt.Println(resp)
685//    }
686//
687// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheParameterGroup
688func (c *ElastiCache) CreateCacheParameterGroupRequest(input *CreateCacheParameterGroupInput) (req *request.Request, output *CreateCacheParameterGroupOutput) {
689	op := &request.Operation{
690		Name:       opCreateCacheParameterGroup,
691		HTTPMethod: "POST",
692		HTTPPath:   "/",
693	}
694
695	if input == nil {
696		input = &CreateCacheParameterGroupInput{}
697	}
698
699	output = &CreateCacheParameterGroupOutput{}
700	req = c.newRequest(op, input, output)
701	return
702}
703
704// CreateCacheParameterGroup API operation for Amazon ElastiCache.
705//
706// Creates a new Amazon ElastiCache cache parameter group. An ElastiCache cache
707// parameter group is a collection of parameters and their values that are applied
708// to all of the nodes in any cluster or replication group using the CacheParameterGroup.
709//
710// A newly created CacheParameterGroup is an exact duplicate of the default
711// parameter group for the CacheParameterGroupFamily. To customize the newly
712// created CacheParameterGroup you can change the values of specific parameters.
713// For more information, see:
714//
715//    * ModifyCacheParameterGroup (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheParameterGroup.html)
716//    in the ElastiCache API Reference.
717//
718//    * Parameters and Parameter Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.html)
719//    in the ElastiCache User Guide.
720//
721// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
722// with awserr.Error's Code and Message methods to get detailed information about
723// the error.
724//
725// See the AWS API reference guide for Amazon ElastiCache's
726// API operation CreateCacheParameterGroup for usage and error information.
727//
728// Returned Error Codes:
729//   * ErrCodeCacheParameterGroupQuotaExceededFault "CacheParameterGroupQuotaExceeded"
730//   The request cannot be processed because it would exceed the maximum number
731//   of cache security groups.
732//
733//   * ErrCodeCacheParameterGroupAlreadyExistsFault "CacheParameterGroupAlreadyExists"
734//   A cache parameter group with the requested name already exists.
735//
736//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
737//   The current state of the cache parameter group does not allow the requested
738//   operation to occur.
739//
740//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
741//   The value for a parameter is invalid.
742//
743//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
744//   Two or more incompatible parameters were specified.
745//
746// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheParameterGroup
747func (c *ElastiCache) CreateCacheParameterGroup(input *CreateCacheParameterGroupInput) (*CreateCacheParameterGroupOutput, error) {
748	req, out := c.CreateCacheParameterGroupRequest(input)
749	return out, req.Send()
750}
751
752// CreateCacheParameterGroupWithContext is the same as CreateCacheParameterGroup with the addition of
753// the ability to pass a context and additional request options.
754//
755// See CreateCacheParameterGroup for details on how to use this API operation.
756//
757// The context must be non-nil and will be used for request cancellation. If
758// the context is nil a panic will occur. In the future the SDK may create
759// sub-contexts for http.Requests. See https://golang.org/pkg/context/
760// for more information on using Contexts.
761func (c *ElastiCache) CreateCacheParameterGroupWithContext(ctx aws.Context, input *CreateCacheParameterGroupInput, opts ...request.Option) (*CreateCacheParameterGroupOutput, error) {
762	req, out := c.CreateCacheParameterGroupRequest(input)
763	req.SetContext(ctx)
764	req.ApplyOptions(opts...)
765	return out, req.Send()
766}
767
768const opCreateCacheSecurityGroup = "CreateCacheSecurityGroup"
769
770// CreateCacheSecurityGroupRequest generates a "aws/request.Request" representing the
771// client's request for the CreateCacheSecurityGroup operation. The "output" return
772// value will be populated with the request's response once the request completes
773// successfully.
774//
775// Use "Send" method on the returned Request to send the API call to the service.
776// the "output" return value is not valid until after Send returns without error.
777//
778// See CreateCacheSecurityGroup for more information on using the CreateCacheSecurityGroup
779// API call, and error handling.
780//
781// This method is useful when you want to inject custom logic or configuration
782// into the SDK's request lifecycle. Such as custom headers, or retry logic.
783//
784//
785//    // Example sending a request using the CreateCacheSecurityGroupRequest method.
786//    req, resp := client.CreateCacheSecurityGroupRequest(params)
787//
788//    err := req.Send()
789//    if err == nil { // resp is now filled
790//        fmt.Println(resp)
791//    }
792//
793// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSecurityGroup
794func (c *ElastiCache) CreateCacheSecurityGroupRequest(input *CreateCacheSecurityGroupInput) (req *request.Request, output *CreateCacheSecurityGroupOutput) {
795	op := &request.Operation{
796		Name:       opCreateCacheSecurityGroup,
797		HTTPMethod: "POST",
798		HTTPPath:   "/",
799	}
800
801	if input == nil {
802		input = &CreateCacheSecurityGroupInput{}
803	}
804
805	output = &CreateCacheSecurityGroupOutput{}
806	req = c.newRequest(op, input, output)
807	return
808}
809
810// CreateCacheSecurityGroup API operation for Amazon ElastiCache.
811//
812// Creates a new cache security group. Use a cache security group to control
813// access to one or more clusters.
814//
815// Cache security groups are only used when you are creating a cluster outside
816// of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cluster
817// inside of a VPC, use a cache subnet group instead. For more information,
818// see CreateCacheSubnetGroup (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html).
819//
820// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
821// with awserr.Error's Code and Message methods to get detailed information about
822// the error.
823//
824// See the AWS API reference guide for Amazon ElastiCache's
825// API operation CreateCacheSecurityGroup for usage and error information.
826//
827// Returned Error Codes:
828//   * ErrCodeCacheSecurityGroupAlreadyExistsFault "CacheSecurityGroupAlreadyExists"
829//   A cache security group with the specified name already exists.
830//
831//   * ErrCodeCacheSecurityGroupQuotaExceededFault "QuotaExceeded.CacheSecurityGroup"
832//   The request cannot be processed because it would exceed the allowed number
833//   of cache security groups.
834//
835//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
836//   The value for a parameter is invalid.
837//
838//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
839//   Two or more incompatible parameters were specified.
840//
841// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSecurityGroup
842func (c *ElastiCache) CreateCacheSecurityGroup(input *CreateCacheSecurityGroupInput) (*CreateCacheSecurityGroupOutput, error) {
843	req, out := c.CreateCacheSecurityGroupRequest(input)
844	return out, req.Send()
845}
846
847// CreateCacheSecurityGroupWithContext is the same as CreateCacheSecurityGroup with the addition of
848// the ability to pass a context and additional request options.
849//
850// See CreateCacheSecurityGroup for details on how to use this API operation.
851//
852// The context must be non-nil and will be used for request cancellation. If
853// the context is nil a panic will occur. In the future the SDK may create
854// sub-contexts for http.Requests. See https://golang.org/pkg/context/
855// for more information on using Contexts.
856func (c *ElastiCache) CreateCacheSecurityGroupWithContext(ctx aws.Context, input *CreateCacheSecurityGroupInput, opts ...request.Option) (*CreateCacheSecurityGroupOutput, error) {
857	req, out := c.CreateCacheSecurityGroupRequest(input)
858	req.SetContext(ctx)
859	req.ApplyOptions(opts...)
860	return out, req.Send()
861}
862
863const opCreateCacheSubnetGroup = "CreateCacheSubnetGroup"
864
865// CreateCacheSubnetGroupRequest generates a "aws/request.Request" representing the
866// client's request for the CreateCacheSubnetGroup operation. The "output" return
867// value will be populated with the request's response once the request completes
868// successfully.
869//
870// Use "Send" method on the returned Request to send the API call to the service.
871// the "output" return value is not valid until after Send returns without error.
872//
873// See CreateCacheSubnetGroup for more information on using the CreateCacheSubnetGroup
874// API call, and error handling.
875//
876// This method is useful when you want to inject custom logic or configuration
877// into the SDK's request lifecycle. Such as custom headers, or retry logic.
878//
879//
880//    // Example sending a request using the CreateCacheSubnetGroupRequest method.
881//    req, resp := client.CreateCacheSubnetGroupRequest(params)
882//
883//    err := req.Send()
884//    if err == nil { // resp is now filled
885//        fmt.Println(resp)
886//    }
887//
888// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSubnetGroup
889func (c *ElastiCache) CreateCacheSubnetGroupRequest(input *CreateCacheSubnetGroupInput) (req *request.Request, output *CreateCacheSubnetGroupOutput) {
890	op := &request.Operation{
891		Name:       opCreateCacheSubnetGroup,
892		HTTPMethod: "POST",
893		HTTPPath:   "/",
894	}
895
896	if input == nil {
897		input = &CreateCacheSubnetGroupInput{}
898	}
899
900	output = &CreateCacheSubnetGroupOutput{}
901	req = c.newRequest(op, input, output)
902	return
903}
904
905// CreateCacheSubnetGroup API operation for Amazon ElastiCache.
906//
907// Creates a new cache subnet group.
908//
909// Use this parameter only when you are creating a cluster in an Amazon Virtual
910// Private Cloud (Amazon VPC).
911//
912// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
913// with awserr.Error's Code and Message methods to get detailed information about
914// the error.
915//
916// See the AWS API reference guide for Amazon ElastiCache's
917// API operation CreateCacheSubnetGroup for usage and error information.
918//
919// Returned Error Codes:
920//   * ErrCodeCacheSubnetGroupAlreadyExistsFault "CacheSubnetGroupAlreadyExists"
921//   The requested cache subnet group name is already in use by an existing cache
922//   subnet group.
923//
924//   * ErrCodeCacheSubnetGroupQuotaExceededFault "CacheSubnetGroupQuotaExceeded"
925//   The request cannot be processed because it would exceed the allowed number
926//   of cache subnet groups.
927//
928//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
929//   The request cannot be processed because it would exceed the allowed number
930//   of subnets in a cache subnet group.
931//
932//   * ErrCodeInvalidSubnet "InvalidSubnet"
933//   An invalid subnet identifier was specified.
934//
935// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSubnetGroup
936func (c *ElastiCache) CreateCacheSubnetGroup(input *CreateCacheSubnetGroupInput) (*CreateCacheSubnetGroupOutput, error) {
937	req, out := c.CreateCacheSubnetGroupRequest(input)
938	return out, req.Send()
939}
940
941// CreateCacheSubnetGroupWithContext is the same as CreateCacheSubnetGroup with the addition of
942// the ability to pass a context and additional request options.
943//
944// See CreateCacheSubnetGroup for details on how to use this API operation.
945//
946// The context must be non-nil and will be used for request cancellation. If
947// the context is nil a panic will occur. In the future the SDK may create
948// sub-contexts for http.Requests. See https://golang.org/pkg/context/
949// for more information on using Contexts.
950func (c *ElastiCache) CreateCacheSubnetGroupWithContext(ctx aws.Context, input *CreateCacheSubnetGroupInput, opts ...request.Option) (*CreateCacheSubnetGroupOutput, error) {
951	req, out := c.CreateCacheSubnetGroupRequest(input)
952	req.SetContext(ctx)
953	req.ApplyOptions(opts...)
954	return out, req.Send()
955}
956
957const opCreateReplicationGroup = "CreateReplicationGroup"
958
959// CreateReplicationGroupRequest generates a "aws/request.Request" representing the
960// client's request for the CreateReplicationGroup operation. The "output" return
961// value will be populated with the request's response once the request completes
962// successfully.
963//
964// Use "Send" method on the returned Request to send the API call to the service.
965// the "output" return value is not valid until after Send returns without error.
966//
967// See CreateReplicationGroup for more information on using the CreateReplicationGroup
968// API call, and error handling.
969//
970// This method is useful when you want to inject custom logic or configuration
971// into the SDK's request lifecycle. Such as custom headers, or retry logic.
972//
973//
974//    // Example sending a request using the CreateReplicationGroupRequest method.
975//    req, resp := client.CreateReplicationGroupRequest(params)
976//
977//    err := req.Send()
978//    if err == nil { // resp is now filled
979//        fmt.Println(resp)
980//    }
981//
982// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
983func (c *ElastiCache) CreateReplicationGroupRequest(input *CreateReplicationGroupInput) (req *request.Request, output *CreateReplicationGroupOutput) {
984	op := &request.Operation{
985		Name:       opCreateReplicationGroup,
986		HTTPMethod: "POST",
987		HTTPPath:   "/",
988	}
989
990	if input == nil {
991		input = &CreateReplicationGroupInput{}
992	}
993
994	output = &CreateReplicationGroupOutput{}
995	req = c.newRequest(op, input, output)
996	return
997}
998
999// CreateReplicationGroup API operation for Amazon ElastiCache.
1000//
1001// Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled)
1002// replication group.
1003//
1004// A Redis (cluster mode disabled) replication group is a collection of clusters,
1005// where one of the clusters is a read/write primary and the others are read-only
1006// replicas. Writes to the primary are asynchronously propagated to the replicas.
1007//
1008// A Redis (cluster mode enabled) replication group is a collection of 1 to
1009// 90 node groups (shards). Each node group (shard) has one read/write primary
1010// node and up to 5 read-only replica nodes. Writes to the primary are asynchronously
1011// propagated to the replicas. Redis (cluster mode enabled) replication groups
1012// partition the data across node groups (shards).
1013//
1014// When a Redis (cluster mode disabled) replication group has been successfully
1015// created, you can add one or more read replicas to it, up to a total of 5
1016// read replicas. You cannot alter a Redis (cluster mode enabled) replication
1017// group after it has been created. However, if you need to increase or decrease
1018// the number of node groups (console: shards), you can avail yourself of ElastiCache
1019// for Redis' enhanced backup and restore. For more information, see Restoring
1020// From a Backup with Cluster Resizing (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-restoring.html)
1021// in the ElastiCache User Guide.
1022//
1023// This operation is valid for Redis only.
1024//
1025// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1026// with awserr.Error's Code and Message methods to get detailed information about
1027// the error.
1028//
1029// See the AWS API reference guide for Amazon ElastiCache's
1030// API operation CreateReplicationGroup for usage and error information.
1031//
1032// Returned Error Codes:
1033//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1034//   The requested cluster ID does not refer to an existing cluster.
1035//
1036//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1037//   The requested cluster is not in the available state.
1038//
1039//   * ErrCodeReplicationGroupAlreadyExistsFault "ReplicationGroupAlreadyExists"
1040//   The specified replication group already exists.
1041//
1042//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1043//   The requested cache node type is not available in the specified Availability
1044//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1045//   in the ElastiCache User Guide.
1046//
1047//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1048//   The requested cache security group name does not refer to an existing cache
1049//   security group.
1050//
1051//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1052//   The requested cache subnet group name does not refer to an existing cache
1053//   subnet group.
1054//
1055//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1056//   The request cannot be processed because it would exceed the allowed number
1057//   of clusters per customer.
1058//
1059//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
1060//   The request cannot be processed because it would exceed the allowed number
1061//   of cache nodes in a single cluster.
1062//
1063//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1064//   The request cannot be processed because it would exceed the allowed number
1065//   of cache nodes per customer.
1066//
1067//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1068//   The requested cache parameter group name does not refer to an existing cache
1069//   parameter group.
1070//
1071//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1072//   The VPC network is in an invalid state.
1073//
1074//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
1075//   The request cannot be processed because it would cause the resource to have
1076//   more than the allowed number of tags. The maximum number of tags permitted
1077//   on a resource is 50.
1078//
1079//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1080//   The request cannot be processed because it would exceed the maximum allowed
1081//   number of node groups (shards) in a single replication group. The default
1082//   maximum is 90
1083//
1084//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1085//   The value for a parameter is invalid.
1086//
1087//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1088//   Two or more incompatible parameters were specified.
1089//
1090// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
1091func (c *ElastiCache) CreateReplicationGroup(input *CreateReplicationGroupInput) (*CreateReplicationGroupOutput, error) {
1092	req, out := c.CreateReplicationGroupRequest(input)
1093	return out, req.Send()
1094}
1095
1096// CreateReplicationGroupWithContext is the same as CreateReplicationGroup with the addition of
1097// the ability to pass a context and additional request options.
1098//
1099// See CreateReplicationGroup for details on how to use this API operation.
1100//
1101// The context must be non-nil and will be used for request cancellation. If
1102// the context is nil a panic will occur. In the future the SDK may create
1103// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1104// for more information on using Contexts.
1105func (c *ElastiCache) CreateReplicationGroupWithContext(ctx aws.Context, input *CreateReplicationGroupInput, opts ...request.Option) (*CreateReplicationGroupOutput, error) {
1106	req, out := c.CreateReplicationGroupRequest(input)
1107	req.SetContext(ctx)
1108	req.ApplyOptions(opts...)
1109	return out, req.Send()
1110}
1111
1112const opCreateSnapshot = "CreateSnapshot"
1113
1114// CreateSnapshotRequest generates a "aws/request.Request" representing the
1115// client's request for the CreateSnapshot operation. The "output" return
1116// value will be populated with the request's response once the request completes
1117// successfully.
1118//
1119// Use "Send" method on the returned Request to send the API call to the service.
1120// the "output" return value is not valid until after Send returns without error.
1121//
1122// See CreateSnapshot for more information on using the CreateSnapshot
1123// API call, and error handling.
1124//
1125// This method is useful when you want to inject custom logic or configuration
1126// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1127//
1128//
1129//    // Example sending a request using the CreateSnapshotRequest method.
1130//    req, resp := client.CreateSnapshotRequest(params)
1131//
1132//    err := req.Send()
1133//    if err == nil { // resp is now filled
1134//        fmt.Println(resp)
1135//    }
1136//
1137// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1138func (c *ElastiCache) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *CreateSnapshotOutput) {
1139	op := &request.Operation{
1140		Name:       opCreateSnapshot,
1141		HTTPMethod: "POST",
1142		HTTPPath:   "/",
1143	}
1144
1145	if input == nil {
1146		input = &CreateSnapshotInput{}
1147	}
1148
1149	output = &CreateSnapshotOutput{}
1150	req = c.newRequest(op, input, output)
1151	return
1152}
1153
1154// CreateSnapshot API operation for Amazon ElastiCache.
1155//
1156// Creates a copy of an entire cluster or replication group at a specific moment
1157// in time.
1158//
1159// This operation is valid for Redis only.
1160//
1161// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1162// with awserr.Error's Code and Message methods to get detailed information about
1163// the error.
1164//
1165// See the AWS API reference guide for Amazon ElastiCache's
1166// API operation CreateSnapshot for usage and error information.
1167//
1168// Returned Error Codes:
1169//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1170//   You already have a snapshot with the given name.
1171//
1172//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1173//   The requested cluster ID does not refer to an existing cluster.
1174//
1175//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1176//   The specified replication group does not exist.
1177//
1178//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1179//   The requested cluster is not in the available state.
1180//
1181//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1182//   The requested replication group is not in the available state.
1183//
1184//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1185//   The request cannot be processed because it would exceed the maximum number
1186//   of snapshots.
1187//
1188//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1189//   You attempted one of the following operations:
1190//
1191//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1192//      node.
1193//
1194//      * Creating a snapshot of a cluster that is running Memcached rather than
1195//      Redis.
1196//
1197//   Neither of these are supported by ElastiCache.
1198//
1199//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1200//   Two or more incompatible parameters were specified.
1201//
1202//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1203//   The value for a parameter is invalid.
1204//
1205// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1206func (c *ElastiCache) CreateSnapshot(input *CreateSnapshotInput) (*CreateSnapshotOutput, error) {
1207	req, out := c.CreateSnapshotRequest(input)
1208	return out, req.Send()
1209}
1210
1211// CreateSnapshotWithContext is the same as CreateSnapshot with the addition of
1212// the ability to pass a context and additional request options.
1213//
1214// See CreateSnapshot for details on how to use this API operation.
1215//
1216// The context must be non-nil and will be used for request cancellation. If
1217// the context is nil a panic will occur. In the future the SDK may create
1218// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1219// for more information on using Contexts.
1220func (c *ElastiCache) CreateSnapshotWithContext(ctx aws.Context, input *CreateSnapshotInput, opts ...request.Option) (*CreateSnapshotOutput, error) {
1221	req, out := c.CreateSnapshotRequest(input)
1222	req.SetContext(ctx)
1223	req.ApplyOptions(opts...)
1224	return out, req.Send()
1225}
1226
1227const opDecreaseReplicaCount = "DecreaseReplicaCount"
1228
1229// DecreaseReplicaCountRequest generates a "aws/request.Request" representing the
1230// client's request for the DecreaseReplicaCount operation. The "output" return
1231// value will be populated with the request's response once the request completes
1232// successfully.
1233//
1234// Use "Send" method on the returned Request to send the API call to the service.
1235// the "output" return value is not valid until after Send returns without error.
1236//
1237// See DecreaseReplicaCount for more information on using the DecreaseReplicaCount
1238// API call, and error handling.
1239//
1240// This method is useful when you want to inject custom logic or configuration
1241// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1242//
1243//
1244//    // Example sending a request using the DecreaseReplicaCountRequest method.
1245//    req, resp := client.DecreaseReplicaCountRequest(params)
1246//
1247//    err := req.Send()
1248//    if err == nil { // resp is now filled
1249//        fmt.Println(resp)
1250//    }
1251//
1252// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1253func (c *ElastiCache) DecreaseReplicaCountRequest(input *DecreaseReplicaCountInput) (req *request.Request, output *DecreaseReplicaCountOutput) {
1254	op := &request.Operation{
1255		Name:       opDecreaseReplicaCount,
1256		HTTPMethod: "POST",
1257		HTTPPath:   "/",
1258	}
1259
1260	if input == nil {
1261		input = &DecreaseReplicaCountInput{}
1262	}
1263
1264	output = &DecreaseReplicaCountOutput{}
1265	req = c.newRequest(op, input, output)
1266	return
1267}
1268
1269// DecreaseReplicaCount API operation for Amazon ElastiCache.
1270//
1271// Dynamically decreases the number of replics in a Redis (cluster mode disabled)
1272// replication group or the number of replica nodes in one or more node groups
1273// (shards) of a Redis (cluster mode enabled) replication group. This operation
1274// is performed with no cluster down time.
1275//
1276// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1277// with awserr.Error's Code and Message methods to get detailed information about
1278// the error.
1279//
1280// See the AWS API reference guide for Amazon ElastiCache's
1281// API operation DecreaseReplicaCount for usage and error information.
1282//
1283// Returned Error Codes:
1284//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1285//   The specified replication group does not exist.
1286//
1287//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1288//   The requested replication group is not in the available state.
1289//
1290//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1291//   The requested cluster is not in the available state.
1292//
1293//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1294//   The VPC network is in an invalid state.
1295//
1296//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1297//   The requested cache node type is not available in the specified Availability
1298//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1299//   in the ElastiCache User Guide.
1300//
1301//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1302//   The request cannot be processed because it would exceed the allowed number
1303//   of clusters per customer.
1304//
1305//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1306//   The request cannot be processed because it would exceed the maximum allowed
1307//   number of node groups (shards) in a single replication group. The default
1308//   maximum is 90
1309//
1310//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1311//   The request cannot be processed because it would exceed the allowed number
1312//   of cache nodes per customer.
1313//
1314//   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
1315//   The specified service linked role (SLR) was not found.
1316//
1317//   * ErrCodeNoOperationFault "NoOperationFault"
1318//   The operation was not performed because no changes were required.
1319//
1320//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1321//   The value for a parameter is invalid.
1322//
1323//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1324//   Two or more incompatible parameters were specified.
1325//
1326// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1327func (c *ElastiCache) DecreaseReplicaCount(input *DecreaseReplicaCountInput) (*DecreaseReplicaCountOutput, error) {
1328	req, out := c.DecreaseReplicaCountRequest(input)
1329	return out, req.Send()
1330}
1331
1332// DecreaseReplicaCountWithContext is the same as DecreaseReplicaCount with the addition of
1333// the ability to pass a context and additional request options.
1334//
1335// See DecreaseReplicaCount for details on how to use this API operation.
1336//
1337// The context must be non-nil and will be used for request cancellation. If
1338// the context is nil a panic will occur. In the future the SDK may create
1339// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1340// for more information on using Contexts.
1341func (c *ElastiCache) DecreaseReplicaCountWithContext(ctx aws.Context, input *DecreaseReplicaCountInput, opts ...request.Option) (*DecreaseReplicaCountOutput, error) {
1342	req, out := c.DecreaseReplicaCountRequest(input)
1343	req.SetContext(ctx)
1344	req.ApplyOptions(opts...)
1345	return out, req.Send()
1346}
1347
1348const opDeleteCacheCluster = "DeleteCacheCluster"
1349
1350// DeleteCacheClusterRequest generates a "aws/request.Request" representing the
1351// client's request for the DeleteCacheCluster operation. The "output" return
1352// value will be populated with the request's response once the request completes
1353// successfully.
1354//
1355// Use "Send" method on the returned Request to send the API call to the service.
1356// the "output" return value is not valid until after Send returns without error.
1357//
1358// See DeleteCacheCluster for more information on using the DeleteCacheCluster
1359// API call, and error handling.
1360//
1361// This method is useful when you want to inject custom logic or configuration
1362// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1363//
1364//
1365//    // Example sending a request using the DeleteCacheClusterRequest method.
1366//    req, resp := client.DeleteCacheClusterRequest(params)
1367//
1368//    err := req.Send()
1369//    if err == nil { // resp is now filled
1370//        fmt.Println(resp)
1371//    }
1372//
1373// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1374func (c *ElastiCache) DeleteCacheClusterRequest(input *DeleteCacheClusterInput) (req *request.Request, output *DeleteCacheClusterOutput) {
1375	op := &request.Operation{
1376		Name:       opDeleteCacheCluster,
1377		HTTPMethod: "POST",
1378		HTTPPath:   "/",
1379	}
1380
1381	if input == nil {
1382		input = &DeleteCacheClusterInput{}
1383	}
1384
1385	output = &DeleteCacheClusterOutput{}
1386	req = c.newRequest(op, input, output)
1387	return
1388}
1389
1390// DeleteCacheCluster API operation for Amazon ElastiCache.
1391//
1392// Deletes a previously provisioned cluster. DeleteCacheCluster deletes all
1393// associated cache nodes, node endpoints and the cluster itself. When you receive
1394// a successful response from this operation, Amazon ElastiCache immediately
1395// begins deleting the cluster; you cannot cancel or revert this operation.
1396//
1397// This operation is not valid for:
1398//
1399//    * Redis (cluster mode enabled) clusters
1400//
1401//    * A cluster that is the last read replica of a replication group
1402//
1403//    * A node group (shard) that has Multi-AZ mode enabled
1404//
1405//    * A cluster from a Redis (cluster mode enabled) replication group
1406//
1407//    * A cluster that is not in the available state
1408//
1409// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1410// with awserr.Error's Code and Message methods to get detailed information about
1411// the error.
1412//
1413// See the AWS API reference guide for Amazon ElastiCache's
1414// API operation DeleteCacheCluster for usage and error information.
1415//
1416// Returned Error Codes:
1417//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1418//   The requested cluster ID does not refer to an existing cluster.
1419//
1420//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1421//   The requested cluster is not in the available state.
1422//
1423//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1424//   You already have a snapshot with the given name.
1425//
1426//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1427//   You attempted one of the following operations:
1428//
1429//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1430//      node.
1431//
1432//      * Creating a snapshot of a cluster that is running Memcached rather than
1433//      Redis.
1434//
1435//   Neither of these are supported by ElastiCache.
1436//
1437//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1438//   The request cannot be processed because it would exceed the maximum number
1439//   of snapshots.
1440//
1441//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1442//   The value for a parameter is invalid.
1443//
1444//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1445//   Two or more incompatible parameters were specified.
1446//
1447// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1448func (c *ElastiCache) DeleteCacheCluster(input *DeleteCacheClusterInput) (*DeleteCacheClusterOutput, error) {
1449	req, out := c.DeleteCacheClusterRequest(input)
1450	return out, req.Send()
1451}
1452
1453// DeleteCacheClusterWithContext is the same as DeleteCacheCluster with the addition of
1454// the ability to pass a context and additional request options.
1455//
1456// See DeleteCacheCluster for details on how to use this API operation.
1457//
1458// The context must be non-nil and will be used for request cancellation. If
1459// the context is nil a panic will occur. In the future the SDK may create
1460// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1461// for more information on using Contexts.
1462func (c *ElastiCache) DeleteCacheClusterWithContext(ctx aws.Context, input *DeleteCacheClusterInput, opts ...request.Option) (*DeleteCacheClusterOutput, error) {
1463	req, out := c.DeleteCacheClusterRequest(input)
1464	req.SetContext(ctx)
1465	req.ApplyOptions(opts...)
1466	return out, req.Send()
1467}
1468
1469const opDeleteCacheParameterGroup = "DeleteCacheParameterGroup"
1470
1471// DeleteCacheParameterGroupRequest generates a "aws/request.Request" representing the
1472// client's request for the DeleteCacheParameterGroup operation. The "output" return
1473// value will be populated with the request's response once the request completes
1474// successfully.
1475//
1476// Use "Send" method on the returned Request to send the API call to the service.
1477// the "output" return value is not valid until after Send returns without error.
1478//
1479// See DeleteCacheParameterGroup for more information on using the DeleteCacheParameterGroup
1480// API call, and error handling.
1481//
1482// This method is useful when you want to inject custom logic or configuration
1483// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1484//
1485//
1486//    // Example sending a request using the DeleteCacheParameterGroupRequest method.
1487//    req, resp := client.DeleteCacheParameterGroupRequest(params)
1488//
1489//    err := req.Send()
1490//    if err == nil { // resp is now filled
1491//        fmt.Println(resp)
1492//    }
1493//
1494// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1495func (c *ElastiCache) DeleteCacheParameterGroupRequest(input *DeleteCacheParameterGroupInput) (req *request.Request, output *DeleteCacheParameterGroupOutput) {
1496	op := &request.Operation{
1497		Name:       opDeleteCacheParameterGroup,
1498		HTTPMethod: "POST",
1499		HTTPPath:   "/",
1500	}
1501
1502	if input == nil {
1503		input = &DeleteCacheParameterGroupInput{}
1504	}
1505
1506	output = &DeleteCacheParameterGroupOutput{}
1507	req = c.newRequest(op, input, output)
1508	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1509	return
1510}
1511
1512// DeleteCacheParameterGroup API operation for Amazon ElastiCache.
1513//
1514// Deletes the specified cache parameter group. You cannot delete a cache parameter
1515// group if it is associated with any cache clusters.
1516//
1517// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1518// with awserr.Error's Code and Message methods to get detailed information about
1519// the error.
1520//
1521// See the AWS API reference guide for Amazon ElastiCache's
1522// API operation DeleteCacheParameterGroup for usage and error information.
1523//
1524// Returned Error Codes:
1525//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
1526//   The current state of the cache parameter group does not allow the requested
1527//   operation to occur.
1528//
1529//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1530//   The requested cache parameter group name does not refer to an existing cache
1531//   parameter group.
1532//
1533//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1534//   The value for a parameter is invalid.
1535//
1536//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1537//   Two or more incompatible parameters were specified.
1538//
1539// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1540func (c *ElastiCache) DeleteCacheParameterGroup(input *DeleteCacheParameterGroupInput) (*DeleteCacheParameterGroupOutput, error) {
1541	req, out := c.DeleteCacheParameterGroupRequest(input)
1542	return out, req.Send()
1543}
1544
1545// DeleteCacheParameterGroupWithContext is the same as DeleteCacheParameterGroup with the addition of
1546// the ability to pass a context and additional request options.
1547//
1548// See DeleteCacheParameterGroup for details on how to use this API operation.
1549//
1550// The context must be non-nil and will be used for request cancellation. If
1551// the context is nil a panic will occur. In the future the SDK may create
1552// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1553// for more information on using Contexts.
1554func (c *ElastiCache) DeleteCacheParameterGroupWithContext(ctx aws.Context, input *DeleteCacheParameterGroupInput, opts ...request.Option) (*DeleteCacheParameterGroupOutput, error) {
1555	req, out := c.DeleteCacheParameterGroupRequest(input)
1556	req.SetContext(ctx)
1557	req.ApplyOptions(opts...)
1558	return out, req.Send()
1559}
1560
1561const opDeleteCacheSecurityGroup = "DeleteCacheSecurityGroup"
1562
1563// DeleteCacheSecurityGroupRequest generates a "aws/request.Request" representing the
1564// client's request for the DeleteCacheSecurityGroup operation. The "output" return
1565// value will be populated with the request's response once the request completes
1566// successfully.
1567//
1568// Use "Send" method on the returned Request to send the API call to the service.
1569// the "output" return value is not valid until after Send returns without error.
1570//
1571// See DeleteCacheSecurityGroup for more information on using the DeleteCacheSecurityGroup
1572// API call, and error handling.
1573//
1574// This method is useful when you want to inject custom logic or configuration
1575// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1576//
1577//
1578//    // Example sending a request using the DeleteCacheSecurityGroupRequest method.
1579//    req, resp := client.DeleteCacheSecurityGroupRequest(params)
1580//
1581//    err := req.Send()
1582//    if err == nil { // resp is now filled
1583//        fmt.Println(resp)
1584//    }
1585//
1586// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1587func (c *ElastiCache) DeleteCacheSecurityGroupRequest(input *DeleteCacheSecurityGroupInput) (req *request.Request, output *DeleteCacheSecurityGroupOutput) {
1588	op := &request.Operation{
1589		Name:       opDeleteCacheSecurityGroup,
1590		HTTPMethod: "POST",
1591		HTTPPath:   "/",
1592	}
1593
1594	if input == nil {
1595		input = &DeleteCacheSecurityGroupInput{}
1596	}
1597
1598	output = &DeleteCacheSecurityGroupOutput{}
1599	req = c.newRequest(op, input, output)
1600	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1601	return
1602}
1603
1604// DeleteCacheSecurityGroup API operation for Amazon ElastiCache.
1605//
1606// Deletes a cache security group.
1607//
1608// You cannot delete a cache security group if it is associated with any clusters.
1609//
1610// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1611// with awserr.Error's Code and Message methods to get detailed information about
1612// the error.
1613//
1614// See the AWS API reference guide for Amazon ElastiCache's
1615// API operation DeleteCacheSecurityGroup for usage and error information.
1616//
1617// Returned Error Codes:
1618//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
1619//   The current state of the cache security group does not allow deletion.
1620//
1621//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1622//   The requested cache security group name does not refer to an existing cache
1623//   security group.
1624//
1625//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1626//   The value for a parameter is invalid.
1627//
1628//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1629//   Two or more incompatible parameters were specified.
1630//
1631// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1632func (c *ElastiCache) DeleteCacheSecurityGroup(input *DeleteCacheSecurityGroupInput) (*DeleteCacheSecurityGroupOutput, error) {
1633	req, out := c.DeleteCacheSecurityGroupRequest(input)
1634	return out, req.Send()
1635}
1636
1637// DeleteCacheSecurityGroupWithContext is the same as DeleteCacheSecurityGroup with the addition of
1638// the ability to pass a context and additional request options.
1639//
1640// See DeleteCacheSecurityGroup for details on how to use this API operation.
1641//
1642// The context must be non-nil and will be used for request cancellation. If
1643// the context is nil a panic will occur. In the future the SDK may create
1644// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1645// for more information on using Contexts.
1646func (c *ElastiCache) DeleteCacheSecurityGroupWithContext(ctx aws.Context, input *DeleteCacheSecurityGroupInput, opts ...request.Option) (*DeleteCacheSecurityGroupOutput, error) {
1647	req, out := c.DeleteCacheSecurityGroupRequest(input)
1648	req.SetContext(ctx)
1649	req.ApplyOptions(opts...)
1650	return out, req.Send()
1651}
1652
1653const opDeleteCacheSubnetGroup = "DeleteCacheSubnetGroup"
1654
1655// DeleteCacheSubnetGroupRequest generates a "aws/request.Request" representing the
1656// client's request for the DeleteCacheSubnetGroup operation. The "output" return
1657// value will be populated with the request's response once the request completes
1658// successfully.
1659//
1660// Use "Send" method on the returned Request to send the API call to the service.
1661// the "output" return value is not valid until after Send returns without error.
1662//
1663// See DeleteCacheSubnetGroup for more information on using the DeleteCacheSubnetGroup
1664// API call, and error handling.
1665//
1666// This method is useful when you want to inject custom logic or configuration
1667// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1668//
1669//
1670//    // Example sending a request using the DeleteCacheSubnetGroupRequest method.
1671//    req, resp := client.DeleteCacheSubnetGroupRequest(params)
1672//
1673//    err := req.Send()
1674//    if err == nil { // resp is now filled
1675//        fmt.Println(resp)
1676//    }
1677//
1678// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1679func (c *ElastiCache) DeleteCacheSubnetGroupRequest(input *DeleteCacheSubnetGroupInput) (req *request.Request, output *DeleteCacheSubnetGroupOutput) {
1680	op := &request.Operation{
1681		Name:       opDeleteCacheSubnetGroup,
1682		HTTPMethod: "POST",
1683		HTTPPath:   "/",
1684	}
1685
1686	if input == nil {
1687		input = &DeleteCacheSubnetGroupInput{}
1688	}
1689
1690	output = &DeleteCacheSubnetGroupOutput{}
1691	req = c.newRequest(op, input, output)
1692	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1693	return
1694}
1695
1696// DeleteCacheSubnetGroup API operation for Amazon ElastiCache.
1697//
1698// Deletes a cache subnet group.
1699//
1700// You cannot delete a cache subnet group if it is associated with any clusters.
1701//
1702// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1703// with awserr.Error's Code and Message methods to get detailed information about
1704// the error.
1705//
1706// See the AWS API reference guide for Amazon ElastiCache's
1707// API operation DeleteCacheSubnetGroup for usage and error information.
1708//
1709// Returned Error Codes:
1710//   * ErrCodeCacheSubnetGroupInUse "CacheSubnetGroupInUse"
1711//   The requested cache subnet group is currently in use.
1712//
1713//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1714//   The requested cache subnet group name does not refer to an existing cache
1715//   subnet group.
1716//
1717// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1718func (c *ElastiCache) DeleteCacheSubnetGroup(input *DeleteCacheSubnetGroupInput) (*DeleteCacheSubnetGroupOutput, error) {
1719	req, out := c.DeleteCacheSubnetGroupRequest(input)
1720	return out, req.Send()
1721}
1722
1723// DeleteCacheSubnetGroupWithContext is the same as DeleteCacheSubnetGroup with the addition of
1724// the ability to pass a context and additional request options.
1725//
1726// See DeleteCacheSubnetGroup for details on how to use this API operation.
1727//
1728// The context must be non-nil and will be used for request cancellation. If
1729// the context is nil a panic will occur. In the future the SDK may create
1730// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1731// for more information on using Contexts.
1732func (c *ElastiCache) DeleteCacheSubnetGroupWithContext(ctx aws.Context, input *DeleteCacheSubnetGroupInput, opts ...request.Option) (*DeleteCacheSubnetGroupOutput, error) {
1733	req, out := c.DeleteCacheSubnetGroupRequest(input)
1734	req.SetContext(ctx)
1735	req.ApplyOptions(opts...)
1736	return out, req.Send()
1737}
1738
1739const opDeleteReplicationGroup = "DeleteReplicationGroup"
1740
1741// DeleteReplicationGroupRequest generates a "aws/request.Request" representing the
1742// client's request for the DeleteReplicationGroup operation. The "output" return
1743// value will be populated with the request's response once the request completes
1744// successfully.
1745//
1746// Use "Send" method on the returned Request to send the API call to the service.
1747// the "output" return value is not valid until after Send returns without error.
1748//
1749// See DeleteReplicationGroup for more information on using the DeleteReplicationGroup
1750// API call, and error handling.
1751//
1752// This method is useful when you want to inject custom logic or configuration
1753// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1754//
1755//
1756//    // Example sending a request using the DeleteReplicationGroupRequest method.
1757//    req, resp := client.DeleteReplicationGroupRequest(params)
1758//
1759//    err := req.Send()
1760//    if err == nil { // resp is now filled
1761//        fmt.Println(resp)
1762//    }
1763//
1764// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
1765func (c *ElastiCache) DeleteReplicationGroupRequest(input *DeleteReplicationGroupInput) (req *request.Request, output *DeleteReplicationGroupOutput) {
1766	op := &request.Operation{
1767		Name:       opDeleteReplicationGroup,
1768		HTTPMethod: "POST",
1769		HTTPPath:   "/",
1770	}
1771
1772	if input == nil {
1773		input = &DeleteReplicationGroupInput{}
1774	}
1775
1776	output = &DeleteReplicationGroupOutput{}
1777	req = c.newRequest(op, input, output)
1778	return
1779}
1780
1781// DeleteReplicationGroup API operation for Amazon ElastiCache.
1782//
1783// Deletes an existing replication group. By default, this operation deletes
1784// the entire replication group, including the primary/primaries and all of
1785// the read replicas. If the replication group has only one primary, you can
1786// optionally delete only the read replicas, while retaining the primary by
1787// setting RetainPrimaryCluster=true.
1788//
1789// When you receive a successful response from this operation, Amazon ElastiCache
1790// immediately begins deleting the selected resources; you cannot cancel or
1791// revert this operation.
1792//
1793// This operation is valid for Redis only.
1794//
1795// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1796// with awserr.Error's Code and Message methods to get detailed information about
1797// the error.
1798//
1799// See the AWS API reference guide for Amazon ElastiCache's
1800// API operation DeleteReplicationGroup for usage and error information.
1801//
1802// Returned Error Codes:
1803//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1804//   The specified replication group does not exist.
1805//
1806//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1807//   The requested replication group is not in the available state.
1808//
1809//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1810//   You already have a snapshot with the given name.
1811//
1812//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1813//   You attempted one of the following operations:
1814//
1815//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1816//      node.
1817//
1818//      * Creating a snapshot of a cluster that is running Memcached rather than
1819//      Redis.
1820//
1821//   Neither of these are supported by ElastiCache.
1822//
1823//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1824//   The request cannot be processed because it would exceed the maximum number
1825//   of snapshots.
1826//
1827//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1828//   The value for a parameter is invalid.
1829//
1830//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1831//   Two or more incompatible parameters were specified.
1832//
1833// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
1834func (c *ElastiCache) DeleteReplicationGroup(input *DeleteReplicationGroupInput) (*DeleteReplicationGroupOutput, error) {
1835	req, out := c.DeleteReplicationGroupRequest(input)
1836	return out, req.Send()
1837}
1838
1839// DeleteReplicationGroupWithContext is the same as DeleteReplicationGroup with the addition of
1840// the ability to pass a context and additional request options.
1841//
1842// See DeleteReplicationGroup for details on how to use this API operation.
1843//
1844// The context must be non-nil and will be used for request cancellation. If
1845// the context is nil a panic will occur. In the future the SDK may create
1846// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1847// for more information on using Contexts.
1848func (c *ElastiCache) DeleteReplicationGroupWithContext(ctx aws.Context, input *DeleteReplicationGroupInput, opts ...request.Option) (*DeleteReplicationGroupOutput, error) {
1849	req, out := c.DeleteReplicationGroupRequest(input)
1850	req.SetContext(ctx)
1851	req.ApplyOptions(opts...)
1852	return out, req.Send()
1853}
1854
1855const opDeleteSnapshot = "DeleteSnapshot"
1856
1857// DeleteSnapshotRequest generates a "aws/request.Request" representing the
1858// client's request for the DeleteSnapshot operation. The "output" return
1859// value will be populated with the request's response once the request completes
1860// successfully.
1861//
1862// Use "Send" method on the returned Request to send the API call to the service.
1863// the "output" return value is not valid until after Send returns without error.
1864//
1865// See DeleteSnapshot for more information on using the DeleteSnapshot
1866// API call, and error handling.
1867//
1868// This method is useful when you want to inject custom logic or configuration
1869// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1870//
1871//
1872//    // Example sending a request using the DeleteSnapshotRequest method.
1873//    req, resp := client.DeleteSnapshotRequest(params)
1874//
1875//    err := req.Send()
1876//    if err == nil { // resp is now filled
1877//        fmt.Println(resp)
1878//    }
1879//
1880// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
1881func (c *ElastiCache) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) {
1882	op := &request.Operation{
1883		Name:       opDeleteSnapshot,
1884		HTTPMethod: "POST",
1885		HTTPPath:   "/",
1886	}
1887
1888	if input == nil {
1889		input = &DeleteSnapshotInput{}
1890	}
1891
1892	output = &DeleteSnapshotOutput{}
1893	req = c.newRequest(op, input, output)
1894	return
1895}
1896
1897// DeleteSnapshot API operation for Amazon ElastiCache.
1898//
1899// Deletes an existing snapshot. When you receive a successful response from
1900// this operation, ElastiCache immediately begins deleting the snapshot; you
1901// cannot cancel or revert this operation.
1902//
1903// This operation is valid for Redis only.
1904//
1905// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1906// with awserr.Error's Code and Message methods to get detailed information about
1907// the error.
1908//
1909// See the AWS API reference guide for Amazon ElastiCache's
1910// API operation DeleteSnapshot for usage and error information.
1911//
1912// Returned Error Codes:
1913//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
1914//   The requested snapshot name does not refer to an existing snapshot.
1915//
1916//   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
1917//   The current state of the snapshot does not allow the requested operation
1918//   to occur.
1919//
1920//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1921//   The value for a parameter is invalid.
1922//
1923//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1924//   Two or more incompatible parameters were specified.
1925//
1926// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
1927func (c *ElastiCache) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) {
1928	req, out := c.DeleteSnapshotRequest(input)
1929	return out, req.Send()
1930}
1931
1932// DeleteSnapshotWithContext is the same as DeleteSnapshot with the addition of
1933// the ability to pass a context and additional request options.
1934//
1935// See DeleteSnapshot for details on how to use this API operation.
1936//
1937// The context must be non-nil and will be used for request cancellation. If
1938// the context is nil a panic will occur. In the future the SDK may create
1939// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1940// for more information on using Contexts.
1941func (c *ElastiCache) DeleteSnapshotWithContext(ctx aws.Context, input *DeleteSnapshotInput, opts ...request.Option) (*DeleteSnapshotOutput, error) {
1942	req, out := c.DeleteSnapshotRequest(input)
1943	req.SetContext(ctx)
1944	req.ApplyOptions(opts...)
1945	return out, req.Send()
1946}
1947
1948const opDescribeCacheClusters = "DescribeCacheClusters"
1949
1950// DescribeCacheClustersRequest generates a "aws/request.Request" representing the
1951// client's request for the DescribeCacheClusters operation. The "output" return
1952// value will be populated with the request's response once the request completes
1953// successfully.
1954//
1955// Use "Send" method on the returned Request to send the API call to the service.
1956// the "output" return value is not valid until after Send returns without error.
1957//
1958// See DescribeCacheClusters for more information on using the DescribeCacheClusters
1959// API call, and error handling.
1960//
1961// This method is useful when you want to inject custom logic or configuration
1962// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1963//
1964//
1965//    // Example sending a request using the DescribeCacheClustersRequest method.
1966//    req, resp := client.DescribeCacheClustersRequest(params)
1967//
1968//    err := req.Send()
1969//    if err == nil { // resp is now filled
1970//        fmt.Println(resp)
1971//    }
1972//
1973// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
1974func (c *ElastiCache) DescribeCacheClustersRequest(input *DescribeCacheClustersInput) (req *request.Request, output *DescribeCacheClustersOutput) {
1975	op := &request.Operation{
1976		Name:       opDescribeCacheClusters,
1977		HTTPMethod: "POST",
1978		HTTPPath:   "/",
1979		Paginator: &request.Paginator{
1980			InputTokens:     []string{"Marker"},
1981			OutputTokens:    []string{"Marker"},
1982			LimitToken:      "MaxRecords",
1983			TruncationToken: "",
1984		},
1985	}
1986
1987	if input == nil {
1988		input = &DescribeCacheClustersInput{}
1989	}
1990
1991	output = &DescribeCacheClustersOutput{}
1992	req = c.newRequest(op, input, output)
1993	return
1994}
1995
1996// DescribeCacheClusters API operation for Amazon ElastiCache.
1997//
1998// Returns information about all provisioned clusters if no cluster identifier
1999// is specified, or about a specific cache cluster if a cluster identifier is
2000// supplied.
2001//
2002// By default, abbreviated information about the clusters is returned. You can
2003// use the optional ShowCacheNodeInfo flag to retrieve detailed information
2004// about the cache nodes associated with the clusters. These details include
2005// the DNS address and port for the cache node endpoint.
2006//
2007// If the cluster is in the creating state, only cluster-level information is
2008// displayed until all of the nodes are successfully provisioned.
2009//
2010// If the cluster is in the deleting state, only cluster-level information is
2011// displayed.
2012//
2013// If cache nodes are currently being added to the cluster, node endpoint information
2014// and creation time for the additional nodes are not displayed until they are
2015// completely provisioned. When the cluster state is available, the cluster
2016// is ready for use.
2017//
2018// If cache nodes are currently being removed from the cluster, no endpoint
2019// information for the removed nodes is displayed.
2020//
2021// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2022// with awserr.Error's Code and Message methods to get detailed information about
2023// the error.
2024//
2025// See the AWS API reference guide for Amazon ElastiCache's
2026// API operation DescribeCacheClusters for usage and error information.
2027//
2028// Returned Error Codes:
2029//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
2030//   The requested cluster ID does not refer to an existing cluster.
2031//
2032//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2033//   The value for a parameter is invalid.
2034//
2035//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2036//   Two or more incompatible parameters were specified.
2037//
2038// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2039func (c *ElastiCache) DescribeCacheClusters(input *DescribeCacheClustersInput) (*DescribeCacheClustersOutput, error) {
2040	req, out := c.DescribeCacheClustersRequest(input)
2041	return out, req.Send()
2042}
2043
2044// DescribeCacheClustersWithContext is the same as DescribeCacheClusters with the addition of
2045// the ability to pass a context and additional request options.
2046//
2047// See DescribeCacheClusters for details on how to use this API operation.
2048//
2049// The context must be non-nil and will be used for request cancellation. If
2050// the context is nil a panic will occur. In the future the SDK may create
2051// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2052// for more information on using Contexts.
2053func (c *ElastiCache) DescribeCacheClustersWithContext(ctx aws.Context, input *DescribeCacheClustersInput, opts ...request.Option) (*DescribeCacheClustersOutput, error) {
2054	req, out := c.DescribeCacheClustersRequest(input)
2055	req.SetContext(ctx)
2056	req.ApplyOptions(opts...)
2057	return out, req.Send()
2058}
2059
2060// DescribeCacheClustersPages iterates over the pages of a DescribeCacheClusters operation,
2061// calling the "fn" function with the response data for each page. To stop
2062// iterating, return false from the fn function.
2063//
2064// See DescribeCacheClusters method for more information on how to use this operation.
2065//
2066// Note: This operation can generate multiple requests to a service.
2067//
2068//    // Example iterating over at most 3 pages of a DescribeCacheClusters operation.
2069//    pageNum := 0
2070//    err := client.DescribeCacheClustersPages(params,
2071//        func(page *elasticache.DescribeCacheClustersOutput, lastPage bool) bool {
2072//            pageNum++
2073//            fmt.Println(page)
2074//            return pageNum <= 3
2075//        })
2076//
2077func (c *ElastiCache) DescribeCacheClustersPages(input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool) error {
2078	return c.DescribeCacheClustersPagesWithContext(aws.BackgroundContext(), input, fn)
2079}
2080
2081// DescribeCacheClustersPagesWithContext same as DescribeCacheClustersPages except
2082// it takes a Context and allows setting request options on the pages.
2083//
2084// The context must be non-nil and will be used for request cancellation. If
2085// the context is nil a panic will occur. In the future the SDK may create
2086// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2087// for more information on using Contexts.
2088func (c *ElastiCache) DescribeCacheClustersPagesWithContext(ctx aws.Context, input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool, opts ...request.Option) error {
2089	p := request.Pagination{
2090		NewRequest: func() (*request.Request, error) {
2091			var inCpy *DescribeCacheClustersInput
2092			if input != nil {
2093				tmp := *input
2094				inCpy = &tmp
2095			}
2096			req, _ := c.DescribeCacheClustersRequest(inCpy)
2097			req.SetContext(ctx)
2098			req.ApplyOptions(opts...)
2099			return req, nil
2100		},
2101	}
2102
2103	cont := true
2104	for p.Next() && cont {
2105		cont = fn(p.Page().(*DescribeCacheClustersOutput), !p.HasNextPage())
2106	}
2107	return p.Err()
2108}
2109
2110const opDescribeCacheEngineVersions = "DescribeCacheEngineVersions"
2111
2112// DescribeCacheEngineVersionsRequest generates a "aws/request.Request" representing the
2113// client's request for the DescribeCacheEngineVersions operation. The "output" return
2114// value will be populated with the request's response once the request completes
2115// successfully.
2116//
2117// Use "Send" method on the returned Request to send the API call to the service.
2118// the "output" return value is not valid until after Send returns without error.
2119//
2120// See DescribeCacheEngineVersions for more information on using the DescribeCacheEngineVersions
2121// API call, and error handling.
2122//
2123// This method is useful when you want to inject custom logic or configuration
2124// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2125//
2126//
2127//    // Example sending a request using the DescribeCacheEngineVersionsRequest method.
2128//    req, resp := client.DescribeCacheEngineVersionsRequest(params)
2129//
2130//    err := req.Send()
2131//    if err == nil { // resp is now filled
2132//        fmt.Println(resp)
2133//    }
2134//
2135// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2136func (c *ElastiCache) DescribeCacheEngineVersionsRequest(input *DescribeCacheEngineVersionsInput) (req *request.Request, output *DescribeCacheEngineVersionsOutput) {
2137	op := &request.Operation{
2138		Name:       opDescribeCacheEngineVersions,
2139		HTTPMethod: "POST",
2140		HTTPPath:   "/",
2141		Paginator: &request.Paginator{
2142			InputTokens:     []string{"Marker"},
2143			OutputTokens:    []string{"Marker"},
2144			LimitToken:      "MaxRecords",
2145			TruncationToken: "",
2146		},
2147	}
2148
2149	if input == nil {
2150		input = &DescribeCacheEngineVersionsInput{}
2151	}
2152
2153	output = &DescribeCacheEngineVersionsOutput{}
2154	req = c.newRequest(op, input, output)
2155	return
2156}
2157
2158// DescribeCacheEngineVersions API operation for Amazon ElastiCache.
2159//
2160// Returns a list of the available cache engines and their versions.
2161//
2162// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2163// with awserr.Error's Code and Message methods to get detailed information about
2164// the error.
2165//
2166// See the AWS API reference guide for Amazon ElastiCache's
2167// API operation DescribeCacheEngineVersions for usage and error information.
2168// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2169func (c *ElastiCache) DescribeCacheEngineVersions(input *DescribeCacheEngineVersionsInput) (*DescribeCacheEngineVersionsOutput, error) {
2170	req, out := c.DescribeCacheEngineVersionsRequest(input)
2171	return out, req.Send()
2172}
2173
2174// DescribeCacheEngineVersionsWithContext is the same as DescribeCacheEngineVersions with the addition of
2175// the ability to pass a context and additional request options.
2176//
2177// See DescribeCacheEngineVersions for details on how to use this API operation.
2178//
2179// The context must be non-nil and will be used for request cancellation. If
2180// the context is nil a panic will occur. In the future the SDK may create
2181// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2182// for more information on using Contexts.
2183func (c *ElastiCache) DescribeCacheEngineVersionsWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, opts ...request.Option) (*DescribeCacheEngineVersionsOutput, error) {
2184	req, out := c.DescribeCacheEngineVersionsRequest(input)
2185	req.SetContext(ctx)
2186	req.ApplyOptions(opts...)
2187	return out, req.Send()
2188}
2189
2190// DescribeCacheEngineVersionsPages iterates over the pages of a DescribeCacheEngineVersions operation,
2191// calling the "fn" function with the response data for each page. To stop
2192// iterating, return false from the fn function.
2193//
2194// See DescribeCacheEngineVersions method for more information on how to use this operation.
2195//
2196// Note: This operation can generate multiple requests to a service.
2197//
2198//    // Example iterating over at most 3 pages of a DescribeCacheEngineVersions operation.
2199//    pageNum := 0
2200//    err := client.DescribeCacheEngineVersionsPages(params,
2201//        func(page *elasticache.DescribeCacheEngineVersionsOutput, lastPage bool) bool {
2202//            pageNum++
2203//            fmt.Println(page)
2204//            return pageNum <= 3
2205//        })
2206//
2207func (c *ElastiCache) DescribeCacheEngineVersionsPages(input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool) error {
2208	return c.DescribeCacheEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
2209}
2210
2211// DescribeCacheEngineVersionsPagesWithContext same as DescribeCacheEngineVersionsPages except
2212// it takes a Context and allows setting request options on the pages.
2213//
2214// The context must be non-nil and will be used for request cancellation. If
2215// the context is nil a panic will occur. In the future the SDK may create
2216// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2217// for more information on using Contexts.
2218func (c *ElastiCache) DescribeCacheEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool, opts ...request.Option) error {
2219	p := request.Pagination{
2220		NewRequest: func() (*request.Request, error) {
2221			var inCpy *DescribeCacheEngineVersionsInput
2222			if input != nil {
2223				tmp := *input
2224				inCpy = &tmp
2225			}
2226			req, _ := c.DescribeCacheEngineVersionsRequest(inCpy)
2227			req.SetContext(ctx)
2228			req.ApplyOptions(opts...)
2229			return req, nil
2230		},
2231	}
2232
2233	cont := true
2234	for p.Next() && cont {
2235		cont = fn(p.Page().(*DescribeCacheEngineVersionsOutput), !p.HasNextPage())
2236	}
2237	return p.Err()
2238}
2239
2240const opDescribeCacheParameterGroups = "DescribeCacheParameterGroups"
2241
2242// DescribeCacheParameterGroupsRequest generates a "aws/request.Request" representing the
2243// client's request for the DescribeCacheParameterGroups operation. The "output" return
2244// value will be populated with the request's response once the request completes
2245// successfully.
2246//
2247// Use "Send" method on the returned Request to send the API call to the service.
2248// the "output" return value is not valid until after Send returns without error.
2249//
2250// See DescribeCacheParameterGroups for more information on using the DescribeCacheParameterGroups
2251// API call, and error handling.
2252//
2253// This method is useful when you want to inject custom logic or configuration
2254// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2255//
2256//
2257//    // Example sending a request using the DescribeCacheParameterGroupsRequest method.
2258//    req, resp := client.DescribeCacheParameterGroupsRequest(params)
2259//
2260//    err := req.Send()
2261//    if err == nil { // resp is now filled
2262//        fmt.Println(resp)
2263//    }
2264//
2265// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2266func (c *ElastiCache) DescribeCacheParameterGroupsRequest(input *DescribeCacheParameterGroupsInput) (req *request.Request, output *DescribeCacheParameterGroupsOutput) {
2267	op := &request.Operation{
2268		Name:       opDescribeCacheParameterGroups,
2269		HTTPMethod: "POST",
2270		HTTPPath:   "/",
2271		Paginator: &request.Paginator{
2272			InputTokens:     []string{"Marker"},
2273			OutputTokens:    []string{"Marker"},
2274			LimitToken:      "MaxRecords",
2275			TruncationToken: "",
2276		},
2277	}
2278
2279	if input == nil {
2280		input = &DescribeCacheParameterGroupsInput{}
2281	}
2282
2283	output = &DescribeCacheParameterGroupsOutput{}
2284	req = c.newRequest(op, input, output)
2285	return
2286}
2287
2288// DescribeCacheParameterGroups API operation for Amazon ElastiCache.
2289//
2290// Returns a list of cache parameter group descriptions. If a cache parameter
2291// group name is specified, the list contains only the descriptions for that
2292// group.
2293//
2294// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2295// with awserr.Error's Code and Message methods to get detailed information about
2296// the error.
2297//
2298// See the AWS API reference guide for Amazon ElastiCache's
2299// API operation DescribeCacheParameterGroups for usage and error information.
2300//
2301// Returned Error Codes:
2302//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2303//   The requested cache parameter group name does not refer to an existing cache
2304//   parameter group.
2305//
2306//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2307//   The value for a parameter is invalid.
2308//
2309//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2310//   Two or more incompatible parameters were specified.
2311//
2312// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2313func (c *ElastiCache) DescribeCacheParameterGroups(input *DescribeCacheParameterGroupsInput) (*DescribeCacheParameterGroupsOutput, error) {
2314	req, out := c.DescribeCacheParameterGroupsRequest(input)
2315	return out, req.Send()
2316}
2317
2318// DescribeCacheParameterGroupsWithContext is the same as DescribeCacheParameterGroups with the addition of
2319// the ability to pass a context and additional request options.
2320//
2321// See DescribeCacheParameterGroups for details on how to use this API operation.
2322//
2323// The context must be non-nil and will be used for request cancellation. If
2324// the context is nil a panic will occur. In the future the SDK may create
2325// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2326// for more information on using Contexts.
2327func (c *ElastiCache) DescribeCacheParameterGroupsWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, opts ...request.Option) (*DescribeCacheParameterGroupsOutput, error) {
2328	req, out := c.DescribeCacheParameterGroupsRequest(input)
2329	req.SetContext(ctx)
2330	req.ApplyOptions(opts...)
2331	return out, req.Send()
2332}
2333
2334// DescribeCacheParameterGroupsPages iterates over the pages of a DescribeCacheParameterGroups operation,
2335// calling the "fn" function with the response data for each page. To stop
2336// iterating, return false from the fn function.
2337//
2338// See DescribeCacheParameterGroups method for more information on how to use this operation.
2339//
2340// Note: This operation can generate multiple requests to a service.
2341//
2342//    // Example iterating over at most 3 pages of a DescribeCacheParameterGroups operation.
2343//    pageNum := 0
2344//    err := client.DescribeCacheParameterGroupsPages(params,
2345//        func(page *elasticache.DescribeCacheParameterGroupsOutput, lastPage bool) bool {
2346//            pageNum++
2347//            fmt.Println(page)
2348//            return pageNum <= 3
2349//        })
2350//
2351func (c *ElastiCache) DescribeCacheParameterGroupsPages(input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool) error {
2352	return c.DescribeCacheParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2353}
2354
2355// DescribeCacheParameterGroupsPagesWithContext same as DescribeCacheParameterGroupsPages except
2356// it takes a Context and allows setting request options on the pages.
2357//
2358// The context must be non-nil and will be used for request cancellation. If
2359// the context is nil a panic will occur. In the future the SDK may create
2360// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2361// for more information on using Contexts.
2362func (c *ElastiCache) DescribeCacheParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool, opts ...request.Option) error {
2363	p := request.Pagination{
2364		NewRequest: func() (*request.Request, error) {
2365			var inCpy *DescribeCacheParameterGroupsInput
2366			if input != nil {
2367				tmp := *input
2368				inCpy = &tmp
2369			}
2370			req, _ := c.DescribeCacheParameterGroupsRequest(inCpy)
2371			req.SetContext(ctx)
2372			req.ApplyOptions(opts...)
2373			return req, nil
2374		},
2375	}
2376
2377	cont := true
2378	for p.Next() && cont {
2379		cont = fn(p.Page().(*DescribeCacheParameterGroupsOutput), !p.HasNextPage())
2380	}
2381	return p.Err()
2382}
2383
2384const opDescribeCacheParameters = "DescribeCacheParameters"
2385
2386// DescribeCacheParametersRequest generates a "aws/request.Request" representing the
2387// client's request for the DescribeCacheParameters operation. The "output" return
2388// value will be populated with the request's response once the request completes
2389// successfully.
2390//
2391// Use "Send" method on the returned Request to send the API call to the service.
2392// the "output" return value is not valid until after Send returns without error.
2393//
2394// See DescribeCacheParameters for more information on using the DescribeCacheParameters
2395// API call, and error handling.
2396//
2397// This method is useful when you want to inject custom logic or configuration
2398// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2399//
2400//
2401//    // Example sending a request using the DescribeCacheParametersRequest method.
2402//    req, resp := client.DescribeCacheParametersRequest(params)
2403//
2404//    err := req.Send()
2405//    if err == nil { // resp is now filled
2406//        fmt.Println(resp)
2407//    }
2408//
2409// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2410func (c *ElastiCache) DescribeCacheParametersRequest(input *DescribeCacheParametersInput) (req *request.Request, output *DescribeCacheParametersOutput) {
2411	op := &request.Operation{
2412		Name:       opDescribeCacheParameters,
2413		HTTPMethod: "POST",
2414		HTTPPath:   "/",
2415		Paginator: &request.Paginator{
2416			InputTokens:     []string{"Marker"},
2417			OutputTokens:    []string{"Marker"},
2418			LimitToken:      "MaxRecords",
2419			TruncationToken: "",
2420		},
2421	}
2422
2423	if input == nil {
2424		input = &DescribeCacheParametersInput{}
2425	}
2426
2427	output = &DescribeCacheParametersOutput{}
2428	req = c.newRequest(op, input, output)
2429	return
2430}
2431
2432// DescribeCacheParameters API operation for Amazon ElastiCache.
2433//
2434// Returns the detailed parameter list for a particular cache parameter group.
2435//
2436// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2437// with awserr.Error's Code and Message methods to get detailed information about
2438// the error.
2439//
2440// See the AWS API reference guide for Amazon ElastiCache's
2441// API operation DescribeCacheParameters for usage and error information.
2442//
2443// Returned Error Codes:
2444//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2445//   The requested cache parameter group name does not refer to an existing cache
2446//   parameter group.
2447//
2448//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2449//   The value for a parameter is invalid.
2450//
2451//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2452//   Two or more incompatible parameters were specified.
2453//
2454// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2455func (c *ElastiCache) DescribeCacheParameters(input *DescribeCacheParametersInput) (*DescribeCacheParametersOutput, error) {
2456	req, out := c.DescribeCacheParametersRequest(input)
2457	return out, req.Send()
2458}
2459
2460// DescribeCacheParametersWithContext is the same as DescribeCacheParameters with the addition of
2461// the ability to pass a context and additional request options.
2462//
2463// See DescribeCacheParameters for details on how to use this API operation.
2464//
2465// The context must be non-nil and will be used for request cancellation. If
2466// the context is nil a panic will occur. In the future the SDK may create
2467// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2468// for more information on using Contexts.
2469func (c *ElastiCache) DescribeCacheParametersWithContext(ctx aws.Context, input *DescribeCacheParametersInput, opts ...request.Option) (*DescribeCacheParametersOutput, error) {
2470	req, out := c.DescribeCacheParametersRequest(input)
2471	req.SetContext(ctx)
2472	req.ApplyOptions(opts...)
2473	return out, req.Send()
2474}
2475
2476// DescribeCacheParametersPages iterates over the pages of a DescribeCacheParameters operation,
2477// calling the "fn" function with the response data for each page. To stop
2478// iterating, return false from the fn function.
2479//
2480// See DescribeCacheParameters method for more information on how to use this operation.
2481//
2482// Note: This operation can generate multiple requests to a service.
2483//
2484//    // Example iterating over at most 3 pages of a DescribeCacheParameters operation.
2485//    pageNum := 0
2486//    err := client.DescribeCacheParametersPages(params,
2487//        func(page *elasticache.DescribeCacheParametersOutput, lastPage bool) bool {
2488//            pageNum++
2489//            fmt.Println(page)
2490//            return pageNum <= 3
2491//        })
2492//
2493func (c *ElastiCache) DescribeCacheParametersPages(input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool) error {
2494	return c.DescribeCacheParametersPagesWithContext(aws.BackgroundContext(), input, fn)
2495}
2496
2497// DescribeCacheParametersPagesWithContext same as DescribeCacheParametersPages except
2498// it takes a Context and allows setting request options on the pages.
2499//
2500// The context must be non-nil and will be used for request cancellation. If
2501// the context is nil a panic will occur. In the future the SDK may create
2502// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2503// for more information on using Contexts.
2504func (c *ElastiCache) DescribeCacheParametersPagesWithContext(ctx aws.Context, input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool, opts ...request.Option) error {
2505	p := request.Pagination{
2506		NewRequest: func() (*request.Request, error) {
2507			var inCpy *DescribeCacheParametersInput
2508			if input != nil {
2509				tmp := *input
2510				inCpy = &tmp
2511			}
2512			req, _ := c.DescribeCacheParametersRequest(inCpy)
2513			req.SetContext(ctx)
2514			req.ApplyOptions(opts...)
2515			return req, nil
2516		},
2517	}
2518
2519	cont := true
2520	for p.Next() && cont {
2521		cont = fn(p.Page().(*DescribeCacheParametersOutput), !p.HasNextPage())
2522	}
2523	return p.Err()
2524}
2525
2526const opDescribeCacheSecurityGroups = "DescribeCacheSecurityGroups"
2527
2528// DescribeCacheSecurityGroupsRequest generates a "aws/request.Request" representing the
2529// client's request for the DescribeCacheSecurityGroups operation. The "output" return
2530// value will be populated with the request's response once the request completes
2531// successfully.
2532//
2533// Use "Send" method on the returned Request to send the API call to the service.
2534// the "output" return value is not valid until after Send returns without error.
2535//
2536// See DescribeCacheSecurityGroups for more information on using the DescribeCacheSecurityGroups
2537// API call, and error handling.
2538//
2539// This method is useful when you want to inject custom logic or configuration
2540// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2541//
2542//
2543//    // Example sending a request using the DescribeCacheSecurityGroupsRequest method.
2544//    req, resp := client.DescribeCacheSecurityGroupsRequest(params)
2545//
2546//    err := req.Send()
2547//    if err == nil { // resp is now filled
2548//        fmt.Println(resp)
2549//    }
2550//
2551// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2552func (c *ElastiCache) DescribeCacheSecurityGroupsRequest(input *DescribeCacheSecurityGroupsInput) (req *request.Request, output *DescribeCacheSecurityGroupsOutput) {
2553	op := &request.Operation{
2554		Name:       opDescribeCacheSecurityGroups,
2555		HTTPMethod: "POST",
2556		HTTPPath:   "/",
2557		Paginator: &request.Paginator{
2558			InputTokens:     []string{"Marker"},
2559			OutputTokens:    []string{"Marker"},
2560			LimitToken:      "MaxRecords",
2561			TruncationToken: "",
2562		},
2563	}
2564
2565	if input == nil {
2566		input = &DescribeCacheSecurityGroupsInput{}
2567	}
2568
2569	output = &DescribeCacheSecurityGroupsOutput{}
2570	req = c.newRequest(op, input, output)
2571	return
2572}
2573
2574// DescribeCacheSecurityGroups API operation for Amazon ElastiCache.
2575//
2576// Returns a list of cache security group descriptions. If a cache security
2577// group name is specified, the list contains only the description of that group.
2578// This applicable only when you have ElastiCache in Classic setup
2579//
2580// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2581// with awserr.Error's Code and Message methods to get detailed information about
2582// the error.
2583//
2584// See the AWS API reference guide for Amazon ElastiCache's
2585// API operation DescribeCacheSecurityGroups for usage and error information.
2586//
2587// Returned Error Codes:
2588//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
2589//   The requested cache security group name does not refer to an existing cache
2590//   security group.
2591//
2592//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2593//   The value for a parameter is invalid.
2594//
2595//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2596//   Two or more incompatible parameters were specified.
2597//
2598// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2599func (c *ElastiCache) DescribeCacheSecurityGroups(input *DescribeCacheSecurityGroupsInput) (*DescribeCacheSecurityGroupsOutput, error) {
2600	req, out := c.DescribeCacheSecurityGroupsRequest(input)
2601	return out, req.Send()
2602}
2603
2604// DescribeCacheSecurityGroupsWithContext is the same as DescribeCacheSecurityGroups with the addition of
2605// the ability to pass a context and additional request options.
2606//
2607// See DescribeCacheSecurityGroups for details on how to use this API operation.
2608//
2609// The context must be non-nil and will be used for request cancellation. If
2610// the context is nil a panic will occur. In the future the SDK may create
2611// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2612// for more information on using Contexts.
2613func (c *ElastiCache) DescribeCacheSecurityGroupsWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, opts ...request.Option) (*DescribeCacheSecurityGroupsOutput, error) {
2614	req, out := c.DescribeCacheSecurityGroupsRequest(input)
2615	req.SetContext(ctx)
2616	req.ApplyOptions(opts...)
2617	return out, req.Send()
2618}
2619
2620// DescribeCacheSecurityGroupsPages iterates over the pages of a DescribeCacheSecurityGroups operation,
2621// calling the "fn" function with the response data for each page. To stop
2622// iterating, return false from the fn function.
2623//
2624// See DescribeCacheSecurityGroups method for more information on how to use this operation.
2625//
2626// Note: This operation can generate multiple requests to a service.
2627//
2628//    // Example iterating over at most 3 pages of a DescribeCacheSecurityGroups operation.
2629//    pageNum := 0
2630//    err := client.DescribeCacheSecurityGroupsPages(params,
2631//        func(page *elasticache.DescribeCacheSecurityGroupsOutput, lastPage bool) bool {
2632//            pageNum++
2633//            fmt.Println(page)
2634//            return pageNum <= 3
2635//        })
2636//
2637func (c *ElastiCache) DescribeCacheSecurityGroupsPages(input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool) error {
2638	return c.DescribeCacheSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2639}
2640
2641// DescribeCacheSecurityGroupsPagesWithContext same as DescribeCacheSecurityGroupsPages except
2642// it takes a Context and allows setting request options on the pages.
2643//
2644// The context must be non-nil and will be used for request cancellation. If
2645// the context is nil a panic will occur. In the future the SDK may create
2646// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2647// for more information on using Contexts.
2648func (c *ElastiCache) DescribeCacheSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
2649	p := request.Pagination{
2650		NewRequest: func() (*request.Request, error) {
2651			var inCpy *DescribeCacheSecurityGroupsInput
2652			if input != nil {
2653				tmp := *input
2654				inCpy = &tmp
2655			}
2656			req, _ := c.DescribeCacheSecurityGroupsRequest(inCpy)
2657			req.SetContext(ctx)
2658			req.ApplyOptions(opts...)
2659			return req, nil
2660		},
2661	}
2662
2663	cont := true
2664	for p.Next() && cont {
2665		cont = fn(p.Page().(*DescribeCacheSecurityGroupsOutput), !p.HasNextPage())
2666	}
2667	return p.Err()
2668}
2669
2670const opDescribeCacheSubnetGroups = "DescribeCacheSubnetGroups"
2671
2672// DescribeCacheSubnetGroupsRequest generates a "aws/request.Request" representing the
2673// client's request for the DescribeCacheSubnetGroups operation. The "output" return
2674// value will be populated with the request's response once the request completes
2675// successfully.
2676//
2677// Use "Send" method on the returned Request to send the API call to the service.
2678// the "output" return value is not valid until after Send returns without error.
2679//
2680// See DescribeCacheSubnetGroups for more information on using the DescribeCacheSubnetGroups
2681// API call, and error handling.
2682//
2683// This method is useful when you want to inject custom logic or configuration
2684// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2685//
2686//
2687//    // Example sending a request using the DescribeCacheSubnetGroupsRequest method.
2688//    req, resp := client.DescribeCacheSubnetGroupsRequest(params)
2689//
2690//    err := req.Send()
2691//    if err == nil { // resp is now filled
2692//        fmt.Println(resp)
2693//    }
2694//
2695// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
2696func (c *ElastiCache) DescribeCacheSubnetGroupsRequest(input *DescribeCacheSubnetGroupsInput) (req *request.Request, output *DescribeCacheSubnetGroupsOutput) {
2697	op := &request.Operation{
2698		Name:       opDescribeCacheSubnetGroups,
2699		HTTPMethod: "POST",
2700		HTTPPath:   "/",
2701		Paginator: &request.Paginator{
2702			InputTokens:     []string{"Marker"},
2703			OutputTokens:    []string{"Marker"},
2704			LimitToken:      "MaxRecords",
2705			TruncationToken: "",
2706		},
2707	}
2708
2709	if input == nil {
2710		input = &DescribeCacheSubnetGroupsInput{}
2711	}
2712
2713	output = &DescribeCacheSubnetGroupsOutput{}
2714	req = c.newRequest(op, input, output)
2715	return
2716}
2717
2718// DescribeCacheSubnetGroups API operation for Amazon ElastiCache.
2719//
2720// Returns a list of cache subnet group descriptions. If a subnet group name
2721// is specified, the list contains only the description of that group. This
2722// is applicable only when you have ElastiCache in VPC setup. All ElastiCache
2723// clusters now launch in VPC by default.
2724//
2725// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2726// with awserr.Error's Code and Message methods to get detailed information about
2727// the error.
2728//
2729// See the AWS API reference guide for Amazon ElastiCache's
2730// API operation DescribeCacheSubnetGroups for usage and error information.
2731//
2732// Returned Error Codes:
2733//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
2734//   The requested cache subnet group name does not refer to an existing cache
2735//   subnet group.
2736//
2737// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
2738func (c *ElastiCache) DescribeCacheSubnetGroups(input *DescribeCacheSubnetGroupsInput) (*DescribeCacheSubnetGroupsOutput, error) {
2739	req, out := c.DescribeCacheSubnetGroupsRequest(input)
2740	return out, req.Send()
2741}
2742
2743// DescribeCacheSubnetGroupsWithContext is the same as DescribeCacheSubnetGroups with the addition of
2744// the ability to pass a context and additional request options.
2745//
2746// See DescribeCacheSubnetGroups for details on how to use this API operation.
2747//
2748// The context must be non-nil and will be used for request cancellation. If
2749// the context is nil a panic will occur. In the future the SDK may create
2750// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2751// for more information on using Contexts.
2752func (c *ElastiCache) DescribeCacheSubnetGroupsWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, opts ...request.Option) (*DescribeCacheSubnetGroupsOutput, error) {
2753	req, out := c.DescribeCacheSubnetGroupsRequest(input)
2754	req.SetContext(ctx)
2755	req.ApplyOptions(opts...)
2756	return out, req.Send()
2757}
2758
2759// DescribeCacheSubnetGroupsPages iterates over the pages of a DescribeCacheSubnetGroups operation,
2760// calling the "fn" function with the response data for each page. To stop
2761// iterating, return false from the fn function.
2762//
2763// See DescribeCacheSubnetGroups method for more information on how to use this operation.
2764//
2765// Note: This operation can generate multiple requests to a service.
2766//
2767//    // Example iterating over at most 3 pages of a DescribeCacheSubnetGroups operation.
2768//    pageNum := 0
2769//    err := client.DescribeCacheSubnetGroupsPages(params,
2770//        func(page *elasticache.DescribeCacheSubnetGroupsOutput, lastPage bool) bool {
2771//            pageNum++
2772//            fmt.Println(page)
2773//            return pageNum <= 3
2774//        })
2775//
2776func (c *ElastiCache) DescribeCacheSubnetGroupsPages(input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool) error {
2777	return c.DescribeCacheSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2778}
2779
2780// DescribeCacheSubnetGroupsPagesWithContext same as DescribeCacheSubnetGroupsPages except
2781// it takes a Context and allows setting request options on the pages.
2782//
2783// The context must be non-nil and will be used for request cancellation. If
2784// the context is nil a panic will occur. In the future the SDK may create
2785// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2786// for more information on using Contexts.
2787func (c *ElastiCache) DescribeCacheSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
2788	p := request.Pagination{
2789		NewRequest: func() (*request.Request, error) {
2790			var inCpy *DescribeCacheSubnetGroupsInput
2791			if input != nil {
2792				tmp := *input
2793				inCpy = &tmp
2794			}
2795			req, _ := c.DescribeCacheSubnetGroupsRequest(inCpy)
2796			req.SetContext(ctx)
2797			req.ApplyOptions(opts...)
2798			return req, nil
2799		},
2800	}
2801
2802	cont := true
2803	for p.Next() && cont {
2804		cont = fn(p.Page().(*DescribeCacheSubnetGroupsOutput), !p.HasNextPage())
2805	}
2806	return p.Err()
2807}
2808
2809const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"
2810
2811// DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
2812// client's request for the DescribeEngineDefaultParameters operation. The "output" return
2813// value will be populated with the request's response once the request completes
2814// successfully.
2815//
2816// Use "Send" method on the returned Request to send the API call to the service.
2817// the "output" return value is not valid until after Send returns without error.
2818//
2819// See DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
2820// API call, and error handling.
2821//
2822// This method is useful when you want to inject custom logic or configuration
2823// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2824//
2825//
2826//    // Example sending a request using the DescribeEngineDefaultParametersRequest method.
2827//    req, resp := client.DescribeEngineDefaultParametersRequest(params)
2828//
2829//    err := req.Send()
2830//    if err == nil { // resp is now filled
2831//        fmt.Println(resp)
2832//    }
2833//
2834// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
2835func (c *ElastiCache) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
2836	op := &request.Operation{
2837		Name:       opDescribeEngineDefaultParameters,
2838		HTTPMethod: "POST",
2839		HTTPPath:   "/",
2840		Paginator: &request.Paginator{
2841			InputTokens:     []string{"Marker"},
2842			OutputTokens:    []string{"EngineDefaults.Marker"},
2843			LimitToken:      "MaxRecords",
2844			TruncationToken: "",
2845		},
2846	}
2847
2848	if input == nil {
2849		input = &DescribeEngineDefaultParametersInput{}
2850	}
2851
2852	output = &DescribeEngineDefaultParametersOutput{}
2853	req = c.newRequest(op, input, output)
2854	return
2855}
2856
2857// DescribeEngineDefaultParameters API operation for Amazon ElastiCache.
2858//
2859// Returns the default engine and system parameter information for the specified
2860// cache engine.
2861//
2862// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2863// with awserr.Error's Code and Message methods to get detailed information about
2864// the error.
2865//
2866// See the AWS API reference guide for Amazon ElastiCache's
2867// API operation DescribeEngineDefaultParameters for usage and error information.
2868//
2869// Returned Error Codes:
2870//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2871//   The value for a parameter is invalid.
2872//
2873//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2874//   Two or more incompatible parameters were specified.
2875//
2876// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
2877func (c *ElastiCache) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
2878	req, out := c.DescribeEngineDefaultParametersRequest(input)
2879	return out, req.Send()
2880}
2881
2882// DescribeEngineDefaultParametersWithContext is the same as DescribeEngineDefaultParameters with the addition of
2883// the ability to pass a context and additional request options.
2884//
2885// See DescribeEngineDefaultParameters for details on how to use this API operation.
2886//
2887// The context must be non-nil and will be used for request cancellation. If
2888// the context is nil a panic will occur. In the future the SDK may create
2889// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2890// for more information on using Contexts.
2891func (c *ElastiCache) DescribeEngineDefaultParametersWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, opts ...request.Option) (*DescribeEngineDefaultParametersOutput, error) {
2892	req, out := c.DescribeEngineDefaultParametersRequest(input)
2893	req.SetContext(ctx)
2894	req.ApplyOptions(opts...)
2895	return out, req.Send()
2896}
2897
2898// DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
2899// calling the "fn" function with the response data for each page. To stop
2900// iterating, return false from the fn function.
2901//
2902// See DescribeEngineDefaultParameters method for more information on how to use this operation.
2903//
2904// Note: This operation can generate multiple requests to a service.
2905//
2906//    // Example iterating over at most 3 pages of a DescribeEngineDefaultParameters operation.
2907//    pageNum := 0
2908//    err := client.DescribeEngineDefaultParametersPages(params,
2909//        func(page *elasticache.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
2910//            pageNum++
2911//            fmt.Println(page)
2912//            return pageNum <= 3
2913//        })
2914//
2915func (c *ElastiCache) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
2916	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
2917}
2918
2919// DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages except
2920// it takes a Context and allows setting request options on the pages.
2921//
2922// The context must be non-nil and will be used for request cancellation. If
2923// the context is nil a panic will occur. In the future the SDK may create
2924// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2925// for more information on using Contexts.
2926func (c *ElastiCache) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
2927	p := request.Pagination{
2928		NewRequest: func() (*request.Request, error) {
2929			var inCpy *DescribeEngineDefaultParametersInput
2930			if input != nil {
2931				tmp := *input
2932				inCpy = &tmp
2933			}
2934			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
2935			req.SetContext(ctx)
2936			req.ApplyOptions(opts...)
2937			return req, nil
2938		},
2939	}
2940
2941	cont := true
2942	for p.Next() && cont {
2943		cont = fn(p.Page().(*DescribeEngineDefaultParametersOutput), !p.HasNextPage())
2944	}
2945	return p.Err()
2946}
2947
2948const opDescribeEvents = "DescribeEvents"
2949
2950// DescribeEventsRequest generates a "aws/request.Request" representing the
2951// client's request for the DescribeEvents operation. The "output" return
2952// value will be populated with the request's response once the request completes
2953// successfully.
2954//
2955// Use "Send" method on the returned Request to send the API call to the service.
2956// the "output" return value is not valid until after Send returns without error.
2957//
2958// See DescribeEvents for more information on using the DescribeEvents
2959// API call, and error handling.
2960//
2961// This method is useful when you want to inject custom logic or configuration
2962// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2963//
2964//
2965//    // Example sending a request using the DescribeEventsRequest method.
2966//    req, resp := client.DescribeEventsRequest(params)
2967//
2968//    err := req.Send()
2969//    if err == nil { // resp is now filled
2970//        fmt.Println(resp)
2971//    }
2972//
2973// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
2974func (c *ElastiCache) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
2975	op := &request.Operation{
2976		Name:       opDescribeEvents,
2977		HTTPMethod: "POST",
2978		HTTPPath:   "/",
2979		Paginator: &request.Paginator{
2980			InputTokens:     []string{"Marker"},
2981			OutputTokens:    []string{"Marker"},
2982			LimitToken:      "MaxRecords",
2983			TruncationToken: "",
2984		},
2985	}
2986
2987	if input == nil {
2988		input = &DescribeEventsInput{}
2989	}
2990
2991	output = &DescribeEventsOutput{}
2992	req = c.newRequest(op, input, output)
2993	return
2994}
2995
2996// DescribeEvents API operation for Amazon ElastiCache.
2997//
2998// Returns events related to clusters, cache security groups, and cache parameter
2999// groups. You can obtain events specific to a particular cluster, cache security
3000// group, or cache parameter group by providing the name as a parameter.
3001//
3002// By default, only the events occurring within the last hour are returned;
3003// however, you can retrieve up to 14 days' worth of events if necessary.
3004//
3005// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3006// with awserr.Error's Code and Message methods to get detailed information about
3007// the error.
3008//
3009// See the AWS API reference guide for Amazon ElastiCache's
3010// API operation DescribeEvents for usage and error information.
3011//
3012// Returned Error Codes:
3013//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3014//   The value for a parameter is invalid.
3015//
3016//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3017//   Two or more incompatible parameters were specified.
3018//
3019// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3020func (c *ElastiCache) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
3021	req, out := c.DescribeEventsRequest(input)
3022	return out, req.Send()
3023}
3024
3025// DescribeEventsWithContext is the same as DescribeEvents with the addition of
3026// the ability to pass a context and additional request options.
3027//
3028// See DescribeEvents for details on how to use this API operation.
3029//
3030// The context must be non-nil and will be used for request cancellation. If
3031// the context is nil a panic will occur. In the future the SDK may create
3032// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3033// for more information on using Contexts.
3034func (c *ElastiCache) DescribeEventsWithContext(ctx aws.Context, input *DescribeEventsInput, opts ...request.Option) (*DescribeEventsOutput, error) {
3035	req, out := c.DescribeEventsRequest(input)
3036	req.SetContext(ctx)
3037	req.ApplyOptions(opts...)
3038	return out, req.Send()
3039}
3040
3041// DescribeEventsPages iterates over the pages of a DescribeEvents operation,
3042// calling the "fn" function with the response data for each page. To stop
3043// iterating, return false from the fn function.
3044//
3045// See DescribeEvents method for more information on how to use this operation.
3046//
3047// Note: This operation can generate multiple requests to a service.
3048//
3049//    // Example iterating over at most 3 pages of a DescribeEvents operation.
3050//    pageNum := 0
3051//    err := client.DescribeEventsPages(params,
3052//        func(page *elasticache.DescribeEventsOutput, lastPage bool) bool {
3053//            pageNum++
3054//            fmt.Println(page)
3055//            return pageNum <= 3
3056//        })
3057//
3058func (c *ElastiCache) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
3059	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
3060}
3061
3062// DescribeEventsPagesWithContext same as DescribeEventsPages except
3063// it takes a Context and allows setting request options on the pages.
3064//
3065// The context must be non-nil and will be used for request cancellation. If
3066// the context is nil a panic will occur. In the future the SDK may create
3067// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3068// for more information on using Contexts.
3069func (c *ElastiCache) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
3070	p := request.Pagination{
3071		NewRequest: func() (*request.Request, error) {
3072			var inCpy *DescribeEventsInput
3073			if input != nil {
3074				tmp := *input
3075				inCpy = &tmp
3076			}
3077			req, _ := c.DescribeEventsRequest(inCpy)
3078			req.SetContext(ctx)
3079			req.ApplyOptions(opts...)
3080			return req, nil
3081		},
3082	}
3083
3084	cont := true
3085	for p.Next() && cont {
3086		cont = fn(p.Page().(*DescribeEventsOutput), !p.HasNextPage())
3087	}
3088	return p.Err()
3089}
3090
3091const opDescribeReplicationGroups = "DescribeReplicationGroups"
3092
3093// DescribeReplicationGroupsRequest generates a "aws/request.Request" representing the
3094// client's request for the DescribeReplicationGroups operation. The "output" return
3095// value will be populated with the request's response once the request completes
3096// successfully.
3097//
3098// Use "Send" method on the returned Request to send the API call to the service.
3099// the "output" return value is not valid until after Send returns without error.
3100//
3101// See DescribeReplicationGroups for more information on using the DescribeReplicationGroups
3102// API call, and error handling.
3103//
3104// This method is useful when you want to inject custom logic or configuration
3105// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3106//
3107//
3108//    // Example sending a request using the DescribeReplicationGroupsRequest method.
3109//    req, resp := client.DescribeReplicationGroupsRequest(params)
3110//
3111//    err := req.Send()
3112//    if err == nil { // resp is now filled
3113//        fmt.Println(resp)
3114//    }
3115//
3116// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3117func (c *ElastiCache) DescribeReplicationGroupsRequest(input *DescribeReplicationGroupsInput) (req *request.Request, output *DescribeReplicationGroupsOutput) {
3118	op := &request.Operation{
3119		Name:       opDescribeReplicationGroups,
3120		HTTPMethod: "POST",
3121		HTTPPath:   "/",
3122		Paginator: &request.Paginator{
3123			InputTokens:     []string{"Marker"},
3124			OutputTokens:    []string{"Marker"},
3125			LimitToken:      "MaxRecords",
3126			TruncationToken: "",
3127		},
3128	}
3129
3130	if input == nil {
3131		input = &DescribeReplicationGroupsInput{}
3132	}
3133
3134	output = &DescribeReplicationGroupsOutput{}
3135	req = c.newRequest(op, input, output)
3136	return
3137}
3138
3139// DescribeReplicationGroups API operation for Amazon ElastiCache.
3140//
3141// Returns information about a particular replication group. If no identifier
3142// is specified, DescribeReplicationGroups returns information about all replication
3143// groups.
3144//
3145// This operation is valid for Redis only.
3146//
3147// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3148// with awserr.Error's Code and Message methods to get detailed information about
3149// the error.
3150//
3151// See the AWS API reference guide for Amazon ElastiCache's
3152// API operation DescribeReplicationGroups for usage and error information.
3153//
3154// Returned Error Codes:
3155//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
3156//   The specified replication group does not exist.
3157//
3158//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3159//   The value for a parameter is invalid.
3160//
3161//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3162//   Two or more incompatible parameters were specified.
3163//
3164// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3165func (c *ElastiCache) DescribeReplicationGroups(input *DescribeReplicationGroupsInput) (*DescribeReplicationGroupsOutput, error) {
3166	req, out := c.DescribeReplicationGroupsRequest(input)
3167	return out, req.Send()
3168}
3169
3170// DescribeReplicationGroupsWithContext is the same as DescribeReplicationGroups with the addition of
3171// the ability to pass a context and additional request options.
3172//
3173// See DescribeReplicationGroups for details on how to use this API operation.
3174//
3175// The context must be non-nil and will be used for request cancellation. If
3176// the context is nil a panic will occur. In the future the SDK may create
3177// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3178// for more information on using Contexts.
3179func (c *ElastiCache) DescribeReplicationGroupsWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, opts ...request.Option) (*DescribeReplicationGroupsOutput, error) {
3180	req, out := c.DescribeReplicationGroupsRequest(input)
3181	req.SetContext(ctx)
3182	req.ApplyOptions(opts...)
3183	return out, req.Send()
3184}
3185
3186// DescribeReplicationGroupsPages iterates over the pages of a DescribeReplicationGroups operation,
3187// calling the "fn" function with the response data for each page. To stop
3188// iterating, return false from the fn function.
3189//
3190// See DescribeReplicationGroups method for more information on how to use this operation.
3191//
3192// Note: This operation can generate multiple requests to a service.
3193//
3194//    // Example iterating over at most 3 pages of a DescribeReplicationGroups operation.
3195//    pageNum := 0
3196//    err := client.DescribeReplicationGroupsPages(params,
3197//        func(page *elasticache.DescribeReplicationGroupsOutput, lastPage bool) bool {
3198//            pageNum++
3199//            fmt.Println(page)
3200//            return pageNum <= 3
3201//        })
3202//
3203func (c *ElastiCache) DescribeReplicationGroupsPages(input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool) error {
3204	return c.DescribeReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3205}
3206
3207// DescribeReplicationGroupsPagesWithContext same as DescribeReplicationGroupsPages except
3208// it takes a Context and allows setting request options on the pages.
3209//
3210// The context must be non-nil and will be used for request cancellation. If
3211// the context is nil a panic will occur. In the future the SDK may create
3212// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3213// for more information on using Contexts.
3214func (c *ElastiCache) DescribeReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
3215	p := request.Pagination{
3216		NewRequest: func() (*request.Request, error) {
3217			var inCpy *DescribeReplicationGroupsInput
3218			if input != nil {
3219				tmp := *input
3220				inCpy = &tmp
3221			}
3222			req, _ := c.DescribeReplicationGroupsRequest(inCpy)
3223			req.SetContext(ctx)
3224			req.ApplyOptions(opts...)
3225			return req, nil
3226		},
3227	}
3228
3229	cont := true
3230	for p.Next() && cont {
3231		cont = fn(p.Page().(*DescribeReplicationGroupsOutput), !p.HasNextPage())
3232	}
3233	return p.Err()
3234}
3235
3236const opDescribeReservedCacheNodes = "DescribeReservedCacheNodes"
3237
3238// DescribeReservedCacheNodesRequest generates a "aws/request.Request" representing the
3239// client's request for the DescribeReservedCacheNodes operation. The "output" return
3240// value will be populated with the request's response once the request completes
3241// successfully.
3242//
3243// Use "Send" method on the returned Request to send the API call to the service.
3244// the "output" return value is not valid until after Send returns without error.
3245//
3246// See DescribeReservedCacheNodes for more information on using the DescribeReservedCacheNodes
3247// API call, and error handling.
3248//
3249// This method is useful when you want to inject custom logic or configuration
3250// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3251//
3252//
3253//    // Example sending a request using the DescribeReservedCacheNodesRequest method.
3254//    req, resp := client.DescribeReservedCacheNodesRequest(params)
3255//
3256//    err := req.Send()
3257//    if err == nil { // resp is now filled
3258//        fmt.Println(resp)
3259//    }
3260//
3261// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3262func (c *ElastiCache) DescribeReservedCacheNodesRequest(input *DescribeReservedCacheNodesInput) (req *request.Request, output *DescribeReservedCacheNodesOutput) {
3263	op := &request.Operation{
3264		Name:       opDescribeReservedCacheNodes,
3265		HTTPMethod: "POST",
3266		HTTPPath:   "/",
3267		Paginator: &request.Paginator{
3268			InputTokens:     []string{"Marker"},
3269			OutputTokens:    []string{"Marker"},
3270			LimitToken:      "MaxRecords",
3271			TruncationToken: "",
3272		},
3273	}
3274
3275	if input == nil {
3276		input = &DescribeReservedCacheNodesInput{}
3277	}
3278
3279	output = &DescribeReservedCacheNodesOutput{}
3280	req = c.newRequest(op, input, output)
3281	return
3282}
3283
3284// DescribeReservedCacheNodes API operation for Amazon ElastiCache.
3285//
3286// Returns information about reserved cache nodes for this account, or about
3287// a specified reserved cache node.
3288//
3289// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3290// with awserr.Error's Code and Message methods to get detailed information about
3291// the error.
3292//
3293// See the AWS API reference guide for Amazon ElastiCache's
3294// API operation DescribeReservedCacheNodes for usage and error information.
3295//
3296// Returned Error Codes:
3297//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
3298//   The requested reserved cache node was not found.
3299//
3300//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3301//   The value for a parameter is invalid.
3302//
3303//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3304//   Two or more incompatible parameters were specified.
3305//
3306// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3307func (c *ElastiCache) DescribeReservedCacheNodes(input *DescribeReservedCacheNodesInput) (*DescribeReservedCacheNodesOutput, error) {
3308	req, out := c.DescribeReservedCacheNodesRequest(input)
3309	return out, req.Send()
3310}
3311
3312// DescribeReservedCacheNodesWithContext is the same as DescribeReservedCacheNodes with the addition of
3313// the ability to pass a context and additional request options.
3314//
3315// See DescribeReservedCacheNodes for details on how to use this API operation.
3316//
3317// The context must be non-nil and will be used for request cancellation. If
3318// the context is nil a panic will occur. In the future the SDK may create
3319// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3320// for more information on using Contexts.
3321func (c *ElastiCache) DescribeReservedCacheNodesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, opts ...request.Option) (*DescribeReservedCacheNodesOutput, error) {
3322	req, out := c.DescribeReservedCacheNodesRequest(input)
3323	req.SetContext(ctx)
3324	req.ApplyOptions(opts...)
3325	return out, req.Send()
3326}
3327
3328// DescribeReservedCacheNodesPages iterates over the pages of a DescribeReservedCacheNodes operation,
3329// calling the "fn" function with the response data for each page. To stop
3330// iterating, return false from the fn function.
3331//
3332// See DescribeReservedCacheNodes method for more information on how to use this operation.
3333//
3334// Note: This operation can generate multiple requests to a service.
3335//
3336//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodes operation.
3337//    pageNum := 0
3338//    err := client.DescribeReservedCacheNodesPages(params,
3339//        func(page *elasticache.DescribeReservedCacheNodesOutput, lastPage bool) bool {
3340//            pageNum++
3341//            fmt.Println(page)
3342//            return pageNum <= 3
3343//        })
3344//
3345func (c *ElastiCache) DescribeReservedCacheNodesPages(input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool) error {
3346	return c.DescribeReservedCacheNodesPagesWithContext(aws.BackgroundContext(), input, fn)
3347}
3348
3349// DescribeReservedCacheNodesPagesWithContext same as DescribeReservedCacheNodesPages except
3350// it takes a Context and allows setting request options on the pages.
3351//
3352// The context must be non-nil and will be used for request cancellation. If
3353// the context is nil a panic will occur. In the future the SDK may create
3354// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3355// for more information on using Contexts.
3356func (c *ElastiCache) DescribeReservedCacheNodesPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool, opts ...request.Option) error {
3357	p := request.Pagination{
3358		NewRequest: func() (*request.Request, error) {
3359			var inCpy *DescribeReservedCacheNodesInput
3360			if input != nil {
3361				tmp := *input
3362				inCpy = &tmp
3363			}
3364			req, _ := c.DescribeReservedCacheNodesRequest(inCpy)
3365			req.SetContext(ctx)
3366			req.ApplyOptions(opts...)
3367			return req, nil
3368		},
3369	}
3370
3371	cont := true
3372	for p.Next() && cont {
3373		cont = fn(p.Page().(*DescribeReservedCacheNodesOutput), !p.HasNextPage())
3374	}
3375	return p.Err()
3376}
3377
3378const opDescribeReservedCacheNodesOfferings = "DescribeReservedCacheNodesOfferings"
3379
3380// DescribeReservedCacheNodesOfferingsRequest generates a "aws/request.Request" representing the
3381// client's request for the DescribeReservedCacheNodesOfferings operation. The "output" return
3382// value will be populated with the request's response once the request completes
3383// successfully.
3384//
3385// Use "Send" method on the returned Request to send the API call to the service.
3386// the "output" return value is not valid until after Send returns without error.
3387//
3388// See DescribeReservedCacheNodesOfferings for more information on using the DescribeReservedCacheNodesOfferings
3389// API call, and error handling.
3390//
3391// This method is useful when you want to inject custom logic or configuration
3392// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3393//
3394//
3395//    // Example sending a request using the DescribeReservedCacheNodesOfferingsRequest method.
3396//    req, resp := client.DescribeReservedCacheNodesOfferingsRequest(params)
3397//
3398//    err := req.Send()
3399//    if err == nil { // resp is now filled
3400//        fmt.Println(resp)
3401//    }
3402//
3403// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3404func (c *ElastiCache) DescribeReservedCacheNodesOfferingsRequest(input *DescribeReservedCacheNodesOfferingsInput) (req *request.Request, output *DescribeReservedCacheNodesOfferingsOutput) {
3405	op := &request.Operation{
3406		Name:       opDescribeReservedCacheNodesOfferings,
3407		HTTPMethod: "POST",
3408		HTTPPath:   "/",
3409		Paginator: &request.Paginator{
3410			InputTokens:     []string{"Marker"},
3411			OutputTokens:    []string{"Marker"},
3412			LimitToken:      "MaxRecords",
3413			TruncationToken: "",
3414		},
3415	}
3416
3417	if input == nil {
3418		input = &DescribeReservedCacheNodesOfferingsInput{}
3419	}
3420
3421	output = &DescribeReservedCacheNodesOfferingsOutput{}
3422	req = c.newRequest(op, input, output)
3423	return
3424}
3425
3426// DescribeReservedCacheNodesOfferings API operation for Amazon ElastiCache.
3427//
3428// Lists available reserved cache node offerings.
3429//
3430// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3431// with awserr.Error's Code and Message methods to get detailed information about
3432// the error.
3433//
3434// See the AWS API reference guide for Amazon ElastiCache's
3435// API operation DescribeReservedCacheNodesOfferings for usage and error information.
3436//
3437// Returned Error Codes:
3438//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
3439//   The requested cache node offering does not exist.
3440//
3441//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3442//   The value for a parameter is invalid.
3443//
3444//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3445//   Two or more incompatible parameters were specified.
3446//
3447// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3448func (c *ElastiCache) DescribeReservedCacheNodesOfferings(input *DescribeReservedCacheNodesOfferingsInput) (*DescribeReservedCacheNodesOfferingsOutput, error) {
3449	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
3450	return out, req.Send()
3451}
3452
3453// DescribeReservedCacheNodesOfferingsWithContext is the same as DescribeReservedCacheNodesOfferings with the addition of
3454// the ability to pass a context and additional request options.
3455//
3456// See DescribeReservedCacheNodesOfferings for details on how to use this API operation.
3457//
3458// The context must be non-nil and will be used for request cancellation. If
3459// the context is nil a panic will occur. In the future the SDK may create
3460// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3461// for more information on using Contexts.
3462func (c *ElastiCache) DescribeReservedCacheNodesOfferingsWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, opts ...request.Option) (*DescribeReservedCacheNodesOfferingsOutput, error) {
3463	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
3464	req.SetContext(ctx)
3465	req.ApplyOptions(opts...)
3466	return out, req.Send()
3467}
3468
3469// DescribeReservedCacheNodesOfferingsPages iterates over the pages of a DescribeReservedCacheNodesOfferings operation,
3470// calling the "fn" function with the response data for each page. To stop
3471// iterating, return false from the fn function.
3472//
3473// See DescribeReservedCacheNodesOfferings method for more information on how to use this operation.
3474//
3475// Note: This operation can generate multiple requests to a service.
3476//
3477//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodesOfferings operation.
3478//    pageNum := 0
3479//    err := client.DescribeReservedCacheNodesOfferingsPages(params,
3480//        func(page *elasticache.DescribeReservedCacheNodesOfferingsOutput, lastPage bool) bool {
3481//            pageNum++
3482//            fmt.Println(page)
3483//            return pageNum <= 3
3484//        })
3485//
3486func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPages(input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool) error {
3487	return c.DescribeReservedCacheNodesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
3488}
3489
3490// DescribeReservedCacheNodesOfferingsPagesWithContext same as DescribeReservedCacheNodesOfferingsPages except
3491// it takes a Context and allows setting request options on the pages.
3492//
3493// The context must be non-nil and will be used for request cancellation. If
3494// the context is nil a panic will occur. In the future the SDK may create
3495// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3496// for more information on using Contexts.
3497func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool, opts ...request.Option) error {
3498	p := request.Pagination{
3499		NewRequest: func() (*request.Request, error) {
3500			var inCpy *DescribeReservedCacheNodesOfferingsInput
3501			if input != nil {
3502				tmp := *input
3503				inCpy = &tmp
3504			}
3505			req, _ := c.DescribeReservedCacheNodesOfferingsRequest(inCpy)
3506			req.SetContext(ctx)
3507			req.ApplyOptions(opts...)
3508			return req, nil
3509		},
3510	}
3511
3512	cont := true
3513	for p.Next() && cont {
3514		cont = fn(p.Page().(*DescribeReservedCacheNodesOfferingsOutput), !p.HasNextPage())
3515	}
3516	return p.Err()
3517}
3518
3519const opDescribeServiceUpdates = "DescribeServiceUpdates"
3520
3521// DescribeServiceUpdatesRequest generates a "aws/request.Request" representing the
3522// client's request for the DescribeServiceUpdates operation. The "output" return
3523// value will be populated with the request's response once the request completes
3524// successfully.
3525//
3526// Use "Send" method on the returned Request to send the API call to the service.
3527// the "output" return value is not valid until after Send returns without error.
3528//
3529// See DescribeServiceUpdates for more information on using the DescribeServiceUpdates
3530// API call, and error handling.
3531//
3532// This method is useful when you want to inject custom logic or configuration
3533// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3534//
3535//
3536//    // Example sending a request using the DescribeServiceUpdatesRequest method.
3537//    req, resp := client.DescribeServiceUpdatesRequest(params)
3538//
3539//    err := req.Send()
3540//    if err == nil { // resp is now filled
3541//        fmt.Println(resp)
3542//    }
3543//
3544// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
3545func (c *ElastiCache) DescribeServiceUpdatesRequest(input *DescribeServiceUpdatesInput) (req *request.Request, output *DescribeServiceUpdatesOutput) {
3546	op := &request.Operation{
3547		Name:       opDescribeServiceUpdates,
3548		HTTPMethod: "POST",
3549		HTTPPath:   "/",
3550		Paginator: &request.Paginator{
3551			InputTokens:     []string{"Marker"},
3552			OutputTokens:    []string{"Marker"},
3553			LimitToken:      "MaxRecords",
3554			TruncationToken: "",
3555		},
3556	}
3557
3558	if input == nil {
3559		input = &DescribeServiceUpdatesInput{}
3560	}
3561
3562	output = &DescribeServiceUpdatesOutput{}
3563	req = c.newRequest(op, input, output)
3564	return
3565}
3566
3567// DescribeServiceUpdates API operation for Amazon ElastiCache.
3568//
3569// Returns details of the service updates
3570//
3571// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3572// with awserr.Error's Code and Message methods to get detailed information about
3573// the error.
3574//
3575// See the AWS API reference guide for Amazon ElastiCache's
3576// API operation DescribeServiceUpdates for usage and error information.
3577//
3578// Returned Error Codes:
3579//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
3580//   The service update doesn't exist
3581//
3582//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3583//   The value for a parameter is invalid.
3584//
3585//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3586//   Two or more incompatible parameters were specified.
3587//
3588// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
3589func (c *ElastiCache) DescribeServiceUpdates(input *DescribeServiceUpdatesInput) (*DescribeServiceUpdatesOutput, error) {
3590	req, out := c.DescribeServiceUpdatesRequest(input)
3591	return out, req.Send()
3592}
3593
3594// DescribeServiceUpdatesWithContext is the same as DescribeServiceUpdates with the addition of
3595// the ability to pass a context and additional request options.
3596//
3597// See DescribeServiceUpdates for details on how to use this API operation.
3598//
3599// The context must be non-nil and will be used for request cancellation. If
3600// the context is nil a panic will occur. In the future the SDK may create
3601// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3602// for more information on using Contexts.
3603func (c *ElastiCache) DescribeServiceUpdatesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, opts ...request.Option) (*DescribeServiceUpdatesOutput, error) {
3604	req, out := c.DescribeServiceUpdatesRequest(input)
3605	req.SetContext(ctx)
3606	req.ApplyOptions(opts...)
3607	return out, req.Send()
3608}
3609
3610// DescribeServiceUpdatesPages iterates over the pages of a DescribeServiceUpdates operation,
3611// calling the "fn" function with the response data for each page. To stop
3612// iterating, return false from the fn function.
3613//
3614// See DescribeServiceUpdates method for more information on how to use this operation.
3615//
3616// Note: This operation can generate multiple requests to a service.
3617//
3618//    // Example iterating over at most 3 pages of a DescribeServiceUpdates operation.
3619//    pageNum := 0
3620//    err := client.DescribeServiceUpdatesPages(params,
3621//        func(page *elasticache.DescribeServiceUpdatesOutput, lastPage bool) bool {
3622//            pageNum++
3623//            fmt.Println(page)
3624//            return pageNum <= 3
3625//        })
3626//
3627func (c *ElastiCache) DescribeServiceUpdatesPages(input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool) error {
3628	return c.DescribeServiceUpdatesPagesWithContext(aws.BackgroundContext(), input, fn)
3629}
3630
3631// DescribeServiceUpdatesPagesWithContext same as DescribeServiceUpdatesPages except
3632// it takes a Context and allows setting request options on the pages.
3633//
3634// The context must be non-nil and will be used for request cancellation. If
3635// the context is nil a panic will occur. In the future the SDK may create
3636// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3637// for more information on using Contexts.
3638func (c *ElastiCache) DescribeServiceUpdatesPagesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool, opts ...request.Option) error {
3639	p := request.Pagination{
3640		NewRequest: func() (*request.Request, error) {
3641			var inCpy *DescribeServiceUpdatesInput
3642			if input != nil {
3643				tmp := *input
3644				inCpy = &tmp
3645			}
3646			req, _ := c.DescribeServiceUpdatesRequest(inCpy)
3647			req.SetContext(ctx)
3648			req.ApplyOptions(opts...)
3649			return req, nil
3650		},
3651	}
3652
3653	cont := true
3654	for p.Next() && cont {
3655		cont = fn(p.Page().(*DescribeServiceUpdatesOutput), !p.HasNextPage())
3656	}
3657	return p.Err()
3658}
3659
3660const opDescribeSnapshots = "DescribeSnapshots"
3661
3662// DescribeSnapshotsRequest generates a "aws/request.Request" representing the
3663// client's request for the DescribeSnapshots operation. The "output" return
3664// value will be populated with the request's response once the request completes
3665// successfully.
3666//
3667// Use "Send" method on the returned Request to send the API call to the service.
3668// the "output" return value is not valid until after Send returns without error.
3669//
3670// See DescribeSnapshots for more information on using the DescribeSnapshots
3671// API call, and error handling.
3672//
3673// This method is useful when you want to inject custom logic or configuration
3674// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3675//
3676//
3677//    // Example sending a request using the DescribeSnapshotsRequest method.
3678//    req, resp := client.DescribeSnapshotsRequest(params)
3679//
3680//    err := req.Send()
3681//    if err == nil { // resp is now filled
3682//        fmt.Println(resp)
3683//    }
3684//
3685// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
3686func (c *ElastiCache) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
3687	op := &request.Operation{
3688		Name:       opDescribeSnapshots,
3689		HTTPMethod: "POST",
3690		HTTPPath:   "/",
3691		Paginator: &request.Paginator{
3692			InputTokens:     []string{"Marker"},
3693			OutputTokens:    []string{"Marker"},
3694			LimitToken:      "MaxRecords",
3695			TruncationToken: "",
3696		},
3697	}
3698
3699	if input == nil {
3700		input = &DescribeSnapshotsInput{}
3701	}
3702
3703	output = &DescribeSnapshotsOutput{}
3704	req = c.newRequest(op, input, output)
3705	return
3706}
3707
3708// DescribeSnapshots API operation for Amazon ElastiCache.
3709//
3710// Returns information about cluster or replication group snapshots. By default,
3711// DescribeSnapshots lists all of your snapshots; it can optionally describe
3712// a single snapshot, or just the snapshots associated with a particular cache
3713// cluster.
3714//
3715// This operation is valid for Redis only.
3716//
3717// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3718// with awserr.Error's Code and Message methods to get detailed information about
3719// the error.
3720//
3721// See the AWS API reference guide for Amazon ElastiCache's
3722// API operation DescribeSnapshots for usage and error information.
3723//
3724// Returned Error Codes:
3725//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
3726//   The requested cluster ID does not refer to an existing cluster.
3727//
3728//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
3729//   The requested snapshot name does not refer to an existing snapshot.
3730//
3731//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3732//   The value for a parameter is invalid.
3733//
3734//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3735//   Two or more incompatible parameters were specified.
3736//
3737// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
3738func (c *ElastiCache) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
3739	req, out := c.DescribeSnapshotsRequest(input)
3740	return out, req.Send()
3741}
3742
3743// DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of
3744// the ability to pass a context and additional request options.
3745//
3746// See DescribeSnapshots for details on how to use this API operation.
3747//
3748// The context must be non-nil and will be used for request cancellation. If
3749// the context is nil a panic will occur. In the future the SDK may create
3750// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3751// for more information on using Contexts.
3752func (c *ElastiCache) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) {
3753	req, out := c.DescribeSnapshotsRequest(input)
3754	req.SetContext(ctx)
3755	req.ApplyOptions(opts...)
3756	return out, req.Send()
3757}
3758
3759// DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation,
3760// calling the "fn" function with the response data for each page. To stop
3761// iterating, return false from the fn function.
3762//
3763// See DescribeSnapshots method for more information on how to use this operation.
3764//
3765// Note: This operation can generate multiple requests to a service.
3766//
3767//    // Example iterating over at most 3 pages of a DescribeSnapshots operation.
3768//    pageNum := 0
3769//    err := client.DescribeSnapshotsPages(params,
3770//        func(page *elasticache.DescribeSnapshotsOutput, lastPage bool) bool {
3771//            pageNum++
3772//            fmt.Println(page)
3773//            return pageNum <= 3
3774//        })
3775//
3776func (c *ElastiCache) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error {
3777	return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
3778}
3779
3780// DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except
3781// it takes a Context and allows setting request options on the pages.
3782//
3783// The context must be non-nil and will be used for request cancellation. If
3784// the context is nil a panic will occur. In the future the SDK may create
3785// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3786// for more information on using Contexts.
3787func (c *ElastiCache) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error {
3788	p := request.Pagination{
3789		NewRequest: func() (*request.Request, error) {
3790			var inCpy *DescribeSnapshotsInput
3791			if input != nil {
3792				tmp := *input
3793				inCpy = &tmp
3794			}
3795			req, _ := c.DescribeSnapshotsRequest(inCpy)
3796			req.SetContext(ctx)
3797			req.ApplyOptions(opts...)
3798			return req, nil
3799		},
3800	}
3801
3802	cont := true
3803	for p.Next() && cont {
3804		cont = fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage())
3805	}
3806	return p.Err()
3807}
3808
3809const opDescribeUpdateActions = "DescribeUpdateActions"
3810
3811// DescribeUpdateActionsRequest generates a "aws/request.Request" representing the
3812// client's request for the DescribeUpdateActions operation. The "output" return
3813// value will be populated with the request's response once the request completes
3814// successfully.
3815//
3816// Use "Send" method on the returned Request to send the API call to the service.
3817// the "output" return value is not valid until after Send returns without error.
3818//
3819// See DescribeUpdateActions for more information on using the DescribeUpdateActions
3820// API call, and error handling.
3821//
3822// This method is useful when you want to inject custom logic or configuration
3823// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3824//
3825//
3826//    // Example sending a request using the DescribeUpdateActionsRequest method.
3827//    req, resp := client.DescribeUpdateActionsRequest(params)
3828//
3829//    err := req.Send()
3830//    if err == nil { // resp is now filled
3831//        fmt.Println(resp)
3832//    }
3833//
3834// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
3835func (c *ElastiCache) DescribeUpdateActionsRequest(input *DescribeUpdateActionsInput) (req *request.Request, output *DescribeUpdateActionsOutput) {
3836	op := &request.Operation{
3837		Name:       opDescribeUpdateActions,
3838		HTTPMethod: "POST",
3839		HTTPPath:   "/",
3840		Paginator: &request.Paginator{
3841			InputTokens:     []string{"Marker"},
3842			OutputTokens:    []string{"Marker"},
3843			LimitToken:      "MaxRecords",
3844			TruncationToken: "",
3845		},
3846	}
3847
3848	if input == nil {
3849		input = &DescribeUpdateActionsInput{}
3850	}
3851
3852	output = &DescribeUpdateActionsOutput{}
3853	req = c.newRequest(op, input, output)
3854	return
3855}
3856
3857// DescribeUpdateActions API operation for Amazon ElastiCache.
3858//
3859// Returns details of the update actions
3860//
3861// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3862// with awserr.Error's Code and Message methods to get detailed information about
3863// the error.
3864//
3865// See the AWS API reference guide for Amazon ElastiCache's
3866// API operation DescribeUpdateActions for usage and error information.
3867//
3868// Returned Error Codes:
3869//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3870//   The value for a parameter is invalid.
3871//
3872//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3873//   Two or more incompatible parameters were specified.
3874//
3875// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
3876func (c *ElastiCache) DescribeUpdateActions(input *DescribeUpdateActionsInput) (*DescribeUpdateActionsOutput, error) {
3877	req, out := c.DescribeUpdateActionsRequest(input)
3878	return out, req.Send()
3879}
3880
3881// DescribeUpdateActionsWithContext is the same as DescribeUpdateActions with the addition of
3882// the ability to pass a context and additional request options.
3883//
3884// See DescribeUpdateActions for details on how to use this API operation.
3885//
3886// The context must be non-nil and will be used for request cancellation. If
3887// the context is nil a panic will occur. In the future the SDK may create
3888// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3889// for more information on using Contexts.
3890func (c *ElastiCache) DescribeUpdateActionsWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, opts ...request.Option) (*DescribeUpdateActionsOutput, error) {
3891	req, out := c.DescribeUpdateActionsRequest(input)
3892	req.SetContext(ctx)
3893	req.ApplyOptions(opts...)
3894	return out, req.Send()
3895}
3896
3897// DescribeUpdateActionsPages iterates over the pages of a DescribeUpdateActions operation,
3898// calling the "fn" function with the response data for each page. To stop
3899// iterating, return false from the fn function.
3900//
3901// See DescribeUpdateActions method for more information on how to use this operation.
3902//
3903// Note: This operation can generate multiple requests to a service.
3904//
3905//    // Example iterating over at most 3 pages of a DescribeUpdateActions operation.
3906//    pageNum := 0
3907//    err := client.DescribeUpdateActionsPages(params,
3908//        func(page *elasticache.DescribeUpdateActionsOutput, lastPage bool) bool {
3909//            pageNum++
3910//            fmt.Println(page)
3911//            return pageNum <= 3
3912//        })
3913//
3914func (c *ElastiCache) DescribeUpdateActionsPages(input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool) error {
3915	return c.DescribeUpdateActionsPagesWithContext(aws.BackgroundContext(), input, fn)
3916}
3917
3918// DescribeUpdateActionsPagesWithContext same as DescribeUpdateActionsPages except
3919// it takes a Context and allows setting request options on the pages.
3920//
3921// The context must be non-nil and will be used for request cancellation. If
3922// the context is nil a panic will occur. In the future the SDK may create
3923// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3924// for more information on using Contexts.
3925func (c *ElastiCache) DescribeUpdateActionsPagesWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool, opts ...request.Option) error {
3926	p := request.Pagination{
3927		NewRequest: func() (*request.Request, error) {
3928			var inCpy *DescribeUpdateActionsInput
3929			if input != nil {
3930				tmp := *input
3931				inCpy = &tmp
3932			}
3933			req, _ := c.DescribeUpdateActionsRequest(inCpy)
3934			req.SetContext(ctx)
3935			req.ApplyOptions(opts...)
3936			return req, nil
3937		},
3938	}
3939
3940	cont := true
3941	for p.Next() && cont {
3942		cont = fn(p.Page().(*DescribeUpdateActionsOutput), !p.HasNextPage())
3943	}
3944	return p.Err()
3945}
3946
3947const opIncreaseReplicaCount = "IncreaseReplicaCount"
3948
3949// IncreaseReplicaCountRequest generates a "aws/request.Request" representing the
3950// client's request for the IncreaseReplicaCount operation. The "output" return
3951// value will be populated with the request's response once the request completes
3952// successfully.
3953//
3954// Use "Send" method on the returned Request to send the API call to the service.
3955// the "output" return value is not valid until after Send returns without error.
3956//
3957// See IncreaseReplicaCount for more information on using the IncreaseReplicaCount
3958// API call, and error handling.
3959//
3960// This method is useful when you want to inject custom logic or configuration
3961// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3962//
3963//
3964//    // Example sending a request using the IncreaseReplicaCountRequest method.
3965//    req, resp := client.IncreaseReplicaCountRequest(params)
3966//
3967//    err := req.Send()
3968//    if err == nil { // resp is now filled
3969//        fmt.Println(resp)
3970//    }
3971//
3972// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
3973func (c *ElastiCache) IncreaseReplicaCountRequest(input *IncreaseReplicaCountInput) (req *request.Request, output *IncreaseReplicaCountOutput) {
3974	op := &request.Operation{
3975		Name:       opIncreaseReplicaCount,
3976		HTTPMethod: "POST",
3977		HTTPPath:   "/",
3978	}
3979
3980	if input == nil {
3981		input = &IncreaseReplicaCountInput{}
3982	}
3983
3984	output = &IncreaseReplicaCountOutput{}
3985	req = c.newRequest(op, input, output)
3986	return
3987}
3988
3989// IncreaseReplicaCount API operation for Amazon ElastiCache.
3990//
3991// Dynamically increases the number of replics in a Redis (cluster mode disabled)
3992// replication group or the number of replica nodes in one or more node groups
3993// (shards) of a Redis (cluster mode enabled) replication group. This operation
3994// is performed with no cluster down time.
3995//
3996// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3997// with awserr.Error's Code and Message methods to get detailed information about
3998// the error.
3999//
4000// See the AWS API reference guide for Amazon ElastiCache's
4001// API operation IncreaseReplicaCount for usage and error information.
4002//
4003// Returned Error Codes:
4004//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4005//   The specified replication group does not exist.
4006//
4007//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4008//   The requested replication group is not in the available state.
4009//
4010//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4011//   The requested cluster is not in the available state.
4012//
4013//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4014//   The VPC network is in an invalid state.
4015//
4016//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4017//   The requested cache node type is not available in the specified Availability
4018//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4019//   in the ElastiCache User Guide.
4020//
4021//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
4022//   The request cannot be processed because it would exceed the allowed number
4023//   of clusters per customer.
4024//
4025//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
4026//   The request cannot be processed because it would exceed the maximum allowed
4027//   number of node groups (shards) in a single replication group. The default
4028//   maximum is 90
4029//
4030//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4031//   The request cannot be processed because it would exceed the allowed number
4032//   of cache nodes per customer.
4033//
4034//   * ErrCodeNoOperationFault "NoOperationFault"
4035//   The operation was not performed because no changes were required.
4036//
4037//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4038//   The value for a parameter is invalid.
4039//
4040//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4041//   Two or more incompatible parameters were specified.
4042//
4043// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4044func (c *ElastiCache) IncreaseReplicaCount(input *IncreaseReplicaCountInput) (*IncreaseReplicaCountOutput, error) {
4045	req, out := c.IncreaseReplicaCountRequest(input)
4046	return out, req.Send()
4047}
4048
4049// IncreaseReplicaCountWithContext is the same as IncreaseReplicaCount with the addition of
4050// the ability to pass a context and additional request options.
4051//
4052// See IncreaseReplicaCount for details on how to use this API operation.
4053//
4054// The context must be non-nil and will be used for request cancellation. If
4055// the context is nil a panic will occur. In the future the SDK may create
4056// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4057// for more information on using Contexts.
4058func (c *ElastiCache) IncreaseReplicaCountWithContext(ctx aws.Context, input *IncreaseReplicaCountInput, opts ...request.Option) (*IncreaseReplicaCountOutput, error) {
4059	req, out := c.IncreaseReplicaCountRequest(input)
4060	req.SetContext(ctx)
4061	req.ApplyOptions(opts...)
4062	return out, req.Send()
4063}
4064
4065const opListAllowedNodeTypeModifications = "ListAllowedNodeTypeModifications"
4066
4067// ListAllowedNodeTypeModificationsRequest generates a "aws/request.Request" representing the
4068// client's request for the ListAllowedNodeTypeModifications operation. The "output" return
4069// value will be populated with the request's response once the request completes
4070// successfully.
4071//
4072// Use "Send" method on the returned Request to send the API call to the service.
4073// the "output" return value is not valid until after Send returns without error.
4074//
4075// See ListAllowedNodeTypeModifications for more information on using the ListAllowedNodeTypeModifications
4076// API call, and error handling.
4077//
4078// This method is useful when you want to inject custom logic or configuration
4079// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4080//
4081//
4082//    // Example sending a request using the ListAllowedNodeTypeModificationsRequest method.
4083//    req, resp := client.ListAllowedNodeTypeModificationsRequest(params)
4084//
4085//    err := req.Send()
4086//    if err == nil { // resp is now filled
4087//        fmt.Println(resp)
4088//    }
4089//
4090// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4091func (c *ElastiCache) ListAllowedNodeTypeModificationsRequest(input *ListAllowedNodeTypeModificationsInput) (req *request.Request, output *ListAllowedNodeTypeModificationsOutput) {
4092	op := &request.Operation{
4093		Name:       opListAllowedNodeTypeModifications,
4094		HTTPMethod: "POST",
4095		HTTPPath:   "/",
4096	}
4097
4098	if input == nil {
4099		input = &ListAllowedNodeTypeModificationsInput{}
4100	}
4101
4102	output = &ListAllowedNodeTypeModificationsOutput{}
4103	req = c.newRequest(op, input, output)
4104	return
4105}
4106
4107// ListAllowedNodeTypeModifications API operation for Amazon ElastiCache.
4108//
4109// Lists all available node types that you can scale your Redis cluster's or
4110// replication group's current node type up to.
4111//
4112// When you use the ModifyCacheCluster or ModifyReplicationGroup operations
4113// to scale up your cluster or replication group, the value of the CacheNodeType
4114// parameter must be one of the node types returned by this operation.
4115//
4116// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4117// with awserr.Error's Code and Message methods to get detailed information about
4118// the error.
4119//
4120// See the AWS API reference guide for Amazon ElastiCache's
4121// API operation ListAllowedNodeTypeModifications for usage and error information.
4122//
4123// Returned Error Codes:
4124//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4125//   The requested cluster ID does not refer to an existing cluster.
4126//
4127//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4128//   The specified replication group does not exist.
4129//
4130//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4131//   Two or more incompatible parameters were specified.
4132//
4133//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4134//   The value for a parameter is invalid.
4135//
4136// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4137func (c *ElastiCache) ListAllowedNodeTypeModifications(input *ListAllowedNodeTypeModificationsInput) (*ListAllowedNodeTypeModificationsOutput, error) {
4138	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4139	return out, req.Send()
4140}
4141
4142// ListAllowedNodeTypeModificationsWithContext is the same as ListAllowedNodeTypeModifications with the addition of
4143// the ability to pass a context and additional request options.
4144//
4145// See ListAllowedNodeTypeModifications for details on how to use this API operation.
4146//
4147// The context must be non-nil and will be used for request cancellation. If
4148// the context is nil a panic will occur. In the future the SDK may create
4149// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4150// for more information on using Contexts.
4151func (c *ElastiCache) ListAllowedNodeTypeModificationsWithContext(ctx aws.Context, input *ListAllowedNodeTypeModificationsInput, opts ...request.Option) (*ListAllowedNodeTypeModificationsOutput, error) {
4152	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4153	req.SetContext(ctx)
4154	req.ApplyOptions(opts...)
4155	return out, req.Send()
4156}
4157
4158const opListTagsForResource = "ListTagsForResource"
4159
4160// ListTagsForResourceRequest generates a "aws/request.Request" representing the
4161// client's request for the ListTagsForResource operation. The "output" return
4162// value will be populated with the request's response once the request completes
4163// successfully.
4164//
4165// Use "Send" method on the returned Request to send the API call to the service.
4166// the "output" return value is not valid until after Send returns without error.
4167//
4168// See ListTagsForResource for more information on using the ListTagsForResource
4169// API call, and error handling.
4170//
4171// This method is useful when you want to inject custom logic or configuration
4172// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4173//
4174//
4175//    // Example sending a request using the ListTagsForResourceRequest method.
4176//    req, resp := client.ListTagsForResourceRequest(params)
4177//
4178//    err := req.Send()
4179//    if err == nil { // resp is now filled
4180//        fmt.Println(resp)
4181//    }
4182//
4183// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
4184func (c *ElastiCache) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *TagListMessage) {
4185	op := &request.Operation{
4186		Name:       opListTagsForResource,
4187		HTTPMethod: "POST",
4188		HTTPPath:   "/",
4189	}
4190
4191	if input == nil {
4192		input = &ListTagsForResourceInput{}
4193	}
4194
4195	output = &TagListMessage{}
4196	req = c.newRequest(op, input, output)
4197	return
4198}
4199
4200// ListTagsForResource API operation for Amazon ElastiCache.
4201//
4202// Lists all cost allocation tags currently on the named resource. A cost allocation
4203// tag is a key-value pair where the key is case-sensitive and the value is
4204// optional. You can use cost allocation tags to categorize and track your AWS
4205// costs.
4206//
4207// If the cluster is not in the available state, ListTagsForResource returns
4208// an error.
4209//
4210// You can have a maximum of 50 cost allocation tags on an ElastiCache resource.
4211// For more information, see Monitoring Costs with Tags (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Tagging.html).
4212//
4213// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4214// with awserr.Error's Code and Message methods to get detailed information about
4215// the error.
4216//
4217// See the AWS API reference guide for Amazon ElastiCache's
4218// API operation ListTagsForResource for usage and error information.
4219//
4220// Returned Error Codes:
4221//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4222//   The requested cluster ID does not refer to an existing cluster.
4223//
4224//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
4225//   The requested snapshot name does not refer to an existing snapshot.
4226//
4227//   * ErrCodeInvalidARNFault "InvalidARN"
4228//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
4229//
4230// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
4231func (c *ElastiCache) ListTagsForResource(input *ListTagsForResourceInput) (*TagListMessage, error) {
4232	req, out := c.ListTagsForResourceRequest(input)
4233	return out, req.Send()
4234}
4235
4236// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
4237// the ability to pass a context and additional request options.
4238//
4239// See ListTagsForResource for details on how to use this API operation.
4240//
4241// The context must be non-nil and will be used for request cancellation. If
4242// the context is nil a panic will occur. In the future the SDK may create
4243// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4244// for more information on using Contexts.
4245func (c *ElastiCache) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*TagListMessage, error) {
4246	req, out := c.ListTagsForResourceRequest(input)
4247	req.SetContext(ctx)
4248	req.ApplyOptions(opts...)
4249	return out, req.Send()
4250}
4251
4252const opModifyCacheCluster = "ModifyCacheCluster"
4253
4254// ModifyCacheClusterRequest generates a "aws/request.Request" representing the
4255// client's request for the ModifyCacheCluster operation. The "output" return
4256// value will be populated with the request's response once the request completes
4257// successfully.
4258//
4259// Use "Send" method on the returned Request to send the API call to the service.
4260// the "output" return value is not valid until after Send returns without error.
4261//
4262// See ModifyCacheCluster for more information on using the ModifyCacheCluster
4263// API call, and error handling.
4264//
4265// This method is useful when you want to inject custom logic or configuration
4266// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4267//
4268//
4269//    // Example sending a request using the ModifyCacheClusterRequest method.
4270//    req, resp := client.ModifyCacheClusterRequest(params)
4271//
4272//    err := req.Send()
4273//    if err == nil { // resp is now filled
4274//        fmt.Println(resp)
4275//    }
4276//
4277// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
4278func (c *ElastiCache) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) (req *request.Request, output *ModifyCacheClusterOutput) {
4279	op := &request.Operation{
4280		Name:       opModifyCacheCluster,
4281		HTTPMethod: "POST",
4282		HTTPPath:   "/",
4283	}
4284
4285	if input == nil {
4286		input = &ModifyCacheClusterInput{}
4287	}
4288
4289	output = &ModifyCacheClusterOutput{}
4290	req = c.newRequest(op, input, output)
4291	return
4292}
4293
4294// ModifyCacheCluster API operation for Amazon ElastiCache.
4295//
4296// Modifies the settings for a cluster. You can use this operation to change
4297// one or more cluster configuration parameters by specifying the parameters
4298// and the new values.
4299//
4300// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4301// with awserr.Error's Code and Message methods to get detailed information about
4302// the error.
4303//
4304// See the AWS API reference guide for Amazon ElastiCache's
4305// API operation ModifyCacheCluster for usage and error information.
4306//
4307// Returned Error Codes:
4308//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4309//   The requested cluster is not in the available state.
4310//
4311//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
4312//   The current state of the cache security group does not allow deletion.
4313//
4314//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4315//   The requested cache node type is not available in the specified Availability
4316//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4317//   in the ElastiCache User Guide.
4318//
4319//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4320//   The requested cluster ID does not refer to an existing cluster.
4321//
4322//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
4323//   The request cannot be processed because it would exceed the allowed number
4324//   of cache nodes in a single cluster.
4325//
4326//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4327//   The request cannot be processed because it would exceed the allowed number
4328//   of cache nodes per customer.
4329//
4330//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
4331//   The requested cache security group name does not refer to an existing cache
4332//   security group.
4333//
4334//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
4335//   The requested cache parameter group name does not refer to an existing cache
4336//   parameter group.
4337//
4338//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4339//   The VPC network is in an invalid state.
4340//
4341//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4342//   The value for a parameter is invalid.
4343//
4344//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4345//   Two or more incompatible parameters were specified.
4346//
4347// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
4348func (c *ElastiCache) ModifyCacheCluster(input *ModifyCacheClusterInput) (*ModifyCacheClusterOutput, error) {
4349	req, out := c.ModifyCacheClusterRequest(input)
4350	return out, req.Send()
4351}
4352
4353// ModifyCacheClusterWithContext is the same as ModifyCacheCluster with the addition of
4354// the ability to pass a context and additional request options.
4355//
4356// See ModifyCacheCluster for details on how to use this API operation.
4357//
4358// The context must be non-nil and will be used for request cancellation. If
4359// the context is nil a panic will occur. In the future the SDK may create
4360// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4361// for more information on using Contexts.
4362func (c *ElastiCache) ModifyCacheClusterWithContext(ctx aws.Context, input *ModifyCacheClusterInput, opts ...request.Option) (*ModifyCacheClusterOutput, error) {
4363	req, out := c.ModifyCacheClusterRequest(input)
4364	req.SetContext(ctx)
4365	req.ApplyOptions(opts...)
4366	return out, req.Send()
4367}
4368
4369const opModifyCacheParameterGroup = "ModifyCacheParameterGroup"
4370
4371// ModifyCacheParameterGroupRequest generates a "aws/request.Request" representing the
4372// client's request for the ModifyCacheParameterGroup operation. The "output" return
4373// value will be populated with the request's response once the request completes
4374// successfully.
4375//
4376// Use "Send" method on the returned Request to send the API call to the service.
4377// the "output" return value is not valid until after Send returns without error.
4378//
4379// See ModifyCacheParameterGroup for more information on using the ModifyCacheParameterGroup
4380// API call, and error handling.
4381//
4382// This method is useful when you want to inject custom logic or configuration
4383// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4384//
4385//
4386//    // Example sending a request using the ModifyCacheParameterGroupRequest method.
4387//    req, resp := client.ModifyCacheParameterGroupRequest(params)
4388//
4389//    err := req.Send()
4390//    if err == nil { // resp is now filled
4391//        fmt.Println(resp)
4392//    }
4393//
4394// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
4395func (c *ElastiCache) ModifyCacheParameterGroupRequest(input *ModifyCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
4396	op := &request.Operation{
4397		Name:       opModifyCacheParameterGroup,
4398		HTTPMethod: "POST",
4399		HTTPPath:   "/",
4400	}
4401
4402	if input == nil {
4403		input = &ModifyCacheParameterGroupInput{}
4404	}
4405
4406	output = &CacheParameterGroupNameMessage{}
4407	req = c.newRequest(op, input, output)
4408	return
4409}
4410
4411// ModifyCacheParameterGroup API operation for Amazon ElastiCache.
4412//
4413// Modifies the parameters of a cache parameter group. You can modify up to
4414// 20 parameters in a single request by submitting a list parameter name and
4415// value pairs.
4416//
4417// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4418// with awserr.Error's Code and Message methods to get detailed information about
4419// the error.
4420//
4421// See the AWS API reference guide for Amazon ElastiCache's
4422// API operation ModifyCacheParameterGroup for usage and error information.
4423//
4424// Returned Error Codes:
4425//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
4426//   The requested cache parameter group name does not refer to an existing cache
4427//   parameter group.
4428//
4429//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
4430//   The current state of the cache parameter group does not allow the requested
4431//   operation to occur.
4432//
4433//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4434//   The value for a parameter is invalid.
4435//
4436//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4437//   Two or more incompatible parameters were specified.
4438//
4439// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
4440func (c *ElastiCache) ModifyCacheParameterGroup(input *ModifyCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
4441	req, out := c.ModifyCacheParameterGroupRequest(input)
4442	return out, req.Send()
4443}
4444
4445// ModifyCacheParameterGroupWithContext is the same as ModifyCacheParameterGroup with the addition of
4446// the ability to pass a context and additional request options.
4447//
4448// See ModifyCacheParameterGroup for details on how to use this API operation.
4449//
4450// The context must be non-nil and will be used for request cancellation. If
4451// the context is nil a panic will occur. In the future the SDK may create
4452// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4453// for more information on using Contexts.
4454func (c *ElastiCache) ModifyCacheParameterGroupWithContext(ctx aws.Context, input *ModifyCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
4455	req, out := c.ModifyCacheParameterGroupRequest(input)
4456	req.SetContext(ctx)
4457	req.ApplyOptions(opts...)
4458	return out, req.Send()
4459}
4460
4461const opModifyCacheSubnetGroup = "ModifyCacheSubnetGroup"
4462
4463// ModifyCacheSubnetGroupRequest generates a "aws/request.Request" representing the
4464// client's request for the ModifyCacheSubnetGroup operation. The "output" return
4465// value will be populated with the request's response once the request completes
4466// successfully.
4467//
4468// Use "Send" method on the returned Request to send the API call to the service.
4469// the "output" return value is not valid until after Send returns without error.
4470//
4471// See ModifyCacheSubnetGroup for more information on using the ModifyCacheSubnetGroup
4472// API call, and error handling.
4473//
4474// This method is useful when you want to inject custom logic or configuration
4475// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4476//
4477//
4478//    // Example sending a request using the ModifyCacheSubnetGroupRequest method.
4479//    req, resp := client.ModifyCacheSubnetGroupRequest(params)
4480//
4481//    err := req.Send()
4482//    if err == nil { // resp is now filled
4483//        fmt.Println(resp)
4484//    }
4485//
4486// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
4487func (c *ElastiCache) ModifyCacheSubnetGroupRequest(input *ModifyCacheSubnetGroupInput) (req *request.Request, output *ModifyCacheSubnetGroupOutput) {
4488	op := &request.Operation{
4489		Name:       opModifyCacheSubnetGroup,
4490		HTTPMethod: "POST",
4491		HTTPPath:   "/",
4492	}
4493
4494	if input == nil {
4495		input = &ModifyCacheSubnetGroupInput{}
4496	}
4497
4498	output = &ModifyCacheSubnetGroupOutput{}
4499	req = c.newRequest(op, input, output)
4500	return
4501}
4502
4503// ModifyCacheSubnetGroup API operation for Amazon ElastiCache.
4504//
4505// Modifies an existing cache subnet group.
4506//
4507// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4508// with awserr.Error's Code and Message methods to get detailed information about
4509// the error.
4510//
4511// See the AWS API reference guide for Amazon ElastiCache's
4512// API operation ModifyCacheSubnetGroup for usage and error information.
4513//
4514// Returned Error Codes:
4515//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
4516//   The requested cache subnet group name does not refer to an existing cache
4517//   subnet group.
4518//
4519//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
4520//   The request cannot be processed because it would exceed the allowed number
4521//   of subnets in a cache subnet group.
4522//
4523//   * ErrCodeSubnetInUse "SubnetInUse"
4524//   The requested subnet is being used by another cache subnet group.
4525//
4526//   * ErrCodeInvalidSubnet "InvalidSubnet"
4527//   An invalid subnet identifier was specified.
4528//
4529// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
4530func (c *ElastiCache) ModifyCacheSubnetGroup(input *ModifyCacheSubnetGroupInput) (*ModifyCacheSubnetGroupOutput, error) {
4531	req, out := c.ModifyCacheSubnetGroupRequest(input)
4532	return out, req.Send()
4533}
4534
4535// ModifyCacheSubnetGroupWithContext is the same as ModifyCacheSubnetGroup with the addition of
4536// the ability to pass a context and additional request options.
4537//
4538// See ModifyCacheSubnetGroup for details on how to use this API operation.
4539//
4540// The context must be non-nil and will be used for request cancellation. If
4541// the context is nil a panic will occur. In the future the SDK may create
4542// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4543// for more information on using Contexts.
4544func (c *ElastiCache) ModifyCacheSubnetGroupWithContext(ctx aws.Context, input *ModifyCacheSubnetGroupInput, opts ...request.Option) (*ModifyCacheSubnetGroupOutput, error) {
4545	req, out := c.ModifyCacheSubnetGroupRequest(input)
4546	req.SetContext(ctx)
4547	req.ApplyOptions(opts...)
4548	return out, req.Send()
4549}
4550
4551const opModifyReplicationGroup = "ModifyReplicationGroup"
4552
4553// ModifyReplicationGroupRequest generates a "aws/request.Request" representing the
4554// client's request for the ModifyReplicationGroup operation. The "output" return
4555// value will be populated with the request's response once the request completes
4556// successfully.
4557//
4558// Use "Send" method on the returned Request to send the API call to the service.
4559// the "output" return value is not valid until after Send returns without error.
4560//
4561// See ModifyReplicationGroup for more information on using the ModifyReplicationGroup
4562// API call, and error handling.
4563//
4564// This method is useful when you want to inject custom logic or configuration
4565// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4566//
4567//
4568//    // Example sending a request using the ModifyReplicationGroupRequest method.
4569//    req, resp := client.ModifyReplicationGroupRequest(params)
4570//
4571//    err := req.Send()
4572//    if err == nil { // resp is now filled
4573//        fmt.Println(resp)
4574//    }
4575//
4576// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
4577func (c *ElastiCache) ModifyReplicationGroupRequest(input *ModifyReplicationGroupInput) (req *request.Request, output *ModifyReplicationGroupOutput) {
4578	op := &request.Operation{
4579		Name:       opModifyReplicationGroup,
4580		HTTPMethod: "POST",
4581		HTTPPath:   "/",
4582	}
4583
4584	if input == nil {
4585		input = &ModifyReplicationGroupInput{}
4586	}
4587
4588	output = &ModifyReplicationGroupOutput{}
4589	req = c.newRequest(op, input, output)
4590	return
4591}
4592
4593// ModifyReplicationGroup API operation for Amazon ElastiCache.
4594//
4595// Modifies the settings for a replication group.
4596//
4597// For Redis (cluster mode enabled) clusters, this operation cannot be used
4598// to change a cluster's node type or engine version. For more information,
4599// see:
4600//
4601//    * Scaling for Amazon ElastiCache for Redis (cluster mode enabled) (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/scaling-redis-cluster-mode-enabled.html)
4602//    in the ElastiCache User Guide
4603//
4604//    * ModifyReplicationGroupShardConfiguration (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)
4605//    in the ElastiCache API Reference
4606//
4607// This operation is valid for Redis only.
4608//
4609// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4610// with awserr.Error's Code and Message methods to get detailed information about
4611// the error.
4612//
4613// See the AWS API reference guide for Amazon ElastiCache's
4614// API operation ModifyReplicationGroup for usage and error information.
4615//
4616// Returned Error Codes:
4617//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4618//   The specified replication group does not exist.
4619//
4620//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4621//   The requested replication group is not in the available state.
4622//
4623//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4624//   The requested cluster is not in the available state.
4625//
4626//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
4627//   The current state of the cache security group does not allow deletion.
4628//
4629//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4630//   The requested cache node type is not available in the specified Availability
4631//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4632//   in the ElastiCache User Guide.
4633//
4634//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4635//   The requested cluster ID does not refer to an existing cluster.
4636//
4637//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
4638//   The request cannot be processed because it would exceed the allowed number
4639//   of cache nodes in a single cluster.
4640//
4641//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4642//   The request cannot be processed because it would exceed the allowed number
4643//   of cache nodes per customer.
4644//
4645//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
4646//   The requested cache security group name does not refer to an existing cache
4647//   security group.
4648//
4649//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
4650//   The requested cache parameter group name does not refer to an existing cache
4651//   parameter group.
4652//
4653//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4654//   The VPC network is in an invalid state.
4655//
4656//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4657//   The value for a parameter is invalid.
4658//
4659//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4660//   Two or more incompatible parameters were specified.
4661//
4662// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
4663func (c *ElastiCache) ModifyReplicationGroup(input *ModifyReplicationGroupInput) (*ModifyReplicationGroupOutput, error) {
4664	req, out := c.ModifyReplicationGroupRequest(input)
4665	return out, req.Send()
4666}
4667
4668// ModifyReplicationGroupWithContext is the same as ModifyReplicationGroup with the addition of
4669// the ability to pass a context and additional request options.
4670//
4671// See ModifyReplicationGroup for details on how to use this API operation.
4672//
4673// The context must be non-nil and will be used for request cancellation. If
4674// the context is nil a panic will occur. In the future the SDK may create
4675// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4676// for more information on using Contexts.
4677func (c *ElastiCache) ModifyReplicationGroupWithContext(ctx aws.Context, input *ModifyReplicationGroupInput, opts ...request.Option) (*ModifyReplicationGroupOutput, error) {
4678	req, out := c.ModifyReplicationGroupRequest(input)
4679	req.SetContext(ctx)
4680	req.ApplyOptions(opts...)
4681	return out, req.Send()
4682}
4683
4684const opModifyReplicationGroupShardConfiguration = "ModifyReplicationGroupShardConfiguration"
4685
4686// ModifyReplicationGroupShardConfigurationRequest generates a "aws/request.Request" representing the
4687// client's request for the ModifyReplicationGroupShardConfiguration operation. The "output" return
4688// value will be populated with the request's response once the request completes
4689// successfully.
4690//
4691// Use "Send" method on the returned Request to send the API call to the service.
4692// the "output" return value is not valid until after Send returns without error.
4693//
4694// See ModifyReplicationGroupShardConfiguration for more information on using the ModifyReplicationGroupShardConfiguration
4695// API call, and error handling.
4696//
4697// This method is useful when you want to inject custom logic or configuration
4698// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4699//
4700//
4701//    // Example sending a request using the ModifyReplicationGroupShardConfigurationRequest method.
4702//    req, resp := client.ModifyReplicationGroupShardConfigurationRequest(params)
4703//
4704//    err := req.Send()
4705//    if err == nil { // resp is now filled
4706//        fmt.Println(resp)
4707//    }
4708//
4709// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
4710func (c *ElastiCache) ModifyReplicationGroupShardConfigurationRequest(input *ModifyReplicationGroupShardConfigurationInput) (req *request.Request, output *ModifyReplicationGroupShardConfigurationOutput) {
4711	op := &request.Operation{
4712		Name:       opModifyReplicationGroupShardConfiguration,
4713		HTTPMethod: "POST",
4714		HTTPPath:   "/",
4715	}
4716
4717	if input == nil {
4718		input = &ModifyReplicationGroupShardConfigurationInput{}
4719	}
4720
4721	output = &ModifyReplicationGroupShardConfigurationOutput{}
4722	req = c.newRequest(op, input, output)
4723	return
4724}
4725
4726// ModifyReplicationGroupShardConfiguration API operation for Amazon ElastiCache.
4727//
4728// Modifies a replication group's shards (node groups) by allowing you to add
4729// shards, remove shards, or rebalance the keyspaces among exisiting shards.
4730//
4731// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4732// with awserr.Error's Code and Message methods to get detailed information about
4733// the error.
4734//
4735// See the AWS API reference guide for Amazon ElastiCache's
4736// API operation ModifyReplicationGroupShardConfiguration for usage and error information.
4737//
4738// Returned Error Codes:
4739//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4740//   The specified replication group does not exist.
4741//
4742//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4743//   The requested replication group is not in the available state.
4744//
4745//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4746//   The requested cluster is not in the available state.
4747//
4748//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4749//   The VPC network is in an invalid state.
4750//
4751//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4752//   The requested cache node type is not available in the specified Availability
4753//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4754//   in the ElastiCache User Guide.
4755//
4756//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
4757//   The request cannot be processed because it would exceed the maximum allowed
4758//   number of node groups (shards) in a single replication group. The default
4759//   maximum is 90
4760//
4761//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4762//   The request cannot be processed because it would exceed the allowed number
4763//   of cache nodes per customer.
4764//
4765//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4766//   The value for a parameter is invalid.
4767//
4768//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4769//   Two or more incompatible parameters were specified.
4770//
4771// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
4772func (c *ElastiCache) ModifyReplicationGroupShardConfiguration(input *ModifyReplicationGroupShardConfigurationInput) (*ModifyReplicationGroupShardConfigurationOutput, error) {
4773	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
4774	return out, req.Send()
4775}
4776
4777// ModifyReplicationGroupShardConfigurationWithContext is the same as ModifyReplicationGroupShardConfiguration with the addition of
4778// the ability to pass a context and additional request options.
4779//
4780// See ModifyReplicationGroupShardConfiguration for details on how to use this API operation.
4781//
4782// The context must be non-nil and will be used for request cancellation. If
4783// the context is nil a panic will occur. In the future the SDK may create
4784// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4785// for more information on using Contexts.
4786func (c *ElastiCache) ModifyReplicationGroupShardConfigurationWithContext(ctx aws.Context, input *ModifyReplicationGroupShardConfigurationInput, opts ...request.Option) (*ModifyReplicationGroupShardConfigurationOutput, error) {
4787	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
4788	req.SetContext(ctx)
4789	req.ApplyOptions(opts...)
4790	return out, req.Send()
4791}
4792
4793const opPurchaseReservedCacheNodesOffering = "PurchaseReservedCacheNodesOffering"
4794
4795// PurchaseReservedCacheNodesOfferingRequest generates a "aws/request.Request" representing the
4796// client's request for the PurchaseReservedCacheNodesOffering operation. The "output" return
4797// value will be populated with the request's response once the request completes
4798// successfully.
4799//
4800// Use "Send" method on the returned Request to send the API call to the service.
4801// the "output" return value is not valid until after Send returns without error.
4802//
4803// See PurchaseReservedCacheNodesOffering for more information on using the PurchaseReservedCacheNodesOffering
4804// API call, and error handling.
4805//
4806// This method is useful when you want to inject custom logic or configuration
4807// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4808//
4809//
4810//    // Example sending a request using the PurchaseReservedCacheNodesOfferingRequest method.
4811//    req, resp := client.PurchaseReservedCacheNodesOfferingRequest(params)
4812//
4813//    err := req.Send()
4814//    if err == nil { // resp is now filled
4815//        fmt.Println(resp)
4816//    }
4817//
4818// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
4819func (c *ElastiCache) PurchaseReservedCacheNodesOfferingRequest(input *PurchaseReservedCacheNodesOfferingInput) (req *request.Request, output *PurchaseReservedCacheNodesOfferingOutput) {
4820	op := &request.Operation{
4821		Name:       opPurchaseReservedCacheNodesOffering,
4822		HTTPMethod: "POST",
4823		HTTPPath:   "/",
4824	}
4825
4826	if input == nil {
4827		input = &PurchaseReservedCacheNodesOfferingInput{}
4828	}
4829
4830	output = &PurchaseReservedCacheNodesOfferingOutput{}
4831	req = c.newRequest(op, input, output)
4832	return
4833}
4834
4835// PurchaseReservedCacheNodesOffering API operation for Amazon ElastiCache.
4836//
4837// Allows you to purchase a reserved cache node offering.
4838//
4839// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4840// with awserr.Error's Code and Message methods to get detailed information about
4841// the error.
4842//
4843// See the AWS API reference guide for Amazon ElastiCache's
4844// API operation PurchaseReservedCacheNodesOffering for usage and error information.
4845//
4846// Returned Error Codes:
4847//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
4848//   The requested cache node offering does not exist.
4849//
4850//   * ErrCodeReservedCacheNodeAlreadyExistsFault "ReservedCacheNodeAlreadyExists"
4851//   You already have a reservation with the given identifier.
4852//
4853//   * ErrCodeReservedCacheNodeQuotaExceededFault "ReservedCacheNodeQuotaExceeded"
4854//   The request cannot be processed because it would exceed the user's cache
4855//   node quota.
4856//
4857//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4858//   The value for a parameter is invalid.
4859//
4860//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4861//   Two or more incompatible parameters were specified.
4862//
4863// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
4864func (c *ElastiCache) PurchaseReservedCacheNodesOffering(input *PurchaseReservedCacheNodesOfferingInput) (*PurchaseReservedCacheNodesOfferingOutput, error) {
4865	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
4866	return out, req.Send()
4867}
4868
4869// PurchaseReservedCacheNodesOfferingWithContext is the same as PurchaseReservedCacheNodesOffering with the addition of
4870// the ability to pass a context and additional request options.
4871//
4872// See PurchaseReservedCacheNodesOffering for details on how to use this API operation.
4873//
4874// The context must be non-nil and will be used for request cancellation. If
4875// the context is nil a panic will occur. In the future the SDK may create
4876// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4877// for more information on using Contexts.
4878func (c *ElastiCache) PurchaseReservedCacheNodesOfferingWithContext(ctx aws.Context, input *PurchaseReservedCacheNodesOfferingInput, opts ...request.Option) (*PurchaseReservedCacheNodesOfferingOutput, error) {
4879	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
4880	req.SetContext(ctx)
4881	req.ApplyOptions(opts...)
4882	return out, req.Send()
4883}
4884
4885const opRebootCacheCluster = "RebootCacheCluster"
4886
4887// RebootCacheClusterRequest generates a "aws/request.Request" representing the
4888// client's request for the RebootCacheCluster operation. The "output" return
4889// value will be populated with the request's response once the request completes
4890// successfully.
4891//
4892// Use "Send" method on the returned Request to send the API call to the service.
4893// the "output" return value is not valid until after Send returns without error.
4894//
4895// See RebootCacheCluster for more information on using the RebootCacheCluster
4896// API call, and error handling.
4897//
4898// This method is useful when you want to inject custom logic or configuration
4899// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4900//
4901//
4902//    // Example sending a request using the RebootCacheClusterRequest method.
4903//    req, resp := client.RebootCacheClusterRequest(params)
4904//
4905//    err := req.Send()
4906//    if err == nil { // resp is now filled
4907//        fmt.Println(resp)
4908//    }
4909//
4910// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
4911func (c *ElastiCache) RebootCacheClusterRequest(input *RebootCacheClusterInput) (req *request.Request, output *RebootCacheClusterOutput) {
4912	op := &request.Operation{
4913		Name:       opRebootCacheCluster,
4914		HTTPMethod: "POST",
4915		HTTPPath:   "/",
4916	}
4917
4918	if input == nil {
4919		input = &RebootCacheClusterInput{}
4920	}
4921
4922	output = &RebootCacheClusterOutput{}
4923	req = c.newRequest(op, input, output)
4924	return
4925}
4926
4927// RebootCacheCluster API operation for Amazon ElastiCache.
4928//
4929// Reboots some, or all, of the cache nodes within a provisioned cluster. This
4930// operation applies any modified cache parameter groups to the cluster. The
4931// reboot operation takes place as soon as possible, and results in a momentary
4932// outage to the cluster. During the reboot, the cluster status is set to REBOOTING.
4933//
4934// The reboot causes the contents of the cache (for each cache node being rebooted)
4935// to be lost.
4936//
4937// When the reboot is complete, a cluster event is created.
4938//
4939// Rebooting a cluster is currently supported on Memcached and Redis (cluster
4940// mode disabled) clusters. Rebooting is not supported on Redis (cluster mode
4941// enabled) clusters.
4942//
4943// If you make changes to parameters that require a Redis (cluster mode enabled)
4944// cluster reboot for the changes to be applied, see Rebooting a Cluster (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html)
4945// for an alternate process.
4946//
4947// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4948// with awserr.Error's Code and Message methods to get detailed information about
4949// the error.
4950//
4951// See the AWS API reference guide for Amazon ElastiCache's
4952// API operation RebootCacheCluster for usage and error information.
4953//
4954// Returned Error Codes:
4955//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4956//   The requested cluster is not in the available state.
4957//
4958//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4959//   The requested cluster ID does not refer to an existing cluster.
4960//
4961// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
4962func (c *ElastiCache) RebootCacheCluster(input *RebootCacheClusterInput) (*RebootCacheClusterOutput, error) {
4963	req, out := c.RebootCacheClusterRequest(input)
4964	return out, req.Send()
4965}
4966
4967// RebootCacheClusterWithContext is the same as RebootCacheCluster with the addition of
4968// the ability to pass a context and additional request options.
4969//
4970// See RebootCacheCluster for details on how to use this API operation.
4971//
4972// The context must be non-nil and will be used for request cancellation. If
4973// the context is nil a panic will occur. In the future the SDK may create
4974// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4975// for more information on using Contexts.
4976func (c *ElastiCache) RebootCacheClusterWithContext(ctx aws.Context, input *RebootCacheClusterInput, opts ...request.Option) (*RebootCacheClusterOutput, error) {
4977	req, out := c.RebootCacheClusterRequest(input)
4978	req.SetContext(ctx)
4979	req.ApplyOptions(opts...)
4980	return out, req.Send()
4981}
4982
4983const opRemoveTagsFromResource = "RemoveTagsFromResource"
4984
4985// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
4986// client's request for the RemoveTagsFromResource operation. The "output" return
4987// value will be populated with the request's response once the request completes
4988// successfully.
4989//
4990// Use "Send" method on the returned Request to send the API call to the service.
4991// the "output" return value is not valid until after Send returns without error.
4992//
4993// See RemoveTagsFromResource for more information on using the RemoveTagsFromResource
4994// API call, and error handling.
4995//
4996// This method is useful when you want to inject custom logic or configuration
4997// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4998//
4999//
5000//    // Example sending a request using the RemoveTagsFromResourceRequest method.
5001//    req, resp := client.RemoveTagsFromResourceRequest(params)
5002//
5003//    err := req.Send()
5004//    if err == nil { // resp is now filled
5005//        fmt.Println(resp)
5006//    }
5007//
5008// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
5009func (c *ElastiCache) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *TagListMessage) {
5010	op := &request.Operation{
5011		Name:       opRemoveTagsFromResource,
5012		HTTPMethod: "POST",
5013		HTTPPath:   "/",
5014	}
5015
5016	if input == nil {
5017		input = &RemoveTagsFromResourceInput{}
5018	}
5019
5020	output = &TagListMessage{}
5021	req = c.newRequest(op, input, output)
5022	return
5023}
5024
5025// RemoveTagsFromResource API operation for Amazon ElastiCache.
5026//
5027// Removes the tags identified by the TagKeys list from the named resource.
5028//
5029// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5030// with awserr.Error's Code and Message methods to get detailed information about
5031// the error.
5032//
5033// See the AWS API reference guide for Amazon ElastiCache's
5034// API operation RemoveTagsFromResource for usage and error information.
5035//
5036// Returned Error Codes:
5037//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5038//   The requested cluster ID does not refer to an existing cluster.
5039//
5040//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
5041//   The requested snapshot name does not refer to an existing snapshot.
5042//
5043//   * ErrCodeInvalidARNFault "InvalidARN"
5044//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
5045//
5046//   * ErrCodeTagNotFoundFault "TagNotFound"
5047//   The requested tag was not found on this resource.
5048//
5049// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
5050func (c *ElastiCache) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*TagListMessage, error) {
5051	req, out := c.RemoveTagsFromResourceRequest(input)
5052	return out, req.Send()
5053}
5054
5055// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
5056// the ability to pass a context and additional request options.
5057//
5058// See RemoveTagsFromResource for details on how to use this API operation.
5059//
5060// The context must be non-nil and will be used for request cancellation. If
5061// the context is nil a panic will occur. In the future the SDK may create
5062// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5063// for more information on using Contexts.
5064func (c *ElastiCache) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*TagListMessage, error) {
5065	req, out := c.RemoveTagsFromResourceRequest(input)
5066	req.SetContext(ctx)
5067	req.ApplyOptions(opts...)
5068	return out, req.Send()
5069}
5070
5071const opResetCacheParameterGroup = "ResetCacheParameterGroup"
5072
5073// ResetCacheParameterGroupRequest generates a "aws/request.Request" representing the
5074// client's request for the ResetCacheParameterGroup operation. The "output" return
5075// value will be populated with the request's response once the request completes
5076// successfully.
5077//
5078// Use "Send" method on the returned Request to send the API call to the service.
5079// the "output" return value is not valid until after Send returns without error.
5080//
5081// See ResetCacheParameterGroup for more information on using the ResetCacheParameterGroup
5082// API call, and error handling.
5083//
5084// This method is useful when you want to inject custom logic or configuration
5085// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5086//
5087//
5088//    // Example sending a request using the ResetCacheParameterGroupRequest method.
5089//    req, resp := client.ResetCacheParameterGroupRequest(params)
5090//
5091//    err := req.Send()
5092//    if err == nil { // resp is now filled
5093//        fmt.Println(resp)
5094//    }
5095//
5096// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
5097func (c *ElastiCache) ResetCacheParameterGroupRequest(input *ResetCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
5098	op := &request.Operation{
5099		Name:       opResetCacheParameterGroup,
5100		HTTPMethod: "POST",
5101		HTTPPath:   "/",
5102	}
5103
5104	if input == nil {
5105		input = &ResetCacheParameterGroupInput{}
5106	}
5107
5108	output = &CacheParameterGroupNameMessage{}
5109	req = c.newRequest(op, input, output)
5110	return
5111}
5112
5113// ResetCacheParameterGroup API operation for Amazon ElastiCache.
5114//
5115// Modifies the parameters of a cache parameter group to the engine or system
5116// default value. You can reset specific parameters by submitting a list of
5117// parameter names. To reset the entire cache parameter group, specify the ResetAllParameters
5118// and CacheParameterGroupName parameters.
5119//
5120// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5121// with awserr.Error's Code and Message methods to get detailed information about
5122// the error.
5123//
5124// See the AWS API reference guide for Amazon ElastiCache's
5125// API operation ResetCacheParameterGroup for usage and error information.
5126//
5127// Returned Error Codes:
5128//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
5129//   The current state of the cache parameter group does not allow the requested
5130//   operation to occur.
5131//
5132//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5133//   The requested cache parameter group name does not refer to an existing cache
5134//   parameter group.
5135//
5136//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5137//   The value for a parameter is invalid.
5138//
5139//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5140//   Two or more incompatible parameters were specified.
5141//
5142// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
5143func (c *ElastiCache) ResetCacheParameterGroup(input *ResetCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
5144	req, out := c.ResetCacheParameterGroupRequest(input)
5145	return out, req.Send()
5146}
5147
5148// ResetCacheParameterGroupWithContext is the same as ResetCacheParameterGroup with the addition of
5149// the ability to pass a context and additional request options.
5150//
5151// See ResetCacheParameterGroup for details on how to use this API operation.
5152//
5153// The context must be non-nil and will be used for request cancellation. If
5154// the context is nil a panic will occur. In the future the SDK may create
5155// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5156// for more information on using Contexts.
5157func (c *ElastiCache) ResetCacheParameterGroupWithContext(ctx aws.Context, input *ResetCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
5158	req, out := c.ResetCacheParameterGroupRequest(input)
5159	req.SetContext(ctx)
5160	req.ApplyOptions(opts...)
5161	return out, req.Send()
5162}
5163
5164const opRevokeCacheSecurityGroupIngress = "RevokeCacheSecurityGroupIngress"
5165
5166// RevokeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
5167// client's request for the RevokeCacheSecurityGroupIngress operation. The "output" return
5168// value will be populated with the request's response once the request completes
5169// successfully.
5170//
5171// Use "Send" method on the returned Request to send the API call to the service.
5172// the "output" return value is not valid until after Send returns without error.
5173//
5174// See RevokeCacheSecurityGroupIngress for more information on using the RevokeCacheSecurityGroupIngress
5175// API call, and error handling.
5176//
5177// This method is useful when you want to inject custom logic or configuration
5178// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5179//
5180//
5181//    // Example sending a request using the RevokeCacheSecurityGroupIngressRequest method.
5182//    req, resp := client.RevokeCacheSecurityGroupIngressRequest(params)
5183//
5184//    err := req.Send()
5185//    if err == nil { // resp is now filled
5186//        fmt.Println(resp)
5187//    }
5188//
5189// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
5190func (c *ElastiCache) RevokeCacheSecurityGroupIngressRequest(input *RevokeCacheSecurityGroupIngressInput) (req *request.Request, output *RevokeCacheSecurityGroupIngressOutput) {
5191	op := &request.Operation{
5192		Name:       opRevokeCacheSecurityGroupIngress,
5193		HTTPMethod: "POST",
5194		HTTPPath:   "/",
5195	}
5196
5197	if input == nil {
5198		input = &RevokeCacheSecurityGroupIngressInput{}
5199	}
5200
5201	output = &RevokeCacheSecurityGroupIngressOutput{}
5202	req = c.newRequest(op, input, output)
5203	return
5204}
5205
5206// RevokeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
5207//
5208// Revokes ingress from a cache security group. Use this operation to disallow
5209// access from an Amazon EC2 security group that had been previously authorized.
5210//
5211// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5212// with awserr.Error's Code and Message methods to get detailed information about
5213// the error.
5214//
5215// See the AWS API reference guide for Amazon ElastiCache's
5216// API operation RevokeCacheSecurityGroupIngress for usage and error information.
5217//
5218// Returned Error Codes:
5219//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5220//   The requested cache security group name does not refer to an existing cache
5221//   security group.
5222//
5223//   * ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
5224//   The specified Amazon EC2 security group is not authorized for the specified
5225//   cache security group.
5226//
5227//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5228//   The current state of the cache security group does not allow deletion.
5229//
5230//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5231//   The value for a parameter is invalid.
5232//
5233//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5234//   Two or more incompatible parameters were specified.
5235//
5236// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
5237func (c *ElastiCache) RevokeCacheSecurityGroupIngress(input *RevokeCacheSecurityGroupIngressInput) (*RevokeCacheSecurityGroupIngressOutput, error) {
5238	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
5239	return out, req.Send()
5240}
5241
5242// RevokeCacheSecurityGroupIngressWithContext is the same as RevokeCacheSecurityGroupIngress with the addition of
5243// the ability to pass a context and additional request options.
5244//
5245// See RevokeCacheSecurityGroupIngress for details on how to use this API operation.
5246//
5247// The context must be non-nil and will be used for request cancellation. If
5248// the context is nil a panic will occur. In the future the SDK may create
5249// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5250// for more information on using Contexts.
5251func (c *ElastiCache) RevokeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeCacheSecurityGroupIngressInput, opts ...request.Option) (*RevokeCacheSecurityGroupIngressOutput, error) {
5252	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
5253	req.SetContext(ctx)
5254	req.ApplyOptions(opts...)
5255	return out, req.Send()
5256}
5257
5258const opTestFailover = "TestFailover"
5259
5260// TestFailoverRequest generates a "aws/request.Request" representing the
5261// client's request for the TestFailover operation. The "output" return
5262// value will be populated with the request's response once the request completes
5263// successfully.
5264//
5265// Use "Send" method on the returned Request to send the API call to the service.
5266// the "output" return value is not valid until after Send returns without error.
5267//
5268// See TestFailover for more information on using the TestFailover
5269// API call, and error handling.
5270//
5271// This method is useful when you want to inject custom logic or configuration
5272// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5273//
5274//
5275//    // Example sending a request using the TestFailoverRequest method.
5276//    req, resp := client.TestFailoverRequest(params)
5277//
5278//    err := req.Send()
5279//    if err == nil { // resp is now filled
5280//        fmt.Println(resp)
5281//    }
5282//
5283// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
5284func (c *ElastiCache) TestFailoverRequest(input *TestFailoverInput) (req *request.Request, output *TestFailoverOutput) {
5285	op := &request.Operation{
5286		Name:       opTestFailover,
5287		HTTPMethod: "POST",
5288		HTTPPath:   "/",
5289	}
5290
5291	if input == nil {
5292		input = &TestFailoverInput{}
5293	}
5294
5295	output = &TestFailoverOutput{}
5296	req = c.newRequest(op, input, output)
5297	return
5298}
5299
5300// TestFailover API operation for Amazon ElastiCache.
5301//
5302// Represents the input of a TestFailover operation which test automatic failover
5303// on a specified node group (called shard in the console) in a replication
5304// group (called cluster in the console).
5305//
5306// Note the following
5307//
5308//    * A customer can use this operation to test automatic failover on up to
5309//    5 shards (called node groups in the ElastiCache API and AWS CLI) in any
5310//    rolling 24-hour period.
5311//
5312//    * If calling this operation on shards in different clusters (called replication
5313//    groups in the API and CLI), the calls can be made concurrently.
5314//
5315//    * If calling this operation multiple times on different shards in the
5316//    same Redis (cluster mode enabled) replication group, the first node replacement
5317//    must complete before a subsequent call can be made.
5318//
5319//    * To determine whether the node replacement is complete you can check
5320//    Events using the Amazon ElastiCache console, the AWS CLI, or the ElastiCache
5321//    API. Look for the following automatic failover related events, listed
5322//    here in order of occurrance: Replication group message: Test Failover
5323//    API called for node group <node-group-id> Cache cluster message: Failover
5324//    from master node <primary-node-id> to replica node <node-id> completed
5325//    Replication group message: Failover from master node <primary-node-id>
5326//    to replica node <node-id> completed Cache cluster message: Recovering
5327//    cache nodes <node-id> Cache cluster message: Finished recovery for cache
5328//    nodes <node-id> For more information see: Viewing ElastiCache Events (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ECEvents.Viewing.html)
5329//    in the ElastiCache User Guide DescribeEvents (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html)
5330//    in the ElastiCache API Reference
5331//
5332// Also see, Testing Multi-AZ with Automatic Failover (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html#auto-failover-test)
5333// in the ElastiCache User Guide.
5334//
5335// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5336// with awserr.Error's Code and Message methods to get detailed information about
5337// the error.
5338//
5339// See the AWS API reference guide for Amazon ElastiCache's
5340// API operation TestFailover for usage and error information.
5341//
5342// Returned Error Codes:
5343//   * ErrCodeAPICallRateForCustomerExceededFault "APICallRateForCustomerExceeded"
5344//   The customer has exceeded the allowed rate of API calls.
5345//
5346//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5347//   The requested cluster is not in the available state.
5348//
5349//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5350//   The requested replication group is not in the available state.
5351//
5352//   * ErrCodeNodeGroupNotFoundFault "NodeGroupNotFoundFault"
5353//   The node group specified by the NodeGroupId parameter could not be found.
5354//   Please verify that the node group exists and that you spelled the NodeGroupId
5355//   value correctly.
5356//
5357//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5358//   The specified replication group does not exist.
5359//
5360//   * ErrCodeTestFailoverNotAvailableFault "TestFailoverNotAvailableFault"
5361//   The TestFailover action is not available.
5362//
5363//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5364//   The value for a parameter is invalid.
5365//
5366//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5367//   Two or more incompatible parameters were specified.
5368//
5369// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
5370func (c *ElastiCache) TestFailover(input *TestFailoverInput) (*TestFailoverOutput, error) {
5371	req, out := c.TestFailoverRequest(input)
5372	return out, req.Send()
5373}
5374
5375// TestFailoverWithContext is the same as TestFailover with the addition of
5376// the ability to pass a context and additional request options.
5377//
5378// See TestFailover for details on how to use this API operation.
5379//
5380// The context must be non-nil and will be used for request cancellation. If
5381// the context is nil a panic will occur. In the future the SDK may create
5382// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5383// for more information on using Contexts.
5384func (c *ElastiCache) TestFailoverWithContext(ctx aws.Context, input *TestFailoverInput, opts ...request.Option) (*TestFailoverOutput, error) {
5385	req, out := c.TestFailoverRequest(input)
5386	req.SetContext(ctx)
5387	req.ApplyOptions(opts...)
5388	return out, req.Send()
5389}
5390
5391// Represents the input of an AddTagsToResource operation.
5392type AddTagsToResourceInput struct {
5393	_ struct{} `type:"structure"`
5394
5395	// The Amazon Resource Name (ARN) of the resource to which the tags are to be
5396	// added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
5397	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. ElastiCache
5398	// resources are cluster and snapshot.
5399	//
5400	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
5401	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
5402	//
5403	// ResourceName is a required field
5404	ResourceName *string `type:"string" required:"true"`
5405
5406	// A list of cost allocation tags to be added to this resource. A tag is a key-value
5407	// pair. A tag key must be accompanied by a tag value.
5408	//
5409	// Tags is a required field
5410	Tags []*Tag `locationNameList:"Tag" type:"list" required:"true"`
5411}
5412
5413// String returns the string representation
5414func (s AddTagsToResourceInput) String() string {
5415	return awsutil.Prettify(s)
5416}
5417
5418// GoString returns the string representation
5419func (s AddTagsToResourceInput) GoString() string {
5420	return s.String()
5421}
5422
5423// Validate inspects the fields of the type to determine if they are valid.
5424func (s *AddTagsToResourceInput) Validate() error {
5425	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
5426	if s.ResourceName == nil {
5427		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
5428	}
5429	if s.Tags == nil {
5430		invalidParams.Add(request.NewErrParamRequired("Tags"))
5431	}
5432
5433	if invalidParams.Len() > 0 {
5434		return invalidParams
5435	}
5436	return nil
5437}
5438
5439// SetResourceName sets the ResourceName field's value.
5440func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
5441	s.ResourceName = &v
5442	return s
5443}
5444
5445// SetTags sets the Tags field's value.
5446func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
5447	s.Tags = v
5448	return s
5449}
5450
5451// Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
5452type AuthorizeCacheSecurityGroupIngressInput struct {
5453	_ struct{} `type:"structure"`
5454
5455	// The cache security group that allows network ingress.
5456	//
5457	// CacheSecurityGroupName is a required field
5458	CacheSecurityGroupName *string `type:"string" required:"true"`
5459
5460	// The Amazon EC2 security group to be authorized for ingress to the cache security
5461	// group.
5462	//
5463	// EC2SecurityGroupName is a required field
5464	EC2SecurityGroupName *string `type:"string" required:"true"`
5465
5466	// The AWS account number of the Amazon EC2 security group owner. Note that
5467	// this is not the same thing as an AWS access key ID - you must provide a valid
5468	// AWS account number for this parameter.
5469	//
5470	// EC2SecurityGroupOwnerId is a required field
5471	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
5472}
5473
5474// String returns the string representation
5475func (s AuthorizeCacheSecurityGroupIngressInput) String() string {
5476	return awsutil.Prettify(s)
5477}
5478
5479// GoString returns the string representation
5480func (s AuthorizeCacheSecurityGroupIngressInput) GoString() string {
5481	return s.String()
5482}
5483
5484// Validate inspects the fields of the type to determine if they are valid.
5485func (s *AuthorizeCacheSecurityGroupIngressInput) Validate() error {
5486	invalidParams := request.ErrInvalidParams{Context: "AuthorizeCacheSecurityGroupIngressInput"}
5487	if s.CacheSecurityGroupName == nil {
5488		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
5489	}
5490	if s.EC2SecurityGroupName == nil {
5491		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
5492	}
5493	if s.EC2SecurityGroupOwnerId == nil {
5494		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
5495	}
5496
5497	if invalidParams.Len() > 0 {
5498		return invalidParams
5499	}
5500	return nil
5501}
5502
5503// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
5504func (s *AuthorizeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
5505	s.CacheSecurityGroupName = &v
5506	return s
5507}
5508
5509// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
5510func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
5511	s.EC2SecurityGroupName = &v
5512	return s
5513}
5514
5515// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
5516func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeCacheSecurityGroupIngressInput {
5517	s.EC2SecurityGroupOwnerId = &v
5518	return s
5519}
5520
5521type AuthorizeCacheSecurityGroupIngressOutput struct {
5522	_ struct{} `type:"structure"`
5523
5524	// Represents the output of one of the following operations:
5525	//
5526	//    * AuthorizeCacheSecurityGroupIngress
5527	//
5528	//    * CreateCacheSecurityGroup
5529	//
5530	//    * RevokeCacheSecurityGroupIngress
5531	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
5532}
5533
5534// String returns the string representation
5535func (s AuthorizeCacheSecurityGroupIngressOutput) String() string {
5536	return awsutil.Prettify(s)
5537}
5538
5539// GoString returns the string representation
5540func (s AuthorizeCacheSecurityGroupIngressOutput) GoString() string {
5541	return s.String()
5542}
5543
5544// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
5545func (s *AuthorizeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *AuthorizeCacheSecurityGroupIngressOutput {
5546	s.CacheSecurityGroup = v
5547	return s
5548}
5549
5550// Describes an Availability Zone in which the cluster is launched.
5551type AvailabilityZone struct {
5552	_ struct{} `type:"structure"`
5553
5554	// The name of the Availability Zone.
5555	Name *string `type:"string"`
5556}
5557
5558// String returns the string representation
5559func (s AvailabilityZone) String() string {
5560	return awsutil.Prettify(s)
5561}
5562
5563// GoString returns the string representation
5564func (s AvailabilityZone) GoString() string {
5565	return s.String()
5566}
5567
5568// SetName sets the Name field's value.
5569func (s *AvailabilityZone) SetName(v string) *AvailabilityZone {
5570	s.Name = &v
5571	return s
5572}
5573
5574type BatchApplyUpdateActionInput struct {
5575	_ struct{} `type:"structure"`
5576
5577	// The replication group IDs
5578	//
5579	// ReplicationGroupIds is a required field
5580	ReplicationGroupIds []*string `type:"list" required:"true"`
5581
5582	// The unique ID of the service update
5583	//
5584	// ServiceUpdateName is a required field
5585	ServiceUpdateName *string `type:"string" required:"true"`
5586}
5587
5588// String returns the string representation
5589func (s BatchApplyUpdateActionInput) String() string {
5590	return awsutil.Prettify(s)
5591}
5592
5593// GoString returns the string representation
5594func (s BatchApplyUpdateActionInput) GoString() string {
5595	return s.String()
5596}
5597
5598// Validate inspects the fields of the type to determine if they are valid.
5599func (s *BatchApplyUpdateActionInput) Validate() error {
5600	invalidParams := request.ErrInvalidParams{Context: "BatchApplyUpdateActionInput"}
5601	if s.ReplicationGroupIds == nil {
5602		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupIds"))
5603	}
5604	if s.ServiceUpdateName == nil {
5605		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
5606	}
5607
5608	if invalidParams.Len() > 0 {
5609		return invalidParams
5610	}
5611	return nil
5612}
5613
5614// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
5615func (s *BatchApplyUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchApplyUpdateActionInput {
5616	s.ReplicationGroupIds = v
5617	return s
5618}
5619
5620// SetServiceUpdateName sets the ServiceUpdateName field's value.
5621func (s *BatchApplyUpdateActionInput) SetServiceUpdateName(v string) *BatchApplyUpdateActionInput {
5622	s.ServiceUpdateName = &v
5623	return s
5624}
5625
5626type BatchApplyUpdateActionOutput struct {
5627	_ struct{} `type:"structure"`
5628
5629	// Update actions that have been processed successfully
5630	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
5631
5632	// Update actions that haven't been processed successfully
5633	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
5634}
5635
5636// String returns the string representation
5637func (s BatchApplyUpdateActionOutput) String() string {
5638	return awsutil.Prettify(s)
5639}
5640
5641// GoString returns the string representation
5642func (s BatchApplyUpdateActionOutput) GoString() string {
5643	return s.String()
5644}
5645
5646// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
5647func (s *BatchApplyUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchApplyUpdateActionOutput {
5648	s.ProcessedUpdateActions = v
5649	return s
5650}
5651
5652// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
5653func (s *BatchApplyUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchApplyUpdateActionOutput {
5654	s.UnprocessedUpdateActions = v
5655	return s
5656}
5657
5658type BatchStopUpdateActionInput struct {
5659	_ struct{} `type:"structure"`
5660
5661	// The replication group IDs
5662	//
5663	// ReplicationGroupIds is a required field
5664	ReplicationGroupIds []*string `type:"list" required:"true"`
5665
5666	// The unique ID of the service update
5667	//
5668	// ServiceUpdateName is a required field
5669	ServiceUpdateName *string `type:"string" required:"true"`
5670}
5671
5672// String returns the string representation
5673func (s BatchStopUpdateActionInput) String() string {
5674	return awsutil.Prettify(s)
5675}
5676
5677// GoString returns the string representation
5678func (s BatchStopUpdateActionInput) GoString() string {
5679	return s.String()
5680}
5681
5682// Validate inspects the fields of the type to determine if they are valid.
5683func (s *BatchStopUpdateActionInput) Validate() error {
5684	invalidParams := request.ErrInvalidParams{Context: "BatchStopUpdateActionInput"}
5685	if s.ReplicationGroupIds == nil {
5686		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupIds"))
5687	}
5688	if s.ServiceUpdateName == nil {
5689		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
5690	}
5691
5692	if invalidParams.Len() > 0 {
5693		return invalidParams
5694	}
5695	return nil
5696}
5697
5698// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
5699func (s *BatchStopUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchStopUpdateActionInput {
5700	s.ReplicationGroupIds = v
5701	return s
5702}
5703
5704// SetServiceUpdateName sets the ServiceUpdateName field's value.
5705func (s *BatchStopUpdateActionInput) SetServiceUpdateName(v string) *BatchStopUpdateActionInput {
5706	s.ServiceUpdateName = &v
5707	return s
5708}
5709
5710type BatchStopUpdateActionOutput struct {
5711	_ struct{} `type:"structure"`
5712
5713	// Update actions that have been processed successfully
5714	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
5715
5716	// Update actions that haven't been processed successfully
5717	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
5718}
5719
5720// String returns the string representation
5721func (s BatchStopUpdateActionOutput) String() string {
5722	return awsutil.Prettify(s)
5723}
5724
5725// GoString returns the string representation
5726func (s BatchStopUpdateActionOutput) GoString() string {
5727	return s.String()
5728}
5729
5730// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
5731func (s *BatchStopUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchStopUpdateActionOutput {
5732	s.ProcessedUpdateActions = v
5733	return s
5734}
5735
5736// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
5737func (s *BatchStopUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchStopUpdateActionOutput {
5738	s.UnprocessedUpdateActions = v
5739	return s
5740}
5741
5742// Contains all of the attributes of a specific cluster.
5743type CacheCluster struct {
5744	_ struct{} `type:"structure"`
5745
5746	// A flag that enables encryption at-rest when set to true.
5747	//
5748	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
5749	// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
5750	// to true when you create a cluster.
5751	//
5752	// Required: Only available when creating a replication group in an Amazon VPC
5753	// using redis version 3.2.6, 4.x or later.
5754	//
5755	// Default: false
5756	AtRestEncryptionEnabled *bool `type:"boolean"`
5757
5758	// A flag that enables using an AuthToken (password) when issuing Redis commands.
5759	//
5760	// Default: false
5761	AuthTokenEnabled *bool `type:"boolean"`
5762
5763	// This parameter is currently disabled.
5764	AutoMinorVersionUpgrade *bool `type:"boolean"`
5765
5766	// The date and time when the cluster was created.
5767	CacheClusterCreateTime *time.Time `type:"timestamp"`
5768
5769	// The user-supplied identifier of the cluster. This identifier is a unique
5770	// key that identifies a cluster.
5771	CacheClusterId *string `type:"string"`
5772
5773	// The current state of this cluster, one of the following values: available,
5774	// creating, deleted, deleting, incompatible-network, modifying, rebooting cluster
5775	// nodes, restore-failed, or snapshotting.
5776	CacheClusterStatus *string `type:"string"`
5777
5778	// The name of the compute and memory capacity node type for the cluster.
5779	//
5780	// The following node types are supported by ElastiCache. Generally speaking,
5781	// the current generation types provide more memory and computational power
5782	// at lower cost when compared to their equivalent previous generation counterparts.
5783	//
5784	//    * General purpose: Current generation: M5 node types: cache.m5.large,
5785	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
5786	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
5787	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
5788	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
5789	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
5790	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
5791	//    cache.m3.2xlarge
5792	//
5793	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
5794	//    cache.c1.xlarge
5795	//
5796	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
5797	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
5798	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
5799	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
5800	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
5801	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
5802	//    cache.r3.8xlarge
5803	//
5804	// Additional node type info
5805	//
5806	//    * All current generation instance types are created in Amazon VPC by default.
5807	//
5808	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
5809	//
5810	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
5811	//
5812	//    * Redis configuration variables appendonly and appendfsync are not supported
5813	//    on Redis version 2.8.22 and later.
5814	CacheNodeType *string `type:"string"`
5815
5816	// A list of cache nodes that are members of the cluster.
5817	CacheNodes []*CacheNode `locationNameList:"CacheNode" type:"list"`
5818
5819	// Status of the cache parameter group.
5820	CacheParameterGroup *CacheParameterGroupStatus `type:"structure"`
5821
5822	// A list of cache security group elements, composed of name and status sub-elements.
5823	CacheSecurityGroups []*CacheSecurityGroupMembership `locationNameList:"CacheSecurityGroup" type:"list"`
5824
5825	// The name of the cache subnet group associated with the cluster.
5826	CacheSubnetGroupName *string `type:"string"`
5827
5828	// The URL of the web page where you can download the latest ElastiCache client
5829	// library.
5830	ClientDownloadLandingPage *string `type:"string"`
5831
5832	// Represents a Memcached cluster endpoint which, if Automatic Discovery is
5833	// enabled on the cluster, can be used by an application to connect to any node
5834	// in the cluster. The configuration endpoint will always have .cfg in it.
5835	//
5836	// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
5837	ConfigurationEndpoint *Endpoint `type:"structure"`
5838
5839	// The name of the cache engine (memcached or redis) to be used for this cluster.
5840	Engine *string `type:"string"`
5841
5842	// The version of the cache engine that is used in this cluster.
5843	EngineVersion *string `type:"string"`
5844
5845	// Describes a notification topic and its status. Notification topics are used
5846	// for publishing ElastiCache events to subscribers using Amazon Simple Notification
5847	// Service (SNS).
5848	NotificationConfiguration *NotificationConfiguration `type:"structure"`
5849
5850	// The number of cache nodes in the cluster.
5851	//
5852	// For clusters running Redis, this value must be 1. For clusters running Memcached,
5853	// this value must be between 1 and 20.
5854	NumCacheNodes *int64 `type:"integer"`
5855
5856	// A group of settings that are applied to the cluster in the future, or that
5857	// are currently being applied.
5858	PendingModifiedValues *PendingModifiedValues `type:"structure"`
5859
5860	// The name of the Availability Zone in which the cluster is located or "Multiple"
5861	// if the cache nodes are located in different Availability Zones.
5862	PreferredAvailabilityZone *string `type:"string"`
5863
5864	// Specifies the weekly time range during which maintenance on the cluster is
5865	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
5866	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
5867	//
5868	// Valid values for ddd are:
5869	//
5870	//    * sun
5871	//
5872	//    * mon
5873	//
5874	//    * tue
5875	//
5876	//    * wed
5877	//
5878	//    * thu
5879	//
5880	//    * fri
5881	//
5882	//    * sat
5883	//
5884	// Example: sun:23:00-mon:01:30
5885	PreferredMaintenanceWindow *string `type:"string"`
5886
5887	// The replication group to which this cluster belongs. If this field is empty,
5888	// the cluster is not associated with any replication group.
5889	ReplicationGroupId *string `type:"string"`
5890
5891	// A list of VPC Security Groups associated with the cluster.
5892	SecurityGroups []*SecurityGroupMembership `type:"list"`
5893
5894	// The number of days for which ElastiCache retains automatic cluster snapshots
5895	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
5896	// a snapshot that was taken today is retained for 5 days before being deleted.
5897	//
5898	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
5899	// off.
5900	SnapshotRetentionLimit *int64 `type:"integer"`
5901
5902	// The daily time range (in UTC) during which ElastiCache begins taking a daily
5903	// snapshot of your cluster.
5904	//
5905	// Example: 05:00-09:00
5906	SnapshotWindow *string `type:"string"`
5907
5908	// A flag that enables in-transit encryption when set to true.
5909	//
5910	// You cannot modify the value of TransitEncryptionEnabled after the cluster
5911	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
5912	// to true when you create a cluster.
5913	//
5914	// Required: Only available when creating a replication group in an Amazon VPC
5915	// using redis version 3.2.6, 4.x or later.
5916	//
5917	// Default: false
5918	TransitEncryptionEnabled *bool `type:"boolean"`
5919}
5920
5921// String returns the string representation
5922func (s CacheCluster) String() string {
5923	return awsutil.Prettify(s)
5924}
5925
5926// GoString returns the string representation
5927func (s CacheCluster) GoString() string {
5928	return s.String()
5929}
5930
5931// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
5932func (s *CacheCluster) SetAtRestEncryptionEnabled(v bool) *CacheCluster {
5933	s.AtRestEncryptionEnabled = &v
5934	return s
5935}
5936
5937// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
5938func (s *CacheCluster) SetAuthTokenEnabled(v bool) *CacheCluster {
5939	s.AuthTokenEnabled = &v
5940	return s
5941}
5942
5943// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
5944func (s *CacheCluster) SetAutoMinorVersionUpgrade(v bool) *CacheCluster {
5945	s.AutoMinorVersionUpgrade = &v
5946	return s
5947}
5948
5949// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
5950func (s *CacheCluster) SetCacheClusterCreateTime(v time.Time) *CacheCluster {
5951	s.CacheClusterCreateTime = &v
5952	return s
5953}
5954
5955// SetCacheClusterId sets the CacheClusterId field's value.
5956func (s *CacheCluster) SetCacheClusterId(v string) *CacheCluster {
5957	s.CacheClusterId = &v
5958	return s
5959}
5960
5961// SetCacheClusterStatus sets the CacheClusterStatus field's value.
5962func (s *CacheCluster) SetCacheClusterStatus(v string) *CacheCluster {
5963	s.CacheClusterStatus = &v
5964	return s
5965}
5966
5967// SetCacheNodeType sets the CacheNodeType field's value.
5968func (s *CacheCluster) SetCacheNodeType(v string) *CacheCluster {
5969	s.CacheNodeType = &v
5970	return s
5971}
5972
5973// SetCacheNodes sets the CacheNodes field's value.
5974func (s *CacheCluster) SetCacheNodes(v []*CacheNode) *CacheCluster {
5975	s.CacheNodes = v
5976	return s
5977}
5978
5979// SetCacheParameterGroup sets the CacheParameterGroup field's value.
5980func (s *CacheCluster) SetCacheParameterGroup(v *CacheParameterGroupStatus) *CacheCluster {
5981	s.CacheParameterGroup = v
5982	return s
5983}
5984
5985// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
5986func (s *CacheCluster) SetCacheSecurityGroups(v []*CacheSecurityGroupMembership) *CacheCluster {
5987	s.CacheSecurityGroups = v
5988	return s
5989}
5990
5991// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
5992func (s *CacheCluster) SetCacheSubnetGroupName(v string) *CacheCluster {
5993	s.CacheSubnetGroupName = &v
5994	return s
5995}
5996
5997// SetClientDownloadLandingPage sets the ClientDownloadLandingPage field's value.
5998func (s *CacheCluster) SetClientDownloadLandingPage(v string) *CacheCluster {
5999	s.ClientDownloadLandingPage = &v
6000	return s
6001}
6002
6003// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
6004func (s *CacheCluster) SetConfigurationEndpoint(v *Endpoint) *CacheCluster {
6005	s.ConfigurationEndpoint = v
6006	return s
6007}
6008
6009// SetEngine sets the Engine field's value.
6010func (s *CacheCluster) SetEngine(v string) *CacheCluster {
6011	s.Engine = &v
6012	return s
6013}
6014
6015// SetEngineVersion sets the EngineVersion field's value.
6016func (s *CacheCluster) SetEngineVersion(v string) *CacheCluster {
6017	s.EngineVersion = &v
6018	return s
6019}
6020
6021// SetNotificationConfiguration sets the NotificationConfiguration field's value.
6022func (s *CacheCluster) SetNotificationConfiguration(v *NotificationConfiguration) *CacheCluster {
6023	s.NotificationConfiguration = v
6024	return s
6025}
6026
6027// SetNumCacheNodes sets the NumCacheNodes field's value.
6028func (s *CacheCluster) SetNumCacheNodes(v int64) *CacheCluster {
6029	s.NumCacheNodes = &v
6030	return s
6031}
6032
6033// SetPendingModifiedValues sets the PendingModifiedValues field's value.
6034func (s *CacheCluster) SetPendingModifiedValues(v *PendingModifiedValues) *CacheCluster {
6035	s.PendingModifiedValues = v
6036	return s
6037}
6038
6039// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
6040func (s *CacheCluster) SetPreferredAvailabilityZone(v string) *CacheCluster {
6041	s.PreferredAvailabilityZone = &v
6042	return s
6043}
6044
6045// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
6046func (s *CacheCluster) SetPreferredMaintenanceWindow(v string) *CacheCluster {
6047	s.PreferredMaintenanceWindow = &v
6048	return s
6049}
6050
6051// SetReplicationGroupId sets the ReplicationGroupId field's value.
6052func (s *CacheCluster) SetReplicationGroupId(v string) *CacheCluster {
6053	s.ReplicationGroupId = &v
6054	return s
6055}
6056
6057// SetSecurityGroups sets the SecurityGroups field's value.
6058func (s *CacheCluster) SetSecurityGroups(v []*SecurityGroupMembership) *CacheCluster {
6059	s.SecurityGroups = v
6060	return s
6061}
6062
6063// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
6064func (s *CacheCluster) SetSnapshotRetentionLimit(v int64) *CacheCluster {
6065	s.SnapshotRetentionLimit = &v
6066	return s
6067}
6068
6069// SetSnapshotWindow sets the SnapshotWindow field's value.
6070func (s *CacheCluster) SetSnapshotWindow(v string) *CacheCluster {
6071	s.SnapshotWindow = &v
6072	return s
6073}
6074
6075// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
6076func (s *CacheCluster) SetTransitEncryptionEnabled(v bool) *CacheCluster {
6077	s.TransitEncryptionEnabled = &v
6078	return s
6079}
6080
6081// Provides all of the details about a particular cache engine version.
6082type CacheEngineVersion struct {
6083	_ struct{} `type:"structure"`
6084
6085	// The description of the cache engine.
6086	CacheEngineDescription *string `type:"string"`
6087
6088	// The description of the cache engine version.
6089	CacheEngineVersionDescription *string `type:"string"`
6090
6091	// The name of the cache parameter group family associated with this cache engine.
6092	//
6093	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
6094	// | redis4.0 | redis5.0 |
6095	CacheParameterGroupFamily *string `type:"string"`
6096
6097	// The name of the cache engine.
6098	Engine *string `type:"string"`
6099
6100	// The version number of the cache engine.
6101	EngineVersion *string `type:"string"`
6102}
6103
6104// String returns the string representation
6105func (s CacheEngineVersion) String() string {
6106	return awsutil.Prettify(s)
6107}
6108
6109// GoString returns the string representation
6110func (s CacheEngineVersion) GoString() string {
6111	return s.String()
6112}
6113
6114// SetCacheEngineDescription sets the CacheEngineDescription field's value.
6115func (s *CacheEngineVersion) SetCacheEngineDescription(v string) *CacheEngineVersion {
6116	s.CacheEngineDescription = &v
6117	return s
6118}
6119
6120// SetCacheEngineVersionDescription sets the CacheEngineVersionDescription field's value.
6121func (s *CacheEngineVersion) SetCacheEngineVersionDescription(v string) *CacheEngineVersion {
6122	s.CacheEngineVersionDescription = &v
6123	return s
6124}
6125
6126// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
6127func (s *CacheEngineVersion) SetCacheParameterGroupFamily(v string) *CacheEngineVersion {
6128	s.CacheParameterGroupFamily = &v
6129	return s
6130}
6131
6132// SetEngine sets the Engine field's value.
6133func (s *CacheEngineVersion) SetEngine(v string) *CacheEngineVersion {
6134	s.Engine = &v
6135	return s
6136}
6137
6138// SetEngineVersion sets the EngineVersion field's value.
6139func (s *CacheEngineVersion) SetEngineVersion(v string) *CacheEngineVersion {
6140	s.EngineVersion = &v
6141	return s
6142}
6143
6144// Represents an individual cache node within a cluster. Each cache node runs
6145// its own instance of the cluster's protocol-compliant caching software - either
6146// Memcached or Redis.
6147//
6148// The following node types are supported by ElastiCache. Generally speaking,
6149// the current generation types provide more memory and computational power
6150// at lower cost when compared to their equivalent previous generation counterparts.
6151//
6152//    * General purpose: Current generation: M5 node types: cache.m5.large,
6153//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
6154//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
6155//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
6156//    cache.t2.medium Previous generation: (not recommended) T1 node types:
6157//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
6158//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
6159//    cache.m3.2xlarge
6160//
6161//    * Compute optimized: Previous generation: (not recommended) C1 node types:
6162//    cache.c1.xlarge
6163//
6164//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
6165//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
6166//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
6167//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
6168//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
6169//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
6170//    cache.r3.8xlarge
6171//
6172// Additional node type info
6173//
6174//    * All current generation instance types are created in Amazon VPC by default.
6175//
6176//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
6177//
6178//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
6179//
6180//    * Redis configuration variables appendonly and appendfsync are not supported
6181//    on Redis version 2.8.22 and later.
6182type CacheNode struct {
6183	_ struct{} `type:"structure"`
6184
6185	// The date and time when the cache node was created.
6186	CacheNodeCreateTime *time.Time `type:"timestamp"`
6187
6188	// The cache node identifier. A node ID is a numeric identifier (0001, 0002,
6189	// etc.). The combination of cluster ID and node ID uniquely identifies every
6190	// cache node used in a customer's AWS account.
6191	CacheNodeId *string `type:"string"`
6192
6193	// The current state of this cache node.
6194	CacheNodeStatus *string `type:"string"`
6195
6196	// The Availability Zone where this node was created and now resides.
6197	CustomerAvailabilityZone *string `type:"string"`
6198
6199	// The hostname for connecting to this cache node.
6200	Endpoint *Endpoint `type:"structure"`
6201
6202	// The status of the parameter group applied to this cache node.
6203	ParameterGroupStatus *string `type:"string"`
6204
6205	// The ID of the primary node to which this read replica node is synchronized.
6206	// If this field is empty, this node is not associated with a primary cluster.
6207	SourceCacheNodeId *string `type:"string"`
6208}
6209
6210// String returns the string representation
6211func (s CacheNode) String() string {
6212	return awsutil.Prettify(s)
6213}
6214
6215// GoString returns the string representation
6216func (s CacheNode) GoString() string {
6217	return s.String()
6218}
6219
6220// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
6221func (s *CacheNode) SetCacheNodeCreateTime(v time.Time) *CacheNode {
6222	s.CacheNodeCreateTime = &v
6223	return s
6224}
6225
6226// SetCacheNodeId sets the CacheNodeId field's value.
6227func (s *CacheNode) SetCacheNodeId(v string) *CacheNode {
6228	s.CacheNodeId = &v
6229	return s
6230}
6231
6232// SetCacheNodeStatus sets the CacheNodeStatus field's value.
6233func (s *CacheNode) SetCacheNodeStatus(v string) *CacheNode {
6234	s.CacheNodeStatus = &v
6235	return s
6236}
6237
6238// SetCustomerAvailabilityZone sets the CustomerAvailabilityZone field's value.
6239func (s *CacheNode) SetCustomerAvailabilityZone(v string) *CacheNode {
6240	s.CustomerAvailabilityZone = &v
6241	return s
6242}
6243
6244// SetEndpoint sets the Endpoint field's value.
6245func (s *CacheNode) SetEndpoint(v *Endpoint) *CacheNode {
6246	s.Endpoint = v
6247	return s
6248}
6249
6250// SetParameterGroupStatus sets the ParameterGroupStatus field's value.
6251func (s *CacheNode) SetParameterGroupStatus(v string) *CacheNode {
6252	s.ParameterGroupStatus = &v
6253	return s
6254}
6255
6256// SetSourceCacheNodeId sets the SourceCacheNodeId field's value.
6257func (s *CacheNode) SetSourceCacheNodeId(v string) *CacheNode {
6258	s.SourceCacheNodeId = &v
6259	return s
6260}
6261
6262// A parameter that has a different value for each cache node type it is applied
6263// to. For example, in a Redis cluster, a cache.m1.large cache node type would
6264// have a larger maxmemory value than a cache.m1.small type.
6265type CacheNodeTypeSpecificParameter struct {
6266	_ struct{} `type:"structure"`
6267
6268	// The valid range of values for the parameter.
6269	AllowedValues *string `type:"string"`
6270
6271	// A list of cache node types and their corresponding values for this parameter.
6272	CacheNodeTypeSpecificValues []*CacheNodeTypeSpecificValue `locationNameList:"CacheNodeTypeSpecificValue" type:"list"`
6273
6274	// Indicates whether a change to the parameter is applied immediately or requires
6275	// a reboot for the change to be applied. You can force a reboot or wait until
6276	// the next maintenance window's reboot. For more information, see Rebooting
6277	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
6278	ChangeType *string `type:"string" enum:"ChangeType"`
6279
6280	// The valid data type for the parameter.
6281	DataType *string `type:"string"`
6282
6283	// A description of the parameter.
6284	Description *string `type:"string"`
6285
6286	// Indicates whether (true) or not (false) the parameter can be modified. Some
6287	// parameters have security or operational implications that prevent them from
6288	// being changed.
6289	IsModifiable *bool `type:"boolean"`
6290
6291	// The earliest cache engine version to which the parameter can apply.
6292	MinimumEngineVersion *string `type:"string"`
6293
6294	// The name of the parameter.
6295	ParameterName *string `type:"string"`
6296
6297	// The source of the parameter value.
6298	Source *string `type:"string"`
6299}
6300
6301// String returns the string representation
6302func (s CacheNodeTypeSpecificParameter) String() string {
6303	return awsutil.Prettify(s)
6304}
6305
6306// GoString returns the string representation
6307func (s CacheNodeTypeSpecificParameter) GoString() string {
6308	return s.String()
6309}
6310
6311// SetAllowedValues sets the AllowedValues field's value.
6312func (s *CacheNodeTypeSpecificParameter) SetAllowedValues(v string) *CacheNodeTypeSpecificParameter {
6313	s.AllowedValues = &v
6314	return s
6315}
6316
6317// SetCacheNodeTypeSpecificValues sets the CacheNodeTypeSpecificValues field's value.
6318func (s *CacheNodeTypeSpecificParameter) SetCacheNodeTypeSpecificValues(v []*CacheNodeTypeSpecificValue) *CacheNodeTypeSpecificParameter {
6319	s.CacheNodeTypeSpecificValues = v
6320	return s
6321}
6322
6323// SetChangeType sets the ChangeType field's value.
6324func (s *CacheNodeTypeSpecificParameter) SetChangeType(v string) *CacheNodeTypeSpecificParameter {
6325	s.ChangeType = &v
6326	return s
6327}
6328
6329// SetDataType sets the DataType field's value.
6330func (s *CacheNodeTypeSpecificParameter) SetDataType(v string) *CacheNodeTypeSpecificParameter {
6331	s.DataType = &v
6332	return s
6333}
6334
6335// SetDescription sets the Description field's value.
6336func (s *CacheNodeTypeSpecificParameter) SetDescription(v string) *CacheNodeTypeSpecificParameter {
6337	s.Description = &v
6338	return s
6339}
6340
6341// SetIsModifiable sets the IsModifiable field's value.
6342func (s *CacheNodeTypeSpecificParameter) SetIsModifiable(v bool) *CacheNodeTypeSpecificParameter {
6343	s.IsModifiable = &v
6344	return s
6345}
6346
6347// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
6348func (s *CacheNodeTypeSpecificParameter) SetMinimumEngineVersion(v string) *CacheNodeTypeSpecificParameter {
6349	s.MinimumEngineVersion = &v
6350	return s
6351}
6352
6353// SetParameterName sets the ParameterName field's value.
6354func (s *CacheNodeTypeSpecificParameter) SetParameterName(v string) *CacheNodeTypeSpecificParameter {
6355	s.ParameterName = &v
6356	return s
6357}
6358
6359// SetSource sets the Source field's value.
6360func (s *CacheNodeTypeSpecificParameter) SetSource(v string) *CacheNodeTypeSpecificParameter {
6361	s.Source = &v
6362	return s
6363}
6364
6365// A value that applies only to a certain cache node type.
6366type CacheNodeTypeSpecificValue struct {
6367	_ struct{} `type:"structure"`
6368
6369	// The cache node type for which this value applies.
6370	CacheNodeType *string `type:"string"`
6371
6372	// The value for the cache node type.
6373	Value *string `type:"string"`
6374}
6375
6376// String returns the string representation
6377func (s CacheNodeTypeSpecificValue) String() string {
6378	return awsutil.Prettify(s)
6379}
6380
6381// GoString returns the string representation
6382func (s CacheNodeTypeSpecificValue) GoString() string {
6383	return s.String()
6384}
6385
6386// SetCacheNodeType sets the CacheNodeType field's value.
6387func (s *CacheNodeTypeSpecificValue) SetCacheNodeType(v string) *CacheNodeTypeSpecificValue {
6388	s.CacheNodeType = &v
6389	return s
6390}
6391
6392// SetValue sets the Value field's value.
6393func (s *CacheNodeTypeSpecificValue) SetValue(v string) *CacheNodeTypeSpecificValue {
6394	s.Value = &v
6395	return s
6396}
6397
6398// Represents the output of a CreateCacheParameterGroup operation.
6399type CacheParameterGroup struct {
6400	_ struct{} `type:"structure"`
6401
6402	// The name of the cache parameter group family that this cache parameter group
6403	// is compatible with.
6404	//
6405	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
6406	// | redis4.0 | redis5.0 |
6407	CacheParameterGroupFamily *string `type:"string"`
6408
6409	// The name of the cache parameter group.
6410	CacheParameterGroupName *string `type:"string"`
6411
6412	// The description for this cache parameter group.
6413	Description *string `type:"string"`
6414}
6415
6416// String returns the string representation
6417func (s CacheParameterGroup) String() string {
6418	return awsutil.Prettify(s)
6419}
6420
6421// GoString returns the string representation
6422func (s CacheParameterGroup) GoString() string {
6423	return s.String()
6424}
6425
6426// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
6427func (s *CacheParameterGroup) SetCacheParameterGroupFamily(v string) *CacheParameterGroup {
6428	s.CacheParameterGroupFamily = &v
6429	return s
6430}
6431
6432// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
6433func (s *CacheParameterGroup) SetCacheParameterGroupName(v string) *CacheParameterGroup {
6434	s.CacheParameterGroupName = &v
6435	return s
6436}
6437
6438// SetDescription sets the Description field's value.
6439func (s *CacheParameterGroup) SetDescription(v string) *CacheParameterGroup {
6440	s.Description = &v
6441	return s
6442}
6443
6444// Represents the output of one of the following operations:
6445//
6446//    * ModifyCacheParameterGroup
6447//
6448//    * ResetCacheParameterGroup
6449type CacheParameterGroupNameMessage struct {
6450	_ struct{} `type:"structure"`
6451
6452	// The name of the cache parameter group.
6453	CacheParameterGroupName *string `type:"string"`
6454}
6455
6456// String returns the string representation
6457func (s CacheParameterGroupNameMessage) String() string {
6458	return awsutil.Prettify(s)
6459}
6460
6461// GoString returns the string representation
6462func (s CacheParameterGroupNameMessage) GoString() string {
6463	return s.String()
6464}
6465
6466// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
6467func (s *CacheParameterGroupNameMessage) SetCacheParameterGroupName(v string) *CacheParameterGroupNameMessage {
6468	s.CacheParameterGroupName = &v
6469	return s
6470}
6471
6472// Status of the cache parameter group.
6473type CacheParameterGroupStatus struct {
6474	_ struct{} `type:"structure"`
6475
6476	// A list of the cache node IDs which need to be rebooted for parameter changes
6477	// to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
6478	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list"`
6479
6480	// The name of the cache parameter group.
6481	CacheParameterGroupName *string `type:"string"`
6482
6483	// The status of parameter updates.
6484	ParameterApplyStatus *string `type:"string"`
6485}
6486
6487// String returns the string representation
6488func (s CacheParameterGroupStatus) String() string {
6489	return awsutil.Prettify(s)
6490}
6491
6492// GoString returns the string representation
6493func (s CacheParameterGroupStatus) GoString() string {
6494	return s.String()
6495}
6496
6497// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
6498func (s *CacheParameterGroupStatus) SetCacheNodeIdsToReboot(v []*string) *CacheParameterGroupStatus {
6499	s.CacheNodeIdsToReboot = v
6500	return s
6501}
6502
6503// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
6504func (s *CacheParameterGroupStatus) SetCacheParameterGroupName(v string) *CacheParameterGroupStatus {
6505	s.CacheParameterGroupName = &v
6506	return s
6507}
6508
6509// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
6510func (s *CacheParameterGroupStatus) SetParameterApplyStatus(v string) *CacheParameterGroupStatus {
6511	s.ParameterApplyStatus = &v
6512	return s
6513}
6514
6515// Represents the output of one of the following operations:
6516//
6517//    * AuthorizeCacheSecurityGroupIngress
6518//
6519//    * CreateCacheSecurityGroup
6520//
6521//    * RevokeCacheSecurityGroupIngress
6522type CacheSecurityGroup struct {
6523	_ struct{} `type:"structure"`
6524
6525	// The name of the cache security group.
6526	CacheSecurityGroupName *string `type:"string"`
6527
6528	// The description of the cache security group.
6529	Description *string `type:"string"`
6530
6531	// A list of Amazon EC2 security groups that are associated with this cache
6532	// security group.
6533	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`
6534
6535	// The AWS account ID of the cache security group owner.
6536	OwnerId *string `type:"string"`
6537}
6538
6539// String returns the string representation
6540func (s CacheSecurityGroup) String() string {
6541	return awsutil.Prettify(s)
6542}
6543
6544// GoString returns the string representation
6545func (s CacheSecurityGroup) GoString() string {
6546	return s.String()
6547}
6548
6549// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
6550func (s *CacheSecurityGroup) SetCacheSecurityGroupName(v string) *CacheSecurityGroup {
6551	s.CacheSecurityGroupName = &v
6552	return s
6553}
6554
6555// SetDescription sets the Description field's value.
6556func (s *CacheSecurityGroup) SetDescription(v string) *CacheSecurityGroup {
6557	s.Description = &v
6558	return s
6559}
6560
6561// SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
6562func (s *CacheSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *CacheSecurityGroup {
6563	s.EC2SecurityGroups = v
6564	return s
6565}
6566
6567// SetOwnerId sets the OwnerId field's value.
6568func (s *CacheSecurityGroup) SetOwnerId(v string) *CacheSecurityGroup {
6569	s.OwnerId = &v
6570	return s
6571}
6572
6573// Represents a cluster's status within a particular cache security group.
6574type CacheSecurityGroupMembership struct {
6575	_ struct{} `type:"structure"`
6576
6577	// The name of the cache security group.
6578	CacheSecurityGroupName *string `type:"string"`
6579
6580	// The membership status in the cache security group. The status changes when
6581	// a cache security group is modified, or when the cache security groups assigned
6582	// to a cluster are modified.
6583	Status *string `type:"string"`
6584}
6585
6586// String returns the string representation
6587func (s CacheSecurityGroupMembership) String() string {
6588	return awsutil.Prettify(s)
6589}
6590
6591// GoString returns the string representation
6592func (s CacheSecurityGroupMembership) GoString() string {
6593	return s.String()
6594}
6595
6596// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
6597func (s *CacheSecurityGroupMembership) SetCacheSecurityGroupName(v string) *CacheSecurityGroupMembership {
6598	s.CacheSecurityGroupName = &v
6599	return s
6600}
6601
6602// SetStatus sets the Status field's value.
6603func (s *CacheSecurityGroupMembership) SetStatus(v string) *CacheSecurityGroupMembership {
6604	s.Status = &v
6605	return s
6606}
6607
6608// Represents the output of one of the following operations:
6609//
6610//    * CreateCacheSubnetGroup
6611//
6612//    * ModifyCacheSubnetGroup
6613type CacheSubnetGroup struct {
6614	_ struct{} `type:"structure"`
6615
6616	// The description of the cache subnet group.
6617	CacheSubnetGroupDescription *string `type:"string"`
6618
6619	// The name of the cache subnet group.
6620	CacheSubnetGroupName *string `type:"string"`
6621
6622	// A list of subnets associated with the cache subnet group.
6623	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`
6624
6625	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
6626	// group.
6627	VpcId *string `type:"string"`
6628}
6629
6630// String returns the string representation
6631func (s CacheSubnetGroup) String() string {
6632	return awsutil.Prettify(s)
6633}
6634
6635// GoString returns the string representation
6636func (s CacheSubnetGroup) GoString() string {
6637	return s.String()
6638}
6639
6640// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
6641func (s *CacheSubnetGroup) SetCacheSubnetGroupDescription(v string) *CacheSubnetGroup {
6642	s.CacheSubnetGroupDescription = &v
6643	return s
6644}
6645
6646// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
6647func (s *CacheSubnetGroup) SetCacheSubnetGroupName(v string) *CacheSubnetGroup {
6648	s.CacheSubnetGroupName = &v
6649	return s
6650}
6651
6652// SetSubnets sets the Subnets field's value.
6653func (s *CacheSubnetGroup) SetSubnets(v []*Subnet) *CacheSubnetGroup {
6654	s.Subnets = v
6655	return s
6656}
6657
6658// SetVpcId sets the VpcId field's value.
6659func (s *CacheSubnetGroup) SetVpcId(v string) *CacheSubnetGroup {
6660	s.VpcId = &v
6661	return s
6662}
6663
6664// Node group (shard) configuration options when adding or removing replicas.
6665// Each node group (shard) configuration has the following members: NodeGroupId,
6666// NewReplicaCount, and PreferredAvailabilityZones.
6667type ConfigureShard struct {
6668	_ struct{} `type:"structure"`
6669
6670	// The number of replicas you want in this node group at the end of this operation.
6671	// The maximum value for NewReplicaCount is 5. The minimum value depends upon
6672	// the type of Redis replication group you are working with.
6673	//
6674	// The minimum number of replicas in a shard or replication group is:
6675	//
6676	//    * Redis (cluster mode disabled) If Multi-AZ with Automatic Failover is
6677	//    enabled: 1 If Multi-AZ with Automatic Failover is not enable: 0
6678	//
6679	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
6680	//    to a replica if your primary node fails)
6681	//
6682	// NewReplicaCount is a required field
6683	NewReplicaCount *int64 `type:"integer" required:"true"`
6684
6685	// The 4-digit id for the node group you are configuring. For Redis (cluster
6686	// mode disabled) replication groups, the node group id is always 0001. To find
6687	// a Redis (cluster mode enabled)'s node group's (shard's) id, see Finding a
6688	// Shard's Id (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/shard-find-id.html).
6689	//
6690	// NodeGroupId is a required field
6691	NodeGroupId *string `min:"1" type:"string" required:"true"`
6692
6693	// A list of PreferredAvailabilityZone strings that specify which availability
6694	// zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone
6695	// values must equal the value of NewReplicaCount plus 1 to account for the
6696	// primary node. If this member of ReplicaConfiguration is omitted, ElastiCache
6697	// for Redis selects the availability zone for each of the replicas.
6698	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
6699}
6700
6701// String returns the string representation
6702func (s ConfigureShard) String() string {
6703	return awsutil.Prettify(s)
6704}
6705
6706// GoString returns the string representation
6707func (s ConfigureShard) GoString() string {
6708	return s.String()
6709}
6710
6711// Validate inspects the fields of the type to determine if they are valid.
6712func (s *ConfigureShard) Validate() error {
6713	invalidParams := request.ErrInvalidParams{Context: "ConfigureShard"}
6714	if s.NewReplicaCount == nil {
6715		invalidParams.Add(request.NewErrParamRequired("NewReplicaCount"))
6716	}
6717	if s.NodeGroupId == nil {
6718		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
6719	}
6720	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
6721		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
6722	}
6723
6724	if invalidParams.Len() > 0 {
6725		return invalidParams
6726	}
6727	return nil
6728}
6729
6730// SetNewReplicaCount sets the NewReplicaCount field's value.
6731func (s *ConfigureShard) SetNewReplicaCount(v int64) *ConfigureShard {
6732	s.NewReplicaCount = &v
6733	return s
6734}
6735
6736// SetNodeGroupId sets the NodeGroupId field's value.
6737func (s *ConfigureShard) SetNodeGroupId(v string) *ConfigureShard {
6738	s.NodeGroupId = &v
6739	return s
6740}
6741
6742// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
6743func (s *ConfigureShard) SetPreferredAvailabilityZones(v []*string) *ConfigureShard {
6744	s.PreferredAvailabilityZones = v
6745	return s
6746}
6747
6748// Represents the input of a CopySnapshotMessage operation.
6749type CopySnapshotInput struct {
6750	_ struct{} `type:"structure"`
6751
6752	// The name of an existing snapshot from which to make a copy.
6753	//
6754	// SourceSnapshotName is a required field
6755	SourceSnapshotName *string `type:"string" required:"true"`
6756
6757	// The Amazon S3 bucket to which the snapshot is exported. This parameter is
6758	// used only when exporting a snapshot for external access.
6759	//
6760	// When using this parameter to export a snapshot, be sure Amazon ElastiCache
6761	// has the needed permissions to this S3 bucket. For more information, see Step
6762	// 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)
6763	// in the Amazon ElastiCache User Guide.
6764	//
6765	// For more information, see Exporting a Snapshot (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Snapshots.Exporting.html)
6766	// in the Amazon ElastiCache User Guide.
6767	TargetBucket *string `type:"string"`
6768
6769	// A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot,
6770	// therefore this name must be unique within its context - ElastiCache or an
6771	// Amazon S3 bucket if exporting.
6772	//
6773	// TargetSnapshotName is a required field
6774	TargetSnapshotName *string `type:"string" required:"true"`
6775}
6776
6777// String returns the string representation
6778func (s CopySnapshotInput) String() string {
6779	return awsutil.Prettify(s)
6780}
6781
6782// GoString returns the string representation
6783func (s CopySnapshotInput) GoString() string {
6784	return s.String()
6785}
6786
6787// Validate inspects the fields of the type to determine if they are valid.
6788func (s *CopySnapshotInput) Validate() error {
6789	invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"}
6790	if s.SourceSnapshotName == nil {
6791		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
6792	}
6793	if s.TargetSnapshotName == nil {
6794		invalidParams.Add(request.NewErrParamRequired("TargetSnapshotName"))
6795	}
6796
6797	if invalidParams.Len() > 0 {
6798		return invalidParams
6799	}
6800	return nil
6801}
6802
6803// SetSourceSnapshotName sets the SourceSnapshotName field's value.
6804func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
6805	s.SourceSnapshotName = &v
6806	return s
6807}
6808
6809// SetTargetBucket sets the TargetBucket field's value.
6810func (s *CopySnapshotInput) SetTargetBucket(v string) *CopySnapshotInput {
6811	s.TargetBucket = &v
6812	return s
6813}
6814
6815// SetTargetSnapshotName sets the TargetSnapshotName field's value.
6816func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
6817	s.TargetSnapshotName = &v
6818	return s
6819}
6820
6821type CopySnapshotOutput struct {
6822	_ struct{} `type:"structure"`
6823
6824	// Represents a copy of an entire Redis cluster as of the time when the snapshot
6825	// was taken.
6826	Snapshot *Snapshot `type:"structure"`
6827}
6828
6829// String returns the string representation
6830func (s CopySnapshotOutput) String() string {
6831	return awsutil.Prettify(s)
6832}
6833
6834// GoString returns the string representation
6835func (s CopySnapshotOutput) GoString() string {
6836	return s.String()
6837}
6838
6839// SetSnapshot sets the Snapshot field's value.
6840func (s *CopySnapshotOutput) SetSnapshot(v *Snapshot) *CopySnapshotOutput {
6841	s.Snapshot = v
6842	return s
6843}
6844
6845// Represents the input of a CreateCacheCluster operation.
6846type CreateCacheClusterInput struct {
6847	_ struct{} `type:"structure"`
6848
6849	// Specifies whether the nodes in this Memcached cluster are created in a single
6850	// Availability Zone or created across multiple Availability Zones in the cluster's
6851	// region.
6852	//
6853	// This parameter is only supported for Memcached clusters.
6854	//
6855	// If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache
6856	// assumes single-az mode.
6857	AZMode *string `type:"string" enum:"AZMode"`
6858
6859	// Reserved parameter. The password used to access a password protected server.
6860	//
6861	// Password constraints:
6862	//
6863	//    * Must be only printable ASCII characters.
6864	//
6865	//    * Must be at least 16 characters and no more than 128 characters in length.
6866	//
6867	//    * Cannot contain any of the following characters: '/', '"', or '@'.
6868	//
6869	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
6870	// http://redis.io/commands/AUTH.
6871	AuthToken *string `type:"string"`
6872
6873	// This parameter is currently disabled.
6874	AutoMinorVersionUpgrade *bool `type:"boolean"`
6875
6876	// The node group (shard) identifier. This parameter is stored as a lowercase
6877	// string.
6878	//
6879	// Constraints:
6880	//
6881	//    * A name must contain from 1 to 20 alphanumeric characters or hyphens.
6882	//
6883	//    * The first character must be a letter.
6884	//
6885	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
6886	//
6887	// CacheClusterId is a required field
6888	CacheClusterId *string `type:"string" required:"true"`
6889
6890	// The compute and memory capacity of the nodes in the node group (shard).
6891	//
6892	// The following node types are supported by ElastiCache. Generally speaking,
6893	// the current generation types provide more memory and computational power
6894	// at lower cost when compared to their equivalent previous generation counterparts.
6895	//
6896	//    * General purpose: Current generation: M5 node types: cache.m5.large,
6897	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
6898	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
6899	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
6900	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
6901	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
6902	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
6903	//    cache.m3.2xlarge
6904	//
6905	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
6906	//    cache.c1.xlarge
6907	//
6908	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
6909	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
6910	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
6911	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
6912	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
6913	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
6914	//    cache.r3.8xlarge
6915	//
6916	// Additional node type info
6917	//
6918	//    * All current generation instance types are created in Amazon VPC by default.
6919	//
6920	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
6921	//
6922	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
6923	//
6924	//    * Redis configuration variables appendonly and appendfsync are not supported
6925	//    on Redis version 2.8.22 and later.
6926	CacheNodeType *string `type:"string"`
6927
6928	// The name of the parameter group to associate with this cluster. If this argument
6929	// is omitted, the default parameter group for the specified engine is used.
6930	// You cannot use any parameter group which has cluster-enabled='yes' when creating
6931	// a cluster.
6932	CacheParameterGroupName *string `type:"string"`
6933
6934	// A list of security group names to associate with this cluster.
6935	//
6936	// Use this parameter only when you are creating a cluster outside of an Amazon
6937	// Virtual Private Cloud (Amazon VPC).
6938	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
6939
6940	// The name of the subnet group to be used for the cluster.
6941	//
6942	// Use this parameter only when you are creating a cluster in an Amazon Virtual
6943	// Private Cloud (Amazon VPC).
6944	//
6945	// If you're going to launch your cluster in an Amazon VPC, you need to create
6946	// a subnet group before you start creating a cluster. For more information,
6947	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
6948	CacheSubnetGroupName *string `type:"string"`
6949
6950	// The name of the cache engine to be used for this cluster.
6951	//
6952	// Valid values for this parameter are: memcached | redis
6953	Engine *string `type:"string"`
6954
6955	// The version number of the cache engine to be used for this cluster. To view
6956	// the supported cache engine versions, use the DescribeCacheEngineVersions
6957	// operation.
6958	//
6959	// Important: You can upgrade to a newer engine version (see Selecting a Cache
6960	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
6961	// but you cannot downgrade to an earlier engine version. If you want to use
6962	// an earlier engine version, you must delete the existing cluster or replication
6963	// group and create it anew with the earlier engine version.
6964	EngineVersion *string `type:"string"`
6965
6966	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
6967	// (SNS) topic to which notifications are sent.
6968	//
6969	// The Amazon SNS topic owner must be the same as the cluster owner.
6970	NotificationTopicArn *string `type:"string"`
6971
6972	// The initial number of cache nodes that the cluster has.
6973	//
6974	// For clusters running Redis, this value must be 1. For clusters running Memcached,
6975	// this value must be between 1 and 20.
6976	//
6977	// If you need more than 20 nodes for your Memcached cluster, please fill out
6978	// the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/
6979	// (http://aws.amazon.com/contact-us/elasticache-node-limit-request/).
6980	NumCacheNodes *int64 `type:"integer"`
6981
6982	// The port number on which each of the cache nodes accepts connections.
6983	Port *int64 `type:"integer"`
6984
6985	// The EC2 Availability Zone in which the cluster is created.
6986	//
6987	// All nodes belonging to this Memcached cluster are placed in the preferred
6988	// Availability Zone. If you want to create your nodes across multiple Availability
6989	// Zones, use PreferredAvailabilityZones.
6990	//
6991	// Default: System chosen Availability Zone.
6992	PreferredAvailabilityZone *string `type:"string"`
6993
6994	// A list of the Availability Zones in which cache nodes are created. The order
6995	// of the zones in the list is not important.
6996	//
6997	// This option is only supported on Memcached.
6998	//
6999	// If you are creating your cluster in an Amazon VPC (recommended) you can only
7000	// locate nodes in Availability Zones that are associated with the subnets in
7001	// the selected subnet group.
7002	//
7003	// The number of Availability Zones listed must equal the value of NumCacheNodes.
7004	//
7005	// If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone
7006	// instead, or repeat the Availability Zone multiple times in the list.
7007	//
7008	// Default: System chosen Availability Zones.
7009	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
7010
7011	// Specifies the weekly time range during which maintenance on the cluster is
7012	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
7013	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
7014	// values for ddd are:
7015	//
7016	// Specifies the weekly time range during which maintenance on the cluster is
7017	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
7018	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
7019	//
7020	// Valid values for ddd are:
7021	//
7022	//    * sun
7023	//
7024	//    * mon
7025	//
7026	//    * tue
7027	//
7028	//    * wed
7029	//
7030	//    * thu
7031	//
7032	//    * fri
7033	//
7034	//    * sat
7035	//
7036	// Example: sun:23:00-mon:01:30
7037	PreferredMaintenanceWindow *string `type:"string"`
7038
7039	// The ID of the replication group to which this cluster should belong. If this
7040	// parameter is specified, the cluster is added to the specified replication
7041	// group as a read replica; otherwise, the cluster is a standalone primary that
7042	// is not part of any replication group.
7043	//
7044	// If the specified replication group is Multi-AZ enabled and the Availability
7045	// Zone is not specified, the cluster is created in Availability Zones that
7046	// provide the best spread of read replicas across Availability Zones.
7047	//
7048	// This parameter is only valid if the Engine parameter is redis.
7049	ReplicationGroupId *string `type:"string"`
7050
7051	// One or more VPC security groups associated with the cluster.
7052	//
7053	// Use this parameter only when you are creating a cluster in an Amazon Virtual
7054	// Private Cloud (Amazon VPC).
7055	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
7056
7057	// A single-element string list containing an Amazon Resource Name (ARN) that
7058	// uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot
7059	// file is used to populate the node group (shard). The Amazon S3 object name
7060	// in the ARN cannot contain any commas.
7061	//
7062	// This parameter is only valid if the Engine parameter is redis.
7063	//
7064	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
7065	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
7066
7067	// The name of a Redis snapshot from which to restore data into the new node
7068	// group (shard). The snapshot status changes to restoring while the new node
7069	// group (shard) is being created.
7070	//
7071	// This parameter is only valid if the Engine parameter is redis.
7072	SnapshotName *string `type:"string"`
7073
7074	// The number of days for which ElastiCache retains automatic snapshots before
7075	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
7076	// taken today is retained for 5 days before being deleted.
7077	//
7078	// This parameter is only valid if the Engine parameter is redis.
7079	//
7080	// Default: 0 (i.e., automatic backups are disabled for this cache cluster).
7081	SnapshotRetentionLimit *int64 `type:"integer"`
7082
7083	// The daily time range (in UTC) during which ElastiCache begins taking a daily
7084	// snapshot of your node group (shard).
7085	//
7086	// Example: 05:00-09:00
7087	//
7088	// If you do not specify this parameter, ElastiCache automatically chooses an
7089	// appropriate time range.
7090	//
7091	// This parameter is only valid if the Engine parameter is redis.
7092	SnapshotWindow *string `type:"string"`
7093
7094	// A list of cost allocation tags to be added to this resource.
7095	Tags []*Tag `locationNameList:"Tag" type:"list"`
7096}
7097
7098// String returns the string representation
7099func (s CreateCacheClusterInput) String() string {
7100	return awsutil.Prettify(s)
7101}
7102
7103// GoString returns the string representation
7104func (s CreateCacheClusterInput) GoString() string {
7105	return s.String()
7106}
7107
7108// Validate inspects the fields of the type to determine if they are valid.
7109func (s *CreateCacheClusterInput) Validate() error {
7110	invalidParams := request.ErrInvalidParams{Context: "CreateCacheClusterInput"}
7111	if s.CacheClusterId == nil {
7112		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
7113	}
7114
7115	if invalidParams.Len() > 0 {
7116		return invalidParams
7117	}
7118	return nil
7119}
7120
7121// SetAZMode sets the AZMode field's value.
7122func (s *CreateCacheClusterInput) SetAZMode(v string) *CreateCacheClusterInput {
7123	s.AZMode = &v
7124	return s
7125}
7126
7127// SetAuthToken sets the AuthToken field's value.
7128func (s *CreateCacheClusterInput) SetAuthToken(v string) *CreateCacheClusterInput {
7129	s.AuthToken = &v
7130	return s
7131}
7132
7133// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
7134func (s *CreateCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateCacheClusterInput {
7135	s.AutoMinorVersionUpgrade = &v
7136	return s
7137}
7138
7139// SetCacheClusterId sets the CacheClusterId field's value.
7140func (s *CreateCacheClusterInput) SetCacheClusterId(v string) *CreateCacheClusterInput {
7141	s.CacheClusterId = &v
7142	return s
7143}
7144
7145// SetCacheNodeType sets the CacheNodeType field's value.
7146func (s *CreateCacheClusterInput) SetCacheNodeType(v string) *CreateCacheClusterInput {
7147	s.CacheNodeType = &v
7148	return s
7149}
7150
7151// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7152func (s *CreateCacheClusterInput) SetCacheParameterGroupName(v string) *CreateCacheClusterInput {
7153	s.CacheParameterGroupName = &v
7154	return s
7155}
7156
7157// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
7158func (s *CreateCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *CreateCacheClusterInput {
7159	s.CacheSecurityGroupNames = v
7160	return s
7161}
7162
7163// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7164func (s *CreateCacheClusterInput) SetCacheSubnetGroupName(v string) *CreateCacheClusterInput {
7165	s.CacheSubnetGroupName = &v
7166	return s
7167}
7168
7169// SetEngine sets the Engine field's value.
7170func (s *CreateCacheClusterInput) SetEngine(v string) *CreateCacheClusterInput {
7171	s.Engine = &v
7172	return s
7173}
7174
7175// SetEngineVersion sets the EngineVersion field's value.
7176func (s *CreateCacheClusterInput) SetEngineVersion(v string) *CreateCacheClusterInput {
7177	s.EngineVersion = &v
7178	return s
7179}
7180
7181// SetNotificationTopicArn sets the NotificationTopicArn field's value.
7182func (s *CreateCacheClusterInput) SetNotificationTopicArn(v string) *CreateCacheClusterInput {
7183	s.NotificationTopicArn = &v
7184	return s
7185}
7186
7187// SetNumCacheNodes sets the NumCacheNodes field's value.
7188func (s *CreateCacheClusterInput) SetNumCacheNodes(v int64) *CreateCacheClusterInput {
7189	s.NumCacheNodes = &v
7190	return s
7191}
7192
7193// SetPort sets the Port field's value.
7194func (s *CreateCacheClusterInput) SetPort(v int64) *CreateCacheClusterInput {
7195	s.Port = &v
7196	return s
7197}
7198
7199// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
7200func (s *CreateCacheClusterInput) SetPreferredAvailabilityZone(v string) *CreateCacheClusterInput {
7201	s.PreferredAvailabilityZone = &v
7202	return s
7203}
7204
7205// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
7206func (s *CreateCacheClusterInput) SetPreferredAvailabilityZones(v []*string) *CreateCacheClusterInput {
7207	s.PreferredAvailabilityZones = v
7208	return s
7209}
7210
7211// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
7212func (s *CreateCacheClusterInput) SetPreferredMaintenanceWindow(v string) *CreateCacheClusterInput {
7213	s.PreferredMaintenanceWindow = &v
7214	return s
7215}
7216
7217// SetReplicationGroupId sets the ReplicationGroupId field's value.
7218func (s *CreateCacheClusterInput) SetReplicationGroupId(v string) *CreateCacheClusterInput {
7219	s.ReplicationGroupId = &v
7220	return s
7221}
7222
7223// SetSecurityGroupIds sets the SecurityGroupIds field's value.
7224func (s *CreateCacheClusterInput) SetSecurityGroupIds(v []*string) *CreateCacheClusterInput {
7225	s.SecurityGroupIds = v
7226	return s
7227}
7228
7229// SetSnapshotArns sets the SnapshotArns field's value.
7230func (s *CreateCacheClusterInput) SetSnapshotArns(v []*string) *CreateCacheClusterInput {
7231	s.SnapshotArns = v
7232	return s
7233}
7234
7235// SetSnapshotName sets the SnapshotName field's value.
7236func (s *CreateCacheClusterInput) SetSnapshotName(v string) *CreateCacheClusterInput {
7237	s.SnapshotName = &v
7238	return s
7239}
7240
7241// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
7242func (s *CreateCacheClusterInput) SetSnapshotRetentionLimit(v int64) *CreateCacheClusterInput {
7243	s.SnapshotRetentionLimit = &v
7244	return s
7245}
7246
7247// SetSnapshotWindow sets the SnapshotWindow field's value.
7248func (s *CreateCacheClusterInput) SetSnapshotWindow(v string) *CreateCacheClusterInput {
7249	s.SnapshotWindow = &v
7250	return s
7251}
7252
7253// SetTags sets the Tags field's value.
7254func (s *CreateCacheClusterInput) SetTags(v []*Tag) *CreateCacheClusterInput {
7255	s.Tags = v
7256	return s
7257}
7258
7259type CreateCacheClusterOutput struct {
7260	_ struct{} `type:"structure"`
7261
7262	// Contains all of the attributes of a specific cluster.
7263	CacheCluster *CacheCluster `type:"structure"`
7264}
7265
7266// String returns the string representation
7267func (s CreateCacheClusterOutput) String() string {
7268	return awsutil.Prettify(s)
7269}
7270
7271// GoString returns the string representation
7272func (s CreateCacheClusterOutput) GoString() string {
7273	return s.String()
7274}
7275
7276// SetCacheCluster sets the CacheCluster field's value.
7277func (s *CreateCacheClusterOutput) SetCacheCluster(v *CacheCluster) *CreateCacheClusterOutput {
7278	s.CacheCluster = v
7279	return s
7280}
7281
7282// Represents the input of a CreateCacheParameterGroup operation.
7283type CreateCacheParameterGroupInput struct {
7284	_ struct{} `type:"structure"`
7285
7286	// The name of the cache parameter group family that the cache parameter group
7287	// can be used with.
7288	//
7289	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
7290	// | redis4.0 | redis5.0 |
7291	//
7292	// CacheParameterGroupFamily is a required field
7293	CacheParameterGroupFamily *string `type:"string" required:"true"`
7294
7295	// A user-specified name for the cache parameter group.
7296	//
7297	// CacheParameterGroupName is a required field
7298	CacheParameterGroupName *string `type:"string" required:"true"`
7299
7300	// A user-specified description for the cache parameter group.
7301	//
7302	// Description is a required field
7303	Description *string `type:"string" required:"true"`
7304}
7305
7306// String returns the string representation
7307func (s CreateCacheParameterGroupInput) String() string {
7308	return awsutil.Prettify(s)
7309}
7310
7311// GoString returns the string representation
7312func (s CreateCacheParameterGroupInput) GoString() string {
7313	return s.String()
7314}
7315
7316// Validate inspects the fields of the type to determine if they are valid.
7317func (s *CreateCacheParameterGroupInput) Validate() error {
7318	invalidParams := request.ErrInvalidParams{Context: "CreateCacheParameterGroupInput"}
7319	if s.CacheParameterGroupFamily == nil {
7320		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
7321	}
7322	if s.CacheParameterGroupName == nil {
7323		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
7324	}
7325	if s.Description == nil {
7326		invalidParams.Add(request.NewErrParamRequired("Description"))
7327	}
7328
7329	if invalidParams.Len() > 0 {
7330		return invalidParams
7331	}
7332	return nil
7333}
7334
7335// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
7336func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupFamily(v string) *CreateCacheParameterGroupInput {
7337	s.CacheParameterGroupFamily = &v
7338	return s
7339}
7340
7341// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7342func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupName(v string) *CreateCacheParameterGroupInput {
7343	s.CacheParameterGroupName = &v
7344	return s
7345}
7346
7347// SetDescription sets the Description field's value.
7348func (s *CreateCacheParameterGroupInput) SetDescription(v string) *CreateCacheParameterGroupInput {
7349	s.Description = &v
7350	return s
7351}
7352
7353type CreateCacheParameterGroupOutput struct {
7354	_ struct{} `type:"structure"`
7355
7356	// Represents the output of a CreateCacheParameterGroup operation.
7357	CacheParameterGroup *CacheParameterGroup `type:"structure"`
7358}
7359
7360// String returns the string representation
7361func (s CreateCacheParameterGroupOutput) String() string {
7362	return awsutil.Prettify(s)
7363}
7364
7365// GoString returns the string representation
7366func (s CreateCacheParameterGroupOutput) GoString() string {
7367	return s.String()
7368}
7369
7370// SetCacheParameterGroup sets the CacheParameterGroup field's value.
7371func (s *CreateCacheParameterGroupOutput) SetCacheParameterGroup(v *CacheParameterGroup) *CreateCacheParameterGroupOutput {
7372	s.CacheParameterGroup = v
7373	return s
7374}
7375
7376// Represents the input of a CreateCacheSecurityGroup operation.
7377type CreateCacheSecurityGroupInput struct {
7378	_ struct{} `type:"structure"`
7379
7380	// A name for the cache security group. This value is stored as a lowercase
7381	// string.
7382	//
7383	// Constraints: Must contain no more than 255 alphanumeric characters. Cannot
7384	// be the word "Default".
7385	//
7386	// Example: mysecuritygroup
7387	//
7388	// CacheSecurityGroupName is a required field
7389	CacheSecurityGroupName *string `type:"string" required:"true"`
7390
7391	// A description for the cache security group.
7392	//
7393	// Description is a required field
7394	Description *string `type:"string" required:"true"`
7395}
7396
7397// String returns the string representation
7398func (s CreateCacheSecurityGroupInput) String() string {
7399	return awsutil.Prettify(s)
7400}
7401
7402// GoString returns the string representation
7403func (s CreateCacheSecurityGroupInput) GoString() string {
7404	return s.String()
7405}
7406
7407// Validate inspects the fields of the type to determine if they are valid.
7408func (s *CreateCacheSecurityGroupInput) Validate() error {
7409	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSecurityGroupInput"}
7410	if s.CacheSecurityGroupName == nil {
7411		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
7412	}
7413	if s.Description == nil {
7414		invalidParams.Add(request.NewErrParamRequired("Description"))
7415	}
7416
7417	if invalidParams.Len() > 0 {
7418		return invalidParams
7419	}
7420	return nil
7421}
7422
7423// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7424func (s *CreateCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *CreateCacheSecurityGroupInput {
7425	s.CacheSecurityGroupName = &v
7426	return s
7427}
7428
7429// SetDescription sets the Description field's value.
7430func (s *CreateCacheSecurityGroupInput) SetDescription(v string) *CreateCacheSecurityGroupInput {
7431	s.Description = &v
7432	return s
7433}
7434
7435type CreateCacheSecurityGroupOutput struct {
7436	_ struct{} `type:"structure"`
7437
7438	// Represents the output of one of the following operations:
7439	//
7440	//    * AuthorizeCacheSecurityGroupIngress
7441	//
7442	//    * CreateCacheSecurityGroup
7443	//
7444	//    * RevokeCacheSecurityGroupIngress
7445	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
7446}
7447
7448// String returns the string representation
7449func (s CreateCacheSecurityGroupOutput) String() string {
7450	return awsutil.Prettify(s)
7451}
7452
7453// GoString returns the string representation
7454func (s CreateCacheSecurityGroupOutput) GoString() string {
7455	return s.String()
7456}
7457
7458// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
7459func (s *CreateCacheSecurityGroupOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *CreateCacheSecurityGroupOutput {
7460	s.CacheSecurityGroup = v
7461	return s
7462}
7463
7464// Represents the input of a CreateCacheSubnetGroup operation.
7465type CreateCacheSubnetGroupInput struct {
7466	_ struct{} `type:"structure"`
7467
7468	// A description for the cache subnet group.
7469	//
7470	// CacheSubnetGroupDescription is a required field
7471	CacheSubnetGroupDescription *string `type:"string" required:"true"`
7472
7473	// A name for the cache subnet group. This value is stored as a lowercase string.
7474	//
7475	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
7476	//
7477	// Example: mysubnetgroup
7478	//
7479	// CacheSubnetGroupName is a required field
7480	CacheSubnetGroupName *string `type:"string" required:"true"`
7481
7482	// A list of VPC subnet IDs for the cache subnet group.
7483	//
7484	// SubnetIds is a required field
7485	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`
7486}
7487
7488// String returns the string representation
7489func (s CreateCacheSubnetGroupInput) String() string {
7490	return awsutil.Prettify(s)
7491}
7492
7493// GoString returns the string representation
7494func (s CreateCacheSubnetGroupInput) GoString() string {
7495	return s.String()
7496}
7497
7498// Validate inspects the fields of the type to determine if they are valid.
7499func (s *CreateCacheSubnetGroupInput) Validate() error {
7500	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSubnetGroupInput"}
7501	if s.CacheSubnetGroupDescription == nil {
7502		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupDescription"))
7503	}
7504	if s.CacheSubnetGroupName == nil {
7505		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
7506	}
7507	if s.SubnetIds == nil {
7508		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
7509	}
7510
7511	if invalidParams.Len() > 0 {
7512		return invalidParams
7513	}
7514	return nil
7515}
7516
7517// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
7518func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *CreateCacheSubnetGroupInput {
7519	s.CacheSubnetGroupDescription = &v
7520	return s
7521}
7522
7523// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7524func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *CreateCacheSubnetGroupInput {
7525	s.CacheSubnetGroupName = &v
7526	return s
7527}
7528
7529// SetSubnetIds sets the SubnetIds field's value.
7530func (s *CreateCacheSubnetGroupInput) SetSubnetIds(v []*string) *CreateCacheSubnetGroupInput {
7531	s.SubnetIds = v
7532	return s
7533}
7534
7535type CreateCacheSubnetGroupOutput struct {
7536	_ struct{} `type:"structure"`
7537
7538	// Represents the output of one of the following operations:
7539	//
7540	//    * CreateCacheSubnetGroup
7541	//
7542	//    * ModifyCacheSubnetGroup
7543	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
7544}
7545
7546// String returns the string representation
7547func (s CreateCacheSubnetGroupOutput) String() string {
7548	return awsutil.Prettify(s)
7549}
7550
7551// GoString returns the string representation
7552func (s CreateCacheSubnetGroupOutput) GoString() string {
7553	return s.String()
7554}
7555
7556// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
7557func (s *CreateCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *CreateCacheSubnetGroupOutput {
7558	s.CacheSubnetGroup = v
7559	return s
7560}
7561
7562// Represents the input of a CreateReplicationGroup operation.
7563type CreateReplicationGroupInput struct {
7564	_ struct{} `type:"structure"`
7565
7566	// A flag that enables encryption at rest when set to true.
7567	//
7568	// You cannot modify the value of AtRestEncryptionEnabled after the replication
7569	// group is created. To enable encryption at rest on a replication group you
7570	// must set AtRestEncryptionEnabled to true when you create the replication
7571	// group.
7572	//
7573	// Required: Only available when creating a replication group in an Amazon VPC
7574	// using redis version 3.2.6, 4.x or later.
7575	//
7576	// Default: false
7577	AtRestEncryptionEnabled *bool `type:"boolean"`
7578
7579	// Reserved parameter. The password used to access a password protected server.
7580	//
7581	// AuthToken can be specified only on replication groups where TransitEncryptionEnabled
7582	// is true.
7583	//
7584	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
7585	// an AuthToken, and a CacheSubnetGroup.
7586	//
7587	// Password constraints:
7588	//
7589	//    * Must be only printable ASCII characters.
7590	//
7591	//    * Must be at least 16 characters and no more than 128 characters in length.
7592	//
7593	//    * Cannot contain any of the following characters: '/', '"', or '@'.
7594	//
7595	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
7596	// http://redis.io/commands/AUTH.
7597	AuthToken *string `type:"string"`
7598
7599	// This parameter is currently disabled.
7600	AutoMinorVersionUpgrade *bool `type:"boolean"`
7601
7602	// Specifies whether a read-only replica is automatically promoted to read/write
7603	// primary if the existing primary fails.
7604	//
7605	// If true, Multi-AZ is enabled for this replication group. If false, Multi-AZ
7606	// is disabled for this replication group.
7607	//
7608	// AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled)
7609	// replication groups.
7610	//
7611	// Default: false
7612	//
7613	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
7614	// on:
7615	//
7616	//    * Redis versions earlier than 2.8.6.
7617	//
7618	//    * Redis (cluster mode disabled): T1 node types.
7619	//
7620	//    * Redis (cluster mode enabled): T1 node types.
7621	AutomaticFailoverEnabled *bool `type:"boolean"`
7622
7623	// The compute and memory capacity of the nodes in the node group (shard).
7624	//
7625	// The following node types are supported by ElastiCache. Generally speaking,
7626	// the current generation types provide more memory and computational power
7627	// at lower cost when compared to their equivalent previous generation counterparts.
7628	//
7629	//    * General purpose: Current generation: M5 node types: cache.m5.large,
7630	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
7631	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
7632	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
7633	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
7634	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
7635	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
7636	//    cache.m3.2xlarge
7637	//
7638	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
7639	//    cache.c1.xlarge
7640	//
7641	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
7642	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
7643	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
7644	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
7645	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
7646	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
7647	//    cache.r3.8xlarge
7648	//
7649	// Additional node type info
7650	//
7651	//    * All current generation instance types are created in Amazon VPC by default.
7652	//
7653	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
7654	//
7655	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
7656	//
7657	//    * Redis configuration variables appendonly and appendfsync are not supported
7658	//    on Redis version 2.8.22 and later.
7659	CacheNodeType *string `type:"string"`
7660
7661	// The name of the parameter group to associate with this replication group.
7662	// If this argument is omitted, the default cache parameter group for the specified
7663	// engine is used.
7664	//
7665	// If you are restoring to an engine version that is different than the original,
7666	// you must specify the default version of that version. For example, CacheParameterGroupName=default.redis4.0.
7667	//
7668	// If you are running Redis version 3.2.4 or later, only one node group (shard),
7669	// and want to use a default parameter group, we recommend that you specify
7670	// the parameter group by name.
7671	//
7672	//    * To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2.
7673	//
7674	//    * To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on.
7675	CacheParameterGroupName *string `type:"string"`
7676
7677	// A list of cache security group names to associate with this replication group.
7678	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
7679
7680	// The name of the cache subnet group to be used for the replication group.
7681	//
7682	// If you're going to launch your cluster in an Amazon VPC, you need to create
7683	// a subnet group before you start creating a cluster. For more information,
7684	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
7685	CacheSubnetGroupName *string `type:"string"`
7686
7687	// The name of the cache engine to be used for the clusters in this replication
7688	// group.
7689	Engine *string `type:"string"`
7690
7691	// The version number of the cache engine to be used for the clusters in this
7692	// replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions
7693	// operation.
7694	//
7695	// Important: You can upgrade to a newer engine version (see Selecting a Cache
7696	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement))
7697	// in the ElastiCache User Guide, but you cannot downgrade to an earlier engine
7698	// version. If you want to use an earlier engine version, you must delete the
7699	// existing cluster or replication group and create it anew with the earlier
7700	// engine version.
7701	EngineVersion *string `type:"string"`
7702
7703	// A list of node group (shard) configuration options. Each node group (shard)
7704	// configuration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,
7705	// ReplicaCount, and Slots.
7706	//
7707	// If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode
7708	// enabled) replication group, you can use this parameter to individually configure
7709	// each node group (shard), or you can omit this parameter. However, when seeding
7710	// a Redis (cluster mode enabled) cluster from a S3 rdb file, you must configure
7711	// each node group (shard) using this parameter because you must specify the
7712	// slots for each node group.
7713	NodeGroupConfiguration []*NodeGroupConfiguration `locationNameList:"NodeGroupConfiguration" type:"list"`
7714
7715	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
7716	// (SNS) topic to which notifications are sent.
7717	//
7718	// The Amazon SNS topic owner must be the same as the cluster owner.
7719	NotificationTopicArn *string `type:"string"`
7720
7721	// The number of clusters this replication group initially has.
7722	//
7723	// This parameter is not used if there is more than one node group (shard).
7724	// You should use ReplicasPerNodeGroup instead.
7725	//
7726	// If AutomaticFailoverEnabled is true, the value of this parameter must be
7727	// at least 2. If AutomaticFailoverEnabled is false you can omit this parameter
7728	// (it will default to 1), or you can explicitly set it to a value between 2
7729	// and 6.
7730	//
7731	// The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).
7732	NumCacheClusters *int64 `type:"integer"`
7733
7734	// An optional parameter that specifies the number of node groups (shards) for
7735	// this Redis (cluster mode enabled) replication group. For Redis (cluster mode
7736	// disabled) either omit this parameter or set it to 1.
7737	//
7738	// Default: 1
7739	NumNodeGroups *int64 `type:"integer"`
7740
7741	// The port number on which each member of the replication group accepts connections.
7742	Port *int64 `type:"integer"`
7743
7744	// A list of EC2 Availability Zones in which the replication group's clusters
7745	// are created. The order of the Availability Zones in the list is the order
7746	// in which clusters are allocated. The primary cluster is created in the first
7747	// AZ in the list.
7748	//
7749	// This parameter is not used if there is more than one node group (shard).
7750	// You should use NodeGroupConfiguration instead.
7751	//
7752	// If you are creating your replication group in an Amazon VPC (recommended),
7753	// you can only locate clusters in Availability Zones associated with the subnets
7754	// in the selected subnet group.
7755	//
7756	// The number of Availability Zones listed must equal the value of NumCacheClusters.
7757	//
7758	// Default: system chosen Availability Zones.
7759	PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
7760
7761	// Specifies the weekly time range during which maintenance on the cluster is
7762	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
7763	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
7764	// values for ddd are:
7765	//
7766	// Specifies the weekly time range during which maintenance on the cluster is
7767	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
7768	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
7769	//
7770	// Valid values for ddd are:
7771	//
7772	//    * sun
7773	//
7774	//    * mon
7775	//
7776	//    * tue
7777	//
7778	//    * wed
7779	//
7780	//    * thu
7781	//
7782	//    * fri
7783	//
7784	//    * sat
7785	//
7786	// Example: sun:23:00-mon:01:30
7787	PreferredMaintenanceWindow *string `type:"string"`
7788
7789	// The identifier of the cluster that serves as the primary for this replication
7790	// group. This cluster must already exist and have a status of available.
7791	//
7792	// This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup
7793	// is specified.
7794	PrimaryClusterId *string `type:"string"`
7795
7796	// An optional parameter that specifies the number of replica nodes in each
7797	// node group (shard). Valid values are 0 to 5.
7798	ReplicasPerNodeGroup *int64 `type:"integer"`
7799
7800	// A user-created description for the replication group.
7801	//
7802	// ReplicationGroupDescription is a required field
7803	ReplicationGroupDescription *string `type:"string" required:"true"`
7804
7805	// The replication group identifier. This parameter is stored as a lowercase
7806	// string.
7807	//
7808	// Constraints:
7809	//
7810	//    * A name must contain from 1 to 20 alphanumeric characters or hyphens.
7811	//
7812	//    * The first character must be a letter.
7813	//
7814	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
7815	//
7816	// ReplicationGroupId is a required field
7817	ReplicationGroupId *string `type:"string" required:"true"`
7818
7819	// One or more Amazon VPC security groups associated with this replication group.
7820	//
7821	// Use this parameter only when you are creating a replication group in an Amazon
7822	// Virtual Private Cloud (Amazon VPC).
7823	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
7824
7825	// A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB
7826	// snapshot files stored in Amazon S3. The snapshot files are used to populate
7827	// the new replication group. The Amazon S3 object name in the ARN cannot contain
7828	// any commas. The new replication group will have the number of node groups
7829	// (console: shards) specified by the parameter NumNodeGroups or the number
7830	// of node groups configured by NodeGroupConfiguration regardless of the number
7831	// of ARNs specified here.
7832	//
7833	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
7834	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
7835
7836	// The name of a snapshot from which to restore data into the new replication
7837	// group. The snapshot status changes to restoring while the new replication
7838	// group is being created.
7839	SnapshotName *string `type:"string"`
7840
7841	// The number of days for which ElastiCache retains automatic snapshots before
7842	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
7843	// that was taken today is retained for 5 days before being deleted.
7844	//
7845	// Default: 0 (i.e., automatic backups are disabled for this cluster).
7846	SnapshotRetentionLimit *int64 `type:"integer"`
7847
7848	// The daily time range (in UTC) during which ElastiCache begins taking a daily
7849	// snapshot of your node group (shard).
7850	//
7851	// Example: 05:00-09:00
7852	//
7853	// If you do not specify this parameter, ElastiCache automatically chooses an
7854	// appropriate time range.
7855	SnapshotWindow *string `type:"string"`
7856
7857	// A list of cost allocation tags to be added to this resource. Tags are comma-separated
7858	// key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple
7859	// tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.
7860	Tags []*Tag `locationNameList:"Tag" type:"list"`
7861
7862	// A flag that enables in-transit encryption when set to true.
7863	//
7864	// You cannot modify the value of TransitEncryptionEnabled after the cluster
7865	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
7866	// to true when you create a cluster.
7867	//
7868	// This parameter is valid only if the Engine parameter is redis, the EngineVersion
7869	// parameter is 3.2.6 or 4.x, and the cluster is being created in an Amazon
7870	// VPC.
7871	//
7872	// If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.
7873	//
7874	// Required: Only available when creating a replication group in an Amazon VPC
7875	// using redis version 3.2.6, 4.x or later.
7876	//
7877	// Default: false
7878	//
7879	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
7880	// an AuthToken, and a CacheSubnetGroup.
7881	TransitEncryptionEnabled *bool `type:"boolean"`
7882}
7883
7884// String returns the string representation
7885func (s CreateReplicationGroupInput) String() string {
7886	return awsutil.Prettify(s)
7887}
7888
7889// GoString returns the string representation
7890func (s CreateReplicationGroupInput) GoString() string {
7891	return s.String()
7892}
7893
7894// Validate inspects the fields of the type to determine if they are valid.
7895func (s *CreateReplicationGroupInput) Validate() error {
7896	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupInput"}
7897	if s.ReplicationGroupDescription == nil {
7898		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupDescription"))
7899	}
7900	if s.ReplicationGroupId == nil {
7901		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
7902	}
7903	if s.NodeGroupConfiguration != nil {
7904		for i, v := range s.NodeGroupConfiguration {
7905			if v == nil {
7906				continue
7907			}
7908			if err := v.Validate(); err != nil {
7909				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NodeGroupConfiguration", i), err.(request.ErrInvalidParams))
7910			}
7911		}
7912	}
7913
7914	if invalidParams.Len() > 0 {
7915		return invalidParams
7916	}
7917	return nil
7918}
7919
7920// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
7921func (s *CreateReplicationGroupInput) SetAtRestEncryptionEnabled(v bool) *CreateReplicationGroupInput {
7922	s.AtRestEncryptionEnabled = &v
7923	return s
7924}
7925
7926// SetAuthToken sets the AuthToken field's value.
7927func (s *CreateReplicationGroupInput) SetAuthToken(v string) *CreateReplicationGroupInput {
7928	s.AuthToken = &v
7929	return s
7930}
7931
7932// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
7933func (s *CreateReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *CreateReplicationGroupInput {
7934	s.AutoMinorVersionUpgrade = &v
7935	return s
7936}
7937
7938// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
7939func (s *CreateReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *CreateReplicationGroupInput {
7940	s.AutomaticFailoverEnabled = &v
7941	return s
7942}
7943
7944// SetCacheNodeType sets the CacheNodeType field's value.
7945func (s *CreateReplicationGroupInput) SetCacheNodeType(v string) *CreateReplicationGroupInput {
7946	s.CacheNodeType = &v
7947	return s
7948}
7949
7950// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7951func (s *CreateReplicationGroupInput) SetCacheParameterGroupName(v string) *CreateReplicationGroupInput {
7952	s.CacheParameterGroupName = &v
7953	return s
7954}
7955
7956// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
7957func (s *CreateReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *CreateReplicationGroupInput {
7958	s.CacheSecurityGroupNames = v
7959	return s
7960}
7961
7962// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7963func (s *CreateReplicationGroupInput) SetCacheSubnetGroupName(v string) *CreateReplicationGroupInput {
7964	s.CacheSubnetGroupName = &v
7965	return s
7966}
7967
7968// SetEngine sets the Engine field's value.
7969func (s *CreateReplicationGroupInput) SetEngine(v string) *CreateReplicationGroupInput {
7970	s.Engine = &v
7971	return s
7972}
7973
7974// SetEngineVersion sets the EngineVersion field's value.
7975func (s *CreateReplicationGroupInput) SetEngineVersion(v string) *CreateReplicationGroupInput {
7976	s.EngineVersion = &v
7977	return s
7978}
7979
7980// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
7981func (s *CreateReplicationGroupInput) SetNodeGroupConfiguration(v []*NodeGroupConfiguration) *CreateReplicationGroupInput {
7982	s.NodeGroupConfiguration = v
7983	return s
7984}
7985
7986// SetNotificationTopicArn sets the NotificationTopicArn field's value.
7987func (s *CreateReplicationGroupInput) SetNotificationTopicArn(v string) *CreateReplicationGroupInput {
7988	s.NotificationTopicArn = &v
7989	return s
7990}
7991
7992// SetNumCacheClusters sets the NumCacheClusters field's value.
7993func (s *CreateReplicationGroupInput) SetNumCacheClusters(v int64) *CreateReplicationGroupInput {
7994	s.NumCacheClusters = &v
7995	return s
7996}
7997
7998// SetNumNodeGroups sets the NumNodeGroups field's value.
7999func (s *CreateReplicationGroupInput) SetNumNodeGroups(v int64) *CreateReplicationGroupInput {
8000	s.NumNodeGroups = &v
8001	return s
8002}
8003
8004// SetPort sets the Port field's value.
8005func (s *CreateReplicationGroupInput) SetPort(v int64) *CreateReplicationGroupInput {
8006	s.Port = &v
8007	return s
8008}
8009
8010// SetPreferredCacheClusterAZs sets the PreferredCacheClusterAZs field's value.
8011func (s *CreateReplicationGroupInput) SetPreferredCacheClusterAZs(v []*string) *CreateReplicationGroupInput {
8012	s.PreferredCacheClusterAZs = v
8013	return s
8014}
8015
8016// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
8017func (s *CreateReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *CreateReplicationGroupInput {
8018	s.PreferredMaintenanceWindow = &v
8019	return s
8020}
8021
8022// SetPrimaryClusterId sets the PrimaryClusterId field's value.
8023func (s *CreateReplicationGroupInput) SetPrimaryClusterId(v string) *CreateReplicationGroupInput {
8024	s.PrimaryClusterId = &v
8025	return s
8026}
8027
8028// SetReplicasPerNodeGroup sets the ReplicasPerNodeGroup field's value.
8029func (s *CreateReplicationGroupInput) SetReplicasPerNodeGroup(v int64) *CreateReplicationGroupInput {
8030	s.ReplicasPerNodeGroup = &v
8031	return s
8032}
8033
8034// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
8035func (s *CreateReplicationGroupInput) SetReplicationGroupDescription(v string) *CreateReplicationGroupInput {
8036	s.ReplicationGroupDescription = &v
8037	return s
8038}
8039
8040// SetReplicationGroupId sets the ReplicationGroupId field's value.
8041func (s *CreateReplicationGroupInput) SetReplicationGroupId(v string) *CreateReplicationGroupInput {
8042	s.ReplicationGroupId = &v
8043	return s
8044}
8045
8046// SetSecurityGroupIds sets the SecurityGroupIds field's value.
8047func (s *CreateReplicationGroupInput) SetSecurityGroupIds(v []*string) *CreateReplicationGroupInput {
8048	s.SecurityGroupIds = v
8049	return s
8050}
8051
8052// SetSnapshotArns sets the SnapshotArns field's value.
8053func (s *CreateReplicationGroupInput) SetSnapshotArns(v []*string) *CreateReplicationGroupInput {
8054	s.SnapshotArns = v
8055	return s
8056}
8057
8058// SetSnapshotName sets the SnapshotName field's value.
8059func (s *CreateReplicationGroupInput) SetSnapshotName(v string) *CreateReplicationGroupInput {
8060	s.SnapshotName = &v
8061	return s
8062}
8063
8064// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
8065func (s *CreateReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *CreateReplicationGroupInput {
8066	s.SnapshotRetentionLimit = &v
8067	return s
8068}
8069
8070// SetSnapshotWindow sets the SnapshotWindow field's value.
8071func (s *CreateReplicationGroupInput) SetSnapshotWindow(v string) *CreateReplicationGroupInput {
8072	s.SnapshotWindow = &v
8073	return s
8074}
8075
8076// SetTags sets the Tags field's value.
8077func (s *CreateReplicationGroupInput) SetTags(v []*Tag) *CreateReplicationGroupInput {
8078	s.Tags = v
8079	return s
8080}
8081
8082// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
8083func (s *CreateReplicationGroupInput) SetTransitEncryptionEnabled(v bool) *CreateReplicationGroupInput {
8084	s.TransitEncryptionEnabled = &v
8085	return s
8086}
8087
8088type CreateReplicationGroupOutput struct {
8089	_ struct{} `type:"structure"`
8090
8091	// Contains all of the attributes of a specific Redis replication group.
8092	ReplicationGroup *ReplicationGroup `type:"structure"`
8093}
8094
8095// String returns the string representation
8096func (s CreateReplicationGroupOutput) String() string {
8097	return awsutil.Prettify(s)
8098}
8099
8100// GoString returns the string representation
8101func (s CreateReplicationGroupOutput) GoString() string {
8102	return s.String()
8103}
8104
8105// SetReplicationGroup sets the ReplicationGroup field's value.
8106func (s *CreateReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *CreateReplicationGroupOutput {
8107	s.ReplicationGroup = v
8108	return s
8109}
8110
8111// Represents the input of a CreateSnapshot operation.
8112type CreateSnapshotInput struct {
8113	_ struct{} `type:"structure"`
8114
8115	// The identifier of an existing cluster. The snapshot is created from this
8116	// cluster.
8117	CacheClusterId *string `type:"string"`
8118
8119	// The identifier of an existing replication group. The snapshot is created
8120	// from this replication group.
8121	ReplicationGroupId *string `type:"string"`
8122
8123	// A name for the snapshot being created.
8124	//
8125	// SnapshotName is a required field
8126	SnapshotName *string `type:"string" required:"true"`
8127}
8128
8129// String returns the string representation
8130func (s CreateSnapshotInput) String() string {
8131	return awsutil.Prettify(s)
8132}
8133
8134// GoString returns the string representation
8135func (s CreateSnapshotInput) GoString() string {
8136	return s.String()
8137}
8138
8139// Validate inspects the fields of the type to determine if they are valid.
8140func (s *CreateSnapshotInput) Validate() error {
8141	invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"}
8142	if s.SnapshotName == nil {
8143		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
8144	}
8145
8146	if invalidParams.Len() > 0 {
8147		return invalidParams
8148	}
8149	return nil
8150}
8151
8152// SetCacheClusterId sets the CacheClusterId field's value.
8153func (s *CreateSnapshotInput) SetCacheClusterId(v string) *CreateSnapshotInput {
8154	s.CacheClusterId = &v
8155	return s
8156}
8157
8158// SetReplicationGroupId sets the ReplicationGroupId field's value.
8159func (s *CreateSnapshotInput) SetReplicationGroupId(v string) *CreateSnapshotInput {
8160	s.ReplicationGroupId = &v
8161	return s
8162}
8163
8164// SetSnapshotName sets the SnapshotName field's value.
8165func (s *CreateSnapshotInput) SetSnapshotName(v string) *CreateSnapshotInput {
8166	s.SnapshotName = &v
8167	return s
8168}
8169
8170type CreateSnapshotOutput struct {
8171	_ struct{} `type:"structure"`
8172
8173	// Represents a copy of an entire Redis cluster as of the time when the snapshot
8174	// was taken.
8175	Snapshot *Snapshot `type:"structure"`
8176}
8177
8178// String returns the string representation
8179func (s CreateSnapshotOutput) String() string {
8180	return awsutil.Prettify(s)
8181}
8182
8183// GoString returns the string representation
8184func (s CreateSnapshotOutput) GoString() string {
8185	return s.String()
8186}
8187
8188// SetSnapshot sets the Snapshot field's value.
8189func (s *CreateSnapshotOutput) SetSnapshot(v *Snapshot) *CreateSnapshotOutput {
8190	s.Snapshot = v
8191	return s
8192}
8193
8194type DecreaseReplicaCountInput struct {
8195	_ struct{} `type:"structure"`
8196
8197	// If True, the number of replica nodes is decreased immediately. ApplyImmediately=False
8198	// is not currently supported.
8199	//
8200	// ApplyImmediately is a required field
8201	ApplyImmediately *bool `type:"boolean" required:"true"`
8202
8203	// The number of read replica nodes you want at the completion of this operation.
8204	// For Redis (cluster mode disabled) replication groups, this is the number
8205	// of replica nodes in the replication group. For Redis (cluster mode enabled)
8206	// replication groups, this is the number of replica nodes in each of the replication
8207	// group's node groups.
8208	//
8209	// The minimum number of replicas in a shard or replication group is:
8210	//
8211	//    * Redis (cluster mode disabled) If Multi-AZ with Automatic Failover is
8212	//    enabled: 1 If Multi-AZ with Automatic Failover is not enabled: 0
8213	//
8214	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
8215	//    to a replica if your primary node fails)
8216	NewReplicaCount *int64 `type:"integer"`
8217
8218	// A list of ConfigureShard objects that can be used to configure each shard
8219	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
8220	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
8221	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
8222
8223	// A list of the node ids to remove from the replication group or node group
8224	// (shard).
8225	ReplicasToRemove []*string `type:"list"`
8226
8227	// The id of the replication group from which you want to remove replica nodes.
8228	//
8229	// ReplicationGroupId is a required field
8230	ReplicationGroupId *string `type:"string" required:"true"`
8231}
8232
8233// String returns the string representation
8234func (s DecreaseReplicaCountInput) String() string {
8235	return awsutil.Prettify(s)
8236}
8237
8238// GoString returns the string representation
8239func (s DecreaseReplicaCountInput) GoString() string {
8240	return s.String()
8241}
8242
8243// Validate inspects the fields of the type to determine if they are valid.
8244func (s *DecreaseReplicaCountInput) Validate() error {
8245	invalidParams := request.ErrInvalidParams{Context: "DecreaseReplicaCountInput"}
8246	if s.ApplyImmediately == nil {
8247		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
8248	}
8249	if s.ReplicationGroupId == nil {
8250		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
8251	}
8252	if s.ReplicaConfiguration != nil {
8253		for i, v := range s.ReplicaConfiguration {
8254			if v == nil {
8255				continue
8256			}
8257			if err := v.Validate(); err != nil {
8258				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
8259			}
8260		}
8261	}
8262
8263	if invalidParams.Len() > 0 {
8264		return invalidParams
8265	}
8266	return nil
8267}
8268
8269// SetApplyImmediately sets the ApplyImmediately field's value.
8270func (s *DecreaseReplicaCountInput) SetApplyImmediately(v bool) *DecreaseReplicaCountInput {
8271	s.ApplyImmediately = &v
8272	return s
8273}
8274
8275// SetNewReplicaCount sets the NewReplicaCount field's value.
8276func (s *DecreaseReplicaCountInput) SetNewReplicaCount(v int64) *DecreaseReplicaCountInput {
8277	s.NewReplicaCount = &v
8278	return s
8279}
8280
8281// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
8282func (s *DecreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *DecreaseReplicaCountInput {
8283	s.ReplicaConfiguration = v
8284	return s
8285}
8286
8287// SetReplicasToRemove sets the ReplicasToRemove field's value.
8288func (s *DecreaseReplicaCountInput) SetReplicasToRemove(v []*string) *DecreaseReplicaCountInput {
8289	s.ReplicasToRemove = v
8290	return s
8291}
8292
8293// SetReplicationGroupId sets the ReplicationGroupId field's value.
8294func (s *DecreaseReplicaCountInput) SetReplicationGroupId(v string) *DecreaseReplicaCountInput {
8295	s.ReplicationGroupId = &v
8296	return s
8297}
8298
8299type DecreaseReplicaCountOutput struct {
8300	_ struct{} `type:"structure"`
8301
8302	// Contains all of the attributes of a specific Redis replication group.
8303	ReplicationGroup *ReplicationGroup `type:"structure"`
8304}
8305
8306// String returns the string representation
8307func (s DecreaseReplicaCountOutput) String() string {
8308	return awsutil.Prettify(s)
8309}
8310
8311// GoString returns the string representation
8312func (s DecreaseReplicaCountOutput) GoString() string {
8313	return s.String()
8314}
8315
8316// SetReplicationGroup sets the ReplicationGroup field's value.
8317func (s *DecreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *DecreaseReplicaCountOutput {
8318	s.ReplicationGroup = v
8319	return s
8320}
8321
8322// Represents the input of a DeleteCacheCluster operation.
8323type DeleteCacheClusterInput struct {
8324	_ struct{} `type:"structure"`
8325
8326	// The cluster identifier for the cluster to be deleted. This parameter is not
8327	// case sensitive.
8328	//
8329	// CacheClusterId is a required field
8330	CacheClusterId *string `type:"string" required:"true"`
8331
8332	// The user-supplied name of a final cluster snapshot. This is the unique name
8333	// that identifies the snapshot. ElastiCache creates the snapshot, and then
8334	// deletes the cluster immediately afterward.
8335	FinalSnapshotIdentifier *string `type:"string"`
8336}
8337
8338// String returns the string representation
8339func (s DeleteCacheClusterInput) String() string {
8340	return awsutil.Prettify(s)
8341}
8342
8343// GoString returns the string representation
8344func (s DeleteCacheClusterInput) GoString() string {
8345	return s.String()
8346}
8347
8348// Validate inspects the fields of the type to determine if they are valid.
8349func (s *DeleteCacheClusterInput) Validate() error {
8350	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheClusterInput"}
8351	if s.CacheClusterId == nil {
8352		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
8353	}
8354
8355	if invalidParams.Len() > 0 {
8356		return invalidParams
8357	}
8358	return nil
8359}
8360
8361// SetCacheClusterId sets the CacheClusterId field's value.
8362func (s *DeleteCacheClusterInput) SetCacheClusterId(v string) *DeleteCacheClusterInput {
8363	s.CacheClusterId = &v
8364	return s
8365}
8366
8367// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
8368func (s *DeleteCacheClusterInput) SetFinalSnapshotIdentifier(v string) *DeleteCacheClusterInput {
8369	s.FinalSnapshotIdentifier = &v
8370	return s
8371}
8372
8373type DeleteCacheClusterOutput struct {
8374	_ struct{} `type:"structure"`
8375
8376	// Contains all of the attributes of a specific cluster.
8377	CacheCluster *CacheCluster `type:"structure"`
8378}
8379
8380// String returns the string representation
8381func (s DeleteCacheClusterOutput) String() string {
8382	return awsutil.Prettify(s)
8383}
8384
8385// GoString returns the string representation
8386func (s DeleteCacheClusterOutput) GoString() string {
8387	return s.String()
8388}
8389
8390// SetCacheCluster sets the CacheCluster field's value.
8391func (s *DeleteCacheClusterOutput) SetCacheCluster(v *CacheCluster) *DeleteCacheClusterOutput {
8392	s.CacheCluster = v
8393	return s
8394}
8395
8396// Represents the input of a DeleteCacheParameterGroup operation.
8397type DeleteCacheParameterGroupInput struct {
8398	_ struct{} `type:"structure"`
8399
8400	// The name of the cache parameter group to delete.
8401	//
8402	// The specified cache security group must not be associated with any clusters.
8403	//
8404	// CacheParameterGroupName is a required field
8405	CacheParameterGroupName *string `type:"string" required:"true"`
8406}
8407
8408// String returns the string representation
8409func (s DeleteCacheParameterGroupInput) String() string {
8410	return awsutil.Prettify(s)
8411}
8412
8413// GoString returns the string representation
8414func (s DeleteCacheParameterGroupInput) GoString() string {
8415	return s.String()
8416}
8417
8418// Validate inspects the fields of the type to determine if they are valid.
8419func (s *DeleteCacheParameterGroupInput) Validate() error {
8420	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheParameterGroupInput"}
8421	if s.CacheParameterGroupName == nil {
8422		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
8423	}
8424
8425	if invalidParams.Len() > 0 {
8426		return invalidParams
8427	}
8428	return nil
8429}
8430
8431// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8432func (s *DeleteCacheParameterGroupInput) SetCacheParameterGroupName(v string) *DeleteCacheParameterGroupInput {
8433	s.CacheParameterGroupName = &v
8434	return s
8435}
8436
8437type DeleteCacheParameterGroupOutput struct {
8438	_ struct{} `type:"structure"`
8439}
8440
8441// String returns the string representation
8442func (s DeleteCacheParameterGroupOutput) String() string {
8443	return awsutil.Prettify(s)
8444}
8445
8446// GoString returns the string representation
8447func (s DeleteCacheParameterGroupOutput) GoString() string {
8448	return s.String()
8449}
8450
8451// Represents the input of a DeleteCacheSecurityGroup operation.
8452type DeleteCacheSecurityGroupInput struct {
8453	_ struct{} `type:"structure"`
8454
8455	// The name of the cache security group to delete.
8456	//
8457	// You cannot delete the default security group.
8458	//
8459	// CacheSecurityGroupName is a required field
8460	CacheSecurityGroupName *string `type:"string" required:"true"`
8461}
8462
8463// String returns the string representation
8464func (s DeleteCacheSecurityGroupInput) String() string {
8465	return awsutil.Prettify(s)
8466}
8467
8468// GoString returns the string representation
8469func (s DeleteCacheSecurityGroupInput) GoString() string {
8470	return s.String()
8471}
8472
8473// Validate inspects the fields of the type to determine if they are valid.
8474func (s *DeleteCacheSecurityGroupInput) Validate() error {
8475	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSecurityGroupInput"}
8476	if s.CacheSecurityGroupName == nil {
8477		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
8478	}
8479
8480	if invalidParams.Len() > 0 {
8481		return invalidParams
8482	}
8483	return nil
8484}
8485
8486// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
8487func (s *DeleteCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *DeleteCacheSecurityGroupInput {
8488	s.CacheSecurityGroupName = &v
8489	return s
8490}
8491
8492type DeleteCacheSecurityGroupOutput struct {
8493	_ struct{} `type:"structure"`
8494}
8495
8496// String returns the string representation
8497func (s DeleteCacheSecurityGroupOutput) String() string {
8498	return awsutil.Prettify(s)
8499}
8500
8501// GoString returns the string representation
8502func (s DeleteCacheSecurityGroupOutput) GoString() string {
8503	return s.String()
8504}
8505
8506// Represents the input of a DeleteCacheSubnetGroup operation.
8507type DeleteCacheSubnetGroupInput struct {
8508	_ struct{} `type:"structure"`
8509
8510	// The name of the cache subnet group to delete.
8511	//
8512	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
8513	//
8514	// CacheSubnetGroupName is a required field
8515	CacheSubnetGroupName *string `type:"string" required:"true"`
8516}
8517
8518// String returns the string representation
8519func (s DeleteCacheSubnetGroupInput) String() string {
8520	return awsutil.Prettify(s)
8521}
8522
8523// GoString returns the string representation
8524func (s DeleteCacheSubnetGroupInput) GoString() string {
8525	return s.String()
8526}
8527
8528// Validate inspects the fields of the type to determine if they are valid.
8529func (s *DeleteCacheSubnetGroupInput) Validate() error {
8530	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSubnetGroupInput"}
8531	if s.CacheSubnetGroupName == nil {
8532		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
8533	}
8534
8535	if invalidParams.Len() > 0 {
8536		return invalidParams
8537	}
8538	return nil
8539}
8540
8541// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8542func (s *DeleteCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *DeleteCacheSubnetGroupInput {
8543	s.CacheSubnetGroupName = &v
8544	return s
8545}
8546
8547type DeleteCacheSubnetGroupOutput struct {
8548	_ struct{} `type:"structure"`
8549}
8550
8551// String returns the string representation
8552func (s DeleteCacheSubnetGroupOutput) String() string {
8553	return awsutil.Prettify(s)
8554}
8555
8556// GoString returns the string representation
8557func (s DeleteCacheSubnetGroupOutput) GoString() string {
8558	return s.String()
8559}
8560
8561// Represents the input of a DeleteReplicationGroup operation.
8562type DeleteReplicationGroupInput struct {
8563	_ struct{} `type:"structure"`
8564
8565	// The name of a final node group (shard) snapshot. ElastiCache creates the
8566	// snapshot from the primary node in the cluster, rather than one of the replicas;
8567	// this is to ensure that it captures the freshest data. After the final snapshot
8568	// is taken, the replication group is immediately deleted.
8569	FinalSnapshotIdentifier *string `type:"string"`
8570
8571	// The identifier for the cluster to be deleted. This parameter is not case
8572	// sensitive.
8573	//
8574	// ReplicationGroupId is a required field
8575	ReplicationGroupId *string `type:"string" required:"true"`
8576
8577	// If set to true, all of the read replicas are deleted, but the primary node
8578	// is retained.
8579	RetainPrimaryCluster *bool `type:"boolean"`
8580}
8581
8582// String returns the string representation
8583func (s DeleteReplicationGroupInput) String() string {
8584	return awsutil.Prettify(s)
8585}
8586
8587// GoString returns the string representation
8588func (s DeleteReplicationGroupInput) GoString() string {
8589	return s.String()
8590}
8591
8592// Validate inspects the fields of the type to determine if they are valid.
8593func (s *DeleteReplicationGroupInput) Validate() error {
8594	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupInput"}
8595	if s.ReplicationGroupId == nil {
8596		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
8597	}
8598
8599	if invalidParams.Len() > 0 {
8600		return invalidParams
8601	}
8602	return nil
8603}
8604
8605// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
8606func (s *DeleteReplicationGroupInput) SetFinalSnapshotIdentifier(v string) *DeleteReplicationGroupInput {
8607	s.FinalSnapshotIdentifier = &v
8608	return s
8609}
8610
8611// SetReplicationGroupId sets the ReplicationGroupId field's value.
8612func (s *DeleteReplicationGroupInput) SetReplicationGroupId(v string) *DeleteReplicationGroupInput {
8613	s.ReplicationGroupId = &v
8614	return s
8615}
8616
8617// SetRetainPrimaryCluster sets the RetainPrimaryCluster field's value.
8618func (s *DeleteReplicationGroupInput) SetRetainPrimaryCluster(v bool) *DeleteReplicationGroupInput {
8619	s.RetainPrimaryCluster = &v
8620	return s
8621}
8622
8623type DeleteReplicationGroupOutput struct {
8624	_ struct{} `type:"structure"`
8625
8626	// Contains all of the attributes of a specific Redis replication group.
8627	ReplicationGroup *ReplicationGroup `type:"structure"`
8628}
8629
8630// String returns the string representation
8631func (s DeleteReplicationGroupOutput) String() string {
8632	return awsutil.Prettify(s)
8633}
8634
8635// GoString returns the string representation
8636func (s DeleteReplicationGroupOutput) GoString() string {
8637	return s.String()
8638}
8639
8640// SetReplicationGroup sets the ReplicationGroup field's value.
8641func (s *DeleteReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *DeleteReplicationGroupOutput {
8642	s.ReplicationGroup = v
8643	return s
8644}
8645
8646// Represents the input of a DeleteSnapshot operation.
8647type DeleteSnapshotInput struct {
8648	_ struct{} `type:"structure"`
8649
8650	// The name of the snapshot to be deleted.
8651	//
8652	// SnapshotName is a required field
8653	SnapshotName *string `type:"string" required:"true"`
8654}
8655
8656// String returns the string representation
8657func (s DeleteSnapshotInput) String() string {
8658	return awsutil.Prettify(s)
8659}
8660
8661// GoString returns the string representation
8662func (s DeleteSnapshotInput) GoString() string {
8663	return s.String()
8664}
8665
8666// Validate inspects the fields of the type to determine if they are valid.
8667func (s *DeleteSnapshotInput) Validate() error {
8668	invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"}
8669	if s.SnapshotName == nil {
8670		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
8671	}
8672
8673	if invalidParams.Len() > 0 {
8674		return invalidParams
8675	}
8676	return nil
8677}
8678
8679// SetSnapshotName sets the SnapshotName field's value.
8680func (s *DeleteSnapshotInput) SetSnapshotName(v string) *DeleteSnapshotInput {
8681	s.SnapshotName = &v
8682	return s
8683}
8684
8685type DeleteSnapshotOutput struct {
8686	_ struct{} `type:"structure"`
8687
8688	// Represents a copy of an entire Redis cluster as of the time when the snapshot
8689	// was taken.
8690	Snapshot *Snapshot `type:"structure"`
8691}
8692
8693// String returns the string representation
8694func (s DeleteSnapshotOutput) String() string {
8695	return awsutil.Prettify(s)
8696}
8697
8698// GoString returns the string representation
8699func (s DeleteSnapshotOutput) GoString() string {
8700	return s.String()
8701}
8702
8703// SetSnapshot sets the Snapshot field's value.
8704func (s *DeleteSnapshotOutput) SetSnapshot(v *Snapshot) *DeleteSnapshotOutput {
8705	s.Snapshot = v
8706	return s
8707}
8708
8709// Represents the input of a DescribeCacheClusters operation.
8710type DescribeCacheClustersInput struct {
8711	_ struct{} `type:"structure"`
8712
8713	// The user-supplied cluster identifier. If this parameter is specified, only
8714	// information about that specific cluster is returned. This parameter isn't
8715	// case sensitive.
8716	CacheClusterId *string `type:"string"`
8717
8718	// An optional marker returned from a prior request. Use this marker for pagination
8719	// of results from this operation. If this parameter is specified, the response
8720	// includes only records beyond the marker, up to the value specified by MaxRecords.
8721	Marker *string `type:"string"`
8722
8723	// The maximum number of records to include in the response. If more records
8724	// exist than the specified MaxRecords value, a marker is included in the response
8725	// so that the remaining results can be retrieved.
8726	//
8727	// Default: 100
8728	//
8729	// Constraints: minimum 20; maximum 100.
8730	MaxRecords *int64 `type:"integer"`
8731
8732	// An optional flag that can be included in the DescribeCacheCluster request
8733	// to show only nodes (API/CLI: clusters) that are not members of a replication
8734	// group. In practice, this mean Memcached and single node Redis clusters.
8735	ShowCacheClustersNotInReplicationGroups *bool `type:"boolean"`
8736
8737	// An optional flag that can be included in the DescribeCacheCluster request
8738	// to retrieve information about the individual cache nodes.
8739	ShowCacheNodeInfo *bool `type:"boolean"`
8740}
8741
8742// String returns the string representation
8743func (s DescribeCacheClustersInput) String() string {
8744	return awsutil.Prettify(s)
8745}
8746
8747// GoString returns the string representation
8748func (s DescribeCacheClustersInput) GoString() string {
8749	return s.String()
8750}
8751
8752// SetCacheClusterId sets the CacheClusterId field's value.
8753func (s *DescribeCacheClustersInput) SetCacheClusterId(v string) *DescribeCacheClustersInput {
8754	s.CacheClusterId = &v
8755	return s
8756}
8757
8758// SetMarker sets the Marker field's value.
8759func (s *DescribeCacheClustersInput) SetMarker(v string) *DescribeCacheClustersInput {
8760	s.Marker = &v
8761	return s
8762}
8763
8764// SetMaxRecords sets the MaxRecords field's value.
8765func (s *DescribeCacheClustersInput) SetMaxRecords(v int64) *DescribeCacheClustersInput {
8766	s.MaxRecords = &v
8767	return s
8768}
8769
8770// SetShowCacheClustersNotInReplicationGroups sets the ShowCacheClustersNotInReplicationGroups field's value.
8771func (s *DescribeCacheClustersInput) SetShowCacheClustersNotInReplicationGroups(v bool) *DescribeCacheClustersInput {
8772	s.ShowCacheClustersNotInReplicationGroups = &v
8773	return s
8774}
8775
8776// SetShowCacheNodeInfo sets the ShowCacheNodeInfo field's value.
8777func (s *DescribeCacheClustersInput) SetShowCacheNodeInfo(v bool) *DescribeCacheClustersInput {
8778	s.ShowCacheNodeInfo = &v
8779	return s
8780}
8781
8782// Represents the output of a DescribeCacheClusters operation.
8783type DescribeCacheClustersOutput struct {
8784	_ struct{} `type:"structure"`
8785
8786	// A list of clusters. Each item in the list contains detailed information about
8787	// one cluster.
8788	CacheClusters []*CacheCluster `locationNameList:"CacheCluster" type:"list"`
8789
8790	// Provides an identifier to allow retrieval of paginated results.
8791	Marker *string `type:"string"`
8792}
8793
8794// String returns the string representation
8795func (s DescribeCacheClustersOutput) String() string {
8796	return awsutil.Prettify(s)
8797}
8798
8799// GoString returns the string representation
8800func (s DescribeCacheClustersOutput) GoString() string {
8801	return s.String()
8802}
8803
8804// SetCacheClusters sets the CacheClusters field's value.
8805func (s *DescribeCacheClustersOutput) SetCacheClusters(v []*CacheCluster) *DescribeCacheClustersOutput {
8806	s.CacheClusters = v
8807	return s
8808}
8809
8810// SetMarker sets the Marker field's value.
8811func (s *DescribeCacheClustersOutput) SetMarker(v string) *DescribeCacheClustersOutput {
8812	s.Marker = &v
8813	return s
8814}
8815
8816// Represents the input of a DescribeCacheEngineVersions operation.
8817type DescribeCacheEngineVersionsInput struct {
8818	_ struct{} `type:"structure"`
8819
8820	// The name of a specific cache parameter group family to return details for.
8821	//
8822	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
8823	// | redis4.0 | redis5.0 |
8824	//
8825	// Constraints:
8826	//
8827	//    * Must be 1 to 255 alphanumeric characters
8828	//
8829	//    * First character must be a letter
8830	//
8831	//    * Cannot end with a hyphen or contain two consecutive hyphens
8832	CacheParameterGroupFamily *string `type:"string"`
8833
8834	// If true, specifies that only the default version of the specified engine
8835	// or engine and major version combination is to be returned.
8836	DefaultOnly *bool `type:"boolean"`
8837
8838	// The cache engine to return. Valid values: memcached | redis
8839	Engine *string `type:"string"`
8840
8841	// The cache engine version to return.
8842	//
8843	// Example: 1.4.14
8844	EngineVersion *string `type:"string"`
8845
8846	// An optional marker returned from a prior request. Use this marker for pagination
8847	// of results from this operation. If this parameter is specified, the response
8848	// includes only records beyond the marker, up to the value specified by MaxRecords.
8849	Marker *string `type:"string"`
8850
8851	// The maximum number of records to include in the response. If more records
8852	// exist than the specified MaxRecords value, a marker is included in the response
8853	// so that the remaining results can be retrieved.
8854	//
8855	// Default: 100
8856	//
8857	// Constraints: minimum 20; maximum 100.
8858	MaxRecords *int64 `type:"integer"`
8859}
8860
8861// String returns the string representation
8862func (s DescribeCacheEngineVersionsInput) String() string {
8863	return awsutil.Prettify(s)
8864}
8865
8866// GoString returns the string representation
8867func (s DescribeCacheEngineVersionsInput) GoString() string {
8868	return s.String()
8869}
8870
8871// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
8872func (s *DescribeCacheEngineVersionsInput) SetCacheParameterGroupFamily(v string) *DescribeCacheEngineVersionsInput {
8873	s.CacheParameterGroupFamily = &v
8874	return s
8875}
8876
8877// SetDefaultOnly sets the DefaultOnly field's value.
8878func (s *DescribeCacheEngineVersionsInput) SetDefaultOnly(v bool) *DescribeCacheEngineVersionsInput {
8879	s.DefaultOnly = &v
8880	return s
8881}
8882
8883// SetEngine sets the Engine field's value.
8884func (s *DescribeCacheEngineVersionsInput) SetEngine(v string) *DescribeCacheEngineVersionsInput {
8885	s.Engine = &v
8886	return s
8887}
8888
8889// SetEngineVersion sets the EngineVersion field's value.
8890func (s *DescribeCacheEngineVersionsInput) SetEngineVersion(v string) *DescribeCacheEngineVersionsInput {
8891	s.EngineVersion = &v
8892	return s
8893}
8894
8895// SetMarker sets the Marker field's value.
8896func (s *DescribeCacheEngineVersionsInput) SetMarker(v string) *DescribeCacheEngineVersionsInput {
8897	s.Marker = &v
8898	return s
8899}
8900
8901// SetMaxRecords sets the MaxRecords field's value.
8902func (s *DescribeCacheEngineVersionsInput) SetMaxRecords(v int64) *DescribeCacheEngineVersionsInput {
8903	s.MaxRecords = &v
8904	return s
8905}
8906
8907// Represents the output of a DescribeCacheEngineVersions operation.
8908type DescribeCacheEngineVersionsOutput struct {
8909	_ struct{} `type:"structure"`
8910
8911	// A list of cache engine version details. Each element in the list contains
8912	// detailed information about one cache engine version.
8913	CacheEngineVersions []*CacheEngineVersion `locationNameList:"CacheEngineVersion" type:"list"`
8914
8915	// Provides an identifier to allow retrieval of paginated results.
8916	Marker *string `type:"string"`
8917}
8918
8919// String returns the string representation
8920func (s DescribeCacheEngineVersionsOutput) String() string {
8921	return awsutil.Prettify(s)
8922}
8923
8924// GoString returns the string representation
8925func (s DescribeCacheEngineVersionsOutput) GoString() string {
8926	return s.String()
8927}
8928
8929// SetCacheEngineVersions sets the CacheEngineVersions field's value.
8930func (s *DescribeCacheEngineVersionsOutput) SetCacheEngineVersions(v []*CacheEngineVersion) *DescribeCacheEngineVersionsOutput {
8931	s.CacheEngineVersions = v
8932	return s
8933}
8934
8935// SetMarker sets the Marker field's value.
8936func (s *DescribeCacheEngineVersionsOutput) SetMarker(v string) *DescribeCacheEngineVersionsOutput {
8937	s.Marker = &v
8938	return s
8939}
8940
8941// Represents the input of a DescribeCacheParameterGroups operation.
8942type DescribeCacheParameterGroupsInput struct {
8943	_ struct{} `type:"structure"`
8944
8945	// The name of a specific cache parameter group to return details for.
8946	CacheParameterGroupName *string `type:"string"`
8947
8948	// An optional marker returned from a prior request. Use this marker for pagination
8949	// of results from this operation. If this parameter is specified, the response
8950	// includes only records beyond the marker, up to the value specified by MaxRecords.
8951	Marker *string `type:"string"`
8952
8953	// The maximum number of records to include in the response. If more records
8954	// exist than the specified MaxRecords value, a marker is included in the response
8955	// so that the remaining results can be retrieved.
8956	//
8957	// Default: 100
8958	//
8959	// Constraints: minimum 20; maximum 100.
8960	MaxRecords *int64 `type:"integer"`
8961}
8962
8963// String returns the string representation
8964func (s DescribeCacheParameterGroupsInput) String() string {
8965	return awsutil.Prettify(s)
8966}
8967
8968// GoString returns the string representation
8969func (s DescribeCacheParameterGroupsInput) GoString() string {
8970	return s.String()
8971}
8972
8973// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8974func (s *DescribeCacheParameterGroupsInput) SetCacheParameterGroupName(v string) *DescribeCacheParameterGroupsInput {
8975	s.CacheParameterGroupName = &v
8976	return s
8977}
8978
8979// SetMarker sets the Marker field's value.
8980func (s *DescribeCacheParameterGroupsInput) SetMarker(v string) *DescribeCacheParameterGroupsInput {
8981	s.Marker = &v
8982	return s
8983}
8984
8985// SetMaxRecords sets the MaxRecords field's value.
8986func (s *DescribeCacheParameterGroupsInput) SetMaxRecords(v int64) *DescribeCacheParameterGroupsInput {
8987	s.MaxRecords = &v
8988	return s
8989}
8990
8991// Represents the output of a DescribeCacheParameterGroups operation.
8992type DescribeCacheParameterGroupsOutput struct {
8993	_ struct{} `type:"structure"`
8994
8995	// A list of cache parameter groups. Each element in the list contains detailed
8996	// information about one cache parameter group.
8997	CacheParameterGroups []*CacheParameterGroup `locationNameList:"CacheParameterGroup" type:"list"`
8998
8999	// Provides an identifier to allow retrieval of paginated results.
9000	Marker *string `type:"string"`
9001}
9002
9003// String returns the string representation
9004func (s DescribeCacheParameterGroupsOutput) String() string {
9005	return awsutil.Prettify(s)
9006}
9007
9008// GoString returns the string representation
9009func (s DescribeCacheParameterGroupsOutput) GoString() string {
9010	return s.String()
9011}
9012
9013// SetCacheParameterGroups sets the CacheParameterGroups field's value.
9014func (s *DescribeCacheParameterGroupsOutput) SetCacheParameterGroups(v []*CacheParameterGroup) *DescribeCacheParameterGroupsOutput {
9015	s.CacheParameterGroups = v
9016	return s
9017}
9018
9019// SetMarker sets the Marker field's value.
9020func (s *DescribeCacheParameterGroupsOutput) SetMarker(v string) *DescribeCacheParameterGroupsOutput {
9021	s.Marker = &v
9022	return s
9023}
9024
9025// Represents the input of a DescribeCacheParameters operation.
9026type DescribeCacheParametersInput struct {
9027	_ struct{} `type:"structure"`
9028
9029	// The name of a specific cache parameter group to return details for.
9030	//
9031	// CacheParameterGroupName is a required field
9032	CacheParameterGroupName *string `type:"string" required:"true"`
9033
9034	// An optional marker returned from a prior request. Use this marker for pagination
9035	// of results from this operation. If this parameter is specified, the response
9036	// includes only records beyond the marker, up to the value specified by MaxRecords.
9037	Marker *string `type:"string"`
9038
9039	// The maximum number of records to include in the response. If more records
9040	// exist than the specified MaxRecords value, a marker is included in the response
9041	// so that the remaining results can be retrieved.
9042	//
9043	// Default: 100
9044	//
9045	// Constraints: minimum 20; maximum 100.
9046	MaxRecords *int64 `type:"integer"`
9047
9048	// The parameter types to return.
9049	//
9050	// Valid values: user | system | engine-default
9051	Source *string `type:"string"`
9052}
9053
9054// String returns the string representation
9055func (s DescribeCacheParametersInput) String() string {
9056	return awsutil.Prettify(s)
9057}
9058
9059// GoString returns the string representation
9060func (s DescribeCacheParametersInput) GoString() string {
9061	return s.String()
9062}
9063
9064// Validate inspects the fields of the type to determine if they are valid.
9065func (s *DescribeCacheParametersInput) Validate() error {
9066	invalidParams := request.ErrInvalidParams{Context: "DescribeCacheParametersInput"}
9067	if s.CacheParameterGroupName == nil {
9068		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
9069	}
9070
9071	if invalidParams.Len() > 0 {
9072		return invalidParams
9073	}
9074	return nil
9075}
9076
9077// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9078func (s *DescribeCacheParametersInput) SetCacheParameterGroupName(v string) *DescribeCacheParametersInput {
9079	s.CacheParameterGroupName = &v
9080	return s
9081}
9082
9083// SetMarker sets the Marker field's value.
9084func (s *DescribeCacheParametersInput) SetMarker(v string) *DescribeCacheParametersInput {
9085	s.Marker = &v
9086	return s
9087}
9088
9089// SetMaxRecords sets the MaxRecords field's value.
9090func (s *DescribeCacheParametersInput) SetMaxRecords(v int64) *DescribeCacheParametersInput {
9091	s.MaxRecords = &v
9092	return s
9093}
9094
9095// SetSource sets the Source field's value.
9096func (s *DescribeCacheParametersInput) SetSource(v string) *DescribeCacheParametersInput {
9097	s.Source = &v
9098	return s
9099}
9100
9101// Represents the output of a DescribeCacheParameters operation.
9102type DescribeCacheParametersOutput struct {
9103	_ struct{} `type:"structure"`
9104
9105	// A list of parameters specific to a particular cache node type. Each element
9106	// in the list contains detailed information about one parameter.
9107	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
9108
9109	// Provides an identifier to allow retrieval of paginated results.
9110	Marker *string `type:"string"`
9111
9112	// A list of Parameter instances.
9113	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
9114}
9115
9116// String returns the string representation
9117func (s DescribeCacheParametersOutput) String() string {
9118	return awsutil.Prettify(s)
9119}
9120
9121// GoString returns the string representation
9122func (s DescribeCacheParametersOutput) GoString() string {
9123	return s.String()
9124}
9125
9126// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
9127func (s *DescribeCacheParametersOutput) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *DescribeCacheParametersOutput {
9128	s.CacheNodeTypeSpecificParameters = v
9129	return s
9130}
9131
9132// SetMarker sets the Marker field's value.
9133func (s *DescribeCacheParametersOutput) SetMarker(v string) *DescribeCacheParametersOutput {
9134	s.Marker = &v
9135	return s
9136}
9137
9138// SetParameters sets the Parameters field's value.
9139func (s *DescribeCacheParametersOutput) SetParameters(v []*Parameter) *DescribeCacheParametersOutput {
9140	s.Parameters = v
9141	return s
9142}
9143
9144// Represents the input of a DescribeCacheSecurityGroups operation.
9145type DescribeCacheSecurityGroupsInput struct {
9146	_ struct{} `type:"structure"`
9147
9148	// The name of the cache security group to return details for.
9149	CacheSecurityGroupName *string `type:"string"`
9150
9151	// An optional marker returned from a prior request. Use this marker for pagination
9152	// of results from this operation. If this parameter is specified, the response
9153	// includes only records beyond the marker, up to the value specified by MaxRecords.
9154	Marker *string `type:"string"`
9155
9156	// The maximum number of records to include in the response. If more records
9157	// exist than the specified MaxRecords value, a marker is included in the response
9158	// so that the remaining results can be retrieved.
9159	//
9160	// Default: 100
9161	//
9162	// Constraints: minimum 20; maximum 100.
9163	MaxRecords *int64 `type:"integer"`
9164}
9165
9166// String returns the string representation
9167func (s DescribeCacheSecurityGroupsInput) String() string {
9168	return awsutil.Prettify(s)
9169}
9170
9171// GoString returns the string representation
9172func (s DescribeCacheSecurityGroupsInput) GoString() string {
9173	return s.String()
9174}
9175
9176// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
9177func (s *DescribeCacheSecurityGroupsInput) SetCacheSecurityGroupName(v string) *DescribeCacheSecurityGroupsInput {
9178	s.CacheSecurityGroupName = &v
9179	return s
9180}
9181
9182// SetMarker sets the Marker field's value.
9183func (s *DescribeCacheSecurityGroupsInput) SetMarker(v string) *DescribeCacheSecurityGroupsInput {
9184	s.Marker = &v
9185	return s
9186}
9187
9188// SetMaxRecords sets the MaxRecords field's value.
9189func (s *DescribeCacheSecurityGroupsInput) SetMaxRecords(v int64) *DescribeCacheSecurityGroupsInput {
9190	s.MaxRecords = &v
9191	return s
9192}
9193
9194// Represents the output of a DescribeCacheSecurityGroups operation.
9195type DescribeCacheSecurityGroupsOutput struct {
9196	_ struct{} `type:"structure"`
9197
9198	// A list of cache security groups. Each element in the list contains detailed
9199	// information about one group.
9200	CacheSecurityGroups []*CacheSecurityGroup `locationNameList:"CacheSecurityGroup" type:"list"`
9201
9202	// Provides an identifier to allow retrieval of paginated results.
9203	Marker *string `type:"string"`
9204}
9205
9206// String returns the string representation
9207func (s DescribeCacheSecurityGroupsOutput) String() string {
9208	return awsutil.Prettify(s)
9209}
9210
9211// GoString returns the string representation
9212func (s DescribeCacheSecurityGroupsOutput) GoString() string {
9213	return s.String()
9214}
9215
9216// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
9217func (s *DescribeCacheSecurityGroupsOutput) SetCacheSecurityGroups(v []*CacheSecurityGroup) *DescribeCacheSecurityGroupsOutput {
9218	s.CacheSecurityGroups = v
9219	return s
9220}
9221
9222// SetMarker sets the Marker field's value.
9223func (s *DescribeCacheSecurityGroupsOutput) SetMarker(v string) *DescribeCacheSecurityGroupsOutput {
9224	s.Marker = &v
9225	return s
9226}
9227
9228// Represents the input of a DescribeCacheSubnetGroups operation.
9229type DescribeCacheSubnetGroupsInput struct {
9230	_ struct{} `type:"structure"`
9231
9232	// The name of the cache subnet group to return details for.
9233	CacheSubnetGroupName *string `type:"string"`
9234
9235	// An optional marker returned from a prior request. Use this marker for pagination
9236	// of results from this operation. If this parameter is specified, the response
9237	// includes only records beyond the marker, up to the value specified by MaxRecords.
9238	Marker *string `type:"string"`
9239
9240	// The maximum number of records to include in the response. If more records
9241	// exist than the specified MaxRecords value, a marker is included in the response
9242	// so that the remaining results can be retrieved.
9243	//
9244	// Default: 100
9245	//
9246	// Constraints: minimum 20; maximum 100.
9247	MaxRecords *int64 `type:"integer"`
9248}
9249
9250// String returns the string representation
9251func (s DescribeCacheSubnetGroupsInput) String() string {
9252	return awsutil.Prettify(s)
9253}
9254
9255// GoString returns the string representation
9256func (s DescribeCacheSubnetGroupsInput) GoString() string {
9257	return s.String()
9258}
9259
9260// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
9261func (s *DescribeCacheSubnetGroupsInput) SetCacheSubnetGroupName(v string) *DescribeCacheSubnetGroupsInput {
9262	s.CacheSubnetGroupName = &v
9263	return s
9264}
9265
9266// SetMarker sets the Marker field's value.
9267func (s *DescribeCacheSubnetGroupsInput) SetMarker(v string) *DescribeCacheSubnetGroupsInput {
9268	s.Marker = &v
9269	return s
9270}
9271
9272// SetMaxRecords sets the MaxRecords field's value.
9273func (s *DescribeCacheSubnetGroupsInput) SetMaxRecords(v int64) *DescribeCacheSubnetGroupsInput {
9274	s.MaxRecords = &v
9275	return s
9276}
9277
9278// Represents the output of a DescribeCacheSubnetGroups operation.
9279type DescribeCacheSubnetGroupsOutput struct {
9280	_ struct{} `type:"structure"`
9281
9282	// A list of cache subnet groups. Each element in the list contains detailed
9283	// information about one group.
9284	CacheSubnetGroups []*CacheSubnetGroup `locationNameList:"CacheSubnetGroup" type:"list"`
9285
9286	// Provides an identifier to allow retrieval of paginated results.
9287	Marker *string `type:"string"`
9288}
9289
9290// String returns the string representation
9291func (s DescribeCacheSubnetGroupsOutput) String() string {
9292	return awsutil.Prettify(s)
9293}
9294
9295// GoString returns the string representation
9296func (s DescribeCacheSubnetGroupsOutput) GoString() string {
9297	return s.String()
9298}
9299
9300// SetCacheSubnetGroups sets the CacheSubnetGroups field's value.
9301func (s *DescribeCacheSubnetGroupsOutput) SetCacheSubnetGroups(v []*CacheSubnetGroup) *DescribeCacheSubnetGroupsOutput {
9302	s.CacheSubnetGroups = v
9303	return s
9304}
9305
9306// SetMarker sets the Marker field's value.
9307func (s *DescribeCacheSubnetGroupsOutput) SetMarker(v string) *DescribeCacheSubnetGroupsOutput {
9308	s.Marker = &v
9309	return s
9310}
9311
9312// Represents the input of a DescribeEngineDefaultParameters operation.
9313type DescribeEngineDefaultParametersInput struct {
9314	_ struct{} `type:"structure"`
9315
9316	// The name of the cache parameter group family.
9317	//
9318	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
9319	// | redis4.0 | redis5.0 |
9320	//
9321	// CacheParameterGroupFamily is a required field
9322	CacheParameterGroupFamily *string `type:"string" required:"true"`
9323
9324	// An optional marker returned from a prior request. Use this marker for pagination
9325	// of results from this operation. If this parameter is specified, the response
9326	// includes only records beyond the marker, up to the value specified by MaxRecords.
9327	Marker *string `type:"string"`
9328
9329	// The maximum number of records to include in the response. If more records
9330	// exist than the specified MaxRecords value, a marker is included in the response
9331	// so that the remaining results can be retrieved.
9332	//
9333	// Default: 100
9334	//
9335	// Constraints: minimum 20; maximum 100.
9336	MaxRecords *int64 `type:"integer"`
9337}
9338
9339// String returns the string representation
9340func (s DescribeEngineDefaultParametersInput) String() string {
9341	return awsutil.Prettify(s)
9342}
9343
9344// GoString returns the string representation
9345func (s DescribeEngineDefaultParametersInput) GoString() string {
9346	return s.String()
9347}
9348
9349// Validate inspects the fields of the type to determine if they are valid.
9350func (s *DescribeEngineDefaultParametersInput) Validate() error {
9351	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
9352	if s.CacheParameterGroupFamily == nil {
9353		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
9354	}
9355
9356	if invalidParams.Len() > 0 {
9357		return invalidParams
9358	}
9359	return nil
9360}
9361
9362// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
9363func (s *DescribeEngineDefaultParametersInput) SetCacheParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
9364	s.CacheParameterGroupFamily = &v
9365	return s
9366}
9367
9368// SetMarker sets the Marker field's value.
9369func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
9370	s.Marker = &v
9371	return s
9372}
9373
9374// SetMaxRecords sets the MaxRecords field's value.
9375func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
9376	s.MaxRecords = &v
9377	return s
9378}
9379
9380type DescribeEngineDefaultParametersOutput struct {
9381	_ struct{} `type:"structure"`
9382
9383	// Represents the output of a DescribeEngineDefaultParameters operation.
9384	EngineDefaults *EngineDefaults `type:"structure"`
9385}
9386
9387// String returns the string representation
9388func (s DescribeEngineDefaultParametersOutput) String() string {
9389	return awsutil.Prettify(s)
9390}
9391
9392// GoString returns the string representation
9393func (s DescribeEngineDefaultParametersOutput) GoString() string {
9394	return s.String()
9395}
9396
9397// SetEngineDefaults sets the EngineDefaults field's value.
9398func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
9399	s.EngineDefaults = v
9400	return s
9401}
9402
9403// Represents the input of a DescribeEvents operation.
9404type DescribeEventsInput struct {
9405	_ struct{} `type:"structure"`
9406
9407	// The number of minutes worth of events to retrieve.
9408	Duration *int64 `type:"integer"`
9409
9410	// The end of the time interval for which to retrieve events, specified in ISO
9411	// 8601 format.
9412	//
9413	// Example: 2017-03-30T07:03:49.555Z
9414	EndTime *time.Time `type:"timestamp"`
9415
9416	// An optional marker returned from a prior request. Use this marker for pagination
9417	// of results from this operation. If this parameter is specified, the response
9418	// includes only records beyond the marker, up to the value specified by MaxRecords.
9419	Marker *string `type:"string"`
9420
9421	// The maximum number of records to include in the response. If more records
9422	// exist than the specified MaxRecords value, a marker is included in the response
9423	// so that the remaining results can be retrieved.
9424	//
9425	// Default: 100
9426	//
9427	// Constraints: minimum 20; maximum 100.
9428	MaxRecords *int64 `type:"integer"`
9429
9430	// The identifier of the event source for which events are returned. If not
9431	// specified, all sources are included in the response.
9432	SourceIdentifier *string `type:"string"`
9433
9434	// The event source to retrieve events for. If no value is specified, all events
9435	// are returned.
9436	SourceType *string `type:"string" enum:"SourceType"`
9437
9438	// The beginning of the time interval to retrieve events for, specified in ISO
9439	// 8601 format.
9440	//
9441	// Example: 2017-03-30T07:03:49.555Z
9442	StartTime *time.Time `type:"timestamp"`
9443}
9444
9445// String returns the string representation
9446func (s DescribeEventsInput) String() string {
9447	return awsutil.Prettify(s)
9448}
9449
9450// GoString returns the string representation
9451func (s DescribeEventsInput) GoString() string {
9452	return s.String()
9453}
9454
9455// SetDuration sets the Duration field's value.
9456func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
9457	s.Duration = &v
9458	return s
9459}
9460
9461// SetEndTime sets the EndTime field's value.
9462func (s *DescribeEventsInput) SetEndTime(v time.Time) *DescribeEventsInput {
9463	s.EndTime = &v
9464	return s
9465}
9466
9467// SetMarker sets the Marker field's value.
9468func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
9469	s.Marker = &v
9470	return s
9471}
9472
9473// SetMaxRecords sets the MaxRecords field's value.
9474func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
9475	s.MaxRecords = &v
9476	return s
9477}
9478
9479// SetSourceIdentifier sets the SourceIdentifier field's value.
9480func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
9481	s.SourceIdentifier = &v
9482	return s
9483}
9484
9485// SetSourceType sets the SourceType field's value.
9486func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
9487	s.SourceType = &v
9488	return s
9489}
9490
9491// SetStartTime sets the StartTime field's value.
9492func (s *DescribeEventsInput) SetStartTime(v time.Time) *DescribeEventsInput {
9493	s.StartTime = &v
9494	return s
9495}
9496
9497// Represents the output of a DescribeEvents operation.
9498type DescribeEventsOutput struct {
9499	_ struct{} `type:"structure"`
9500
9501	// A list of events. Each element in the list contains detailed information
9502	// about one event.
9503	Events []*Event `locationNameList:"Event" type:"list"`
9504
9505	// Provides an identifier to allow retrieval of paginated results.
9506	Marker *string `type:"string"`
9507}
9508
9509// String returns the string representation
9510func (s DescribeEventsOutput) String() string {
9511	return awsutil.Prettify(s)
9512}
9513
9514// GoString returns the string representation
9515func (s DescribeEventsOutput) GoString() string {
9516	return s.String()
9517}
9518
9519// SetEvents sets the Events field's value.
9520func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
9521	s.Events = v
9522	return s
9523}
9524
9525// SetMarker sets the Marker field's value.
9526func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
9527	s.Marker = &v
9528	return s
9529}
9530
9531// Represents the input of a DescribeReplicationGroups operation.
9532type DescribeReplicationGroupsInput struct {
9533	_ struct{} `type:"structure"`
9534
9535	// An optional marker returned from a prior request. Use this marker for pagination
9536	// of results from this operation. If this parameter is specified, the response
9537	// includes only records beyond the marker, up to the value specified by MaxRecords.
9538	Marker *string `type:"string"`
9539
9540	// The maximum number of records to include in the response. If more records
9541	// exist than the specified MaxRecords value, a marker is included in the response
9542	// so that the remaining results can be retrieved.
9543	//
9544	// Default: 100
9545	//
9546	// Constraints: minimum 20; maximum 100.
9547	MaxRecords *int64 `type:"integer"`
9548
9549	// The identifier for the replication group to be described. This parameter
9550	// is not case sensitive.
9551	//
9552	// If you do not specify this parameter, information about all replication groups
9553	// is returned.
9554	ReplicationGroupId *string `type:"string"`
9555}
9556
9557// String returns the string representation
9558func (s DescribeReplicationGroupsInput) String() string {
9559	return awsutil.Prettify(s)
9560}
9561
9562// GoString returns the string representation
9563func (s DescribeReplicationGroupsInput) GoString() string {
9564	return s.String()
9565}
9566
9567// SetMarker sets the Marker field's value.
9568func (s *DescribeReplicationGroupsInput) SetMarker(v string) *DescribeReplicationGroupsInput {
9569	s.Marker = &v
9570	return s
9571}
9572
9573// SetMaxRecords sets the MaxRecords field's value.
9574func (s *DescribeReplicationGroupsInput) SetMaxRecords(v int64) *DescribeReplicationGroupsInput {
9575	s.MaxRecords = &v
9576	return s
9577}
9578
9579// SetReplicationGroupId sets the ReplicationGroupId field's value.
9580func (s *DescribeReplicationGroupsInput) SetReplicationGroupId(v string) *DescribeReplicationGroupsInput {
9581	s.ReplicationGroupId = &v
9582	return s
9583}
9584
9585// Represents the output of a DescribeReplicationGroups operation.
9586type DescribeReplicationGroupsOutput struct {
9587	_ struct{} `type:"structure"`
9588
9589	// Provides an identifier to allow retrieval of paginated results.
9590	Marker *string `type:"string"`
9591
9592	// A list of replication groups. Each item in the list contains detailed information
9593	// about one replication group.
9594	ReplicationGroups []*ReplicationGroup `locationNameList:"ReplicationGroup" type:"list"`
9595}
9596
9597// String returns the string representation
9598func (s DescribeReplicationGroupsOutput) String() string {
9599	return awsutil.Prettify(s)
9600}
9601
9602// GoString returns the string representation
9603func (s DescribeReplicationGroupsOutput) GoString() string {
9604	return s.String()
9605}
9606
9607// SetMarker sets the Marker field's value.
9608func (s *DescribeReplicationGroupsOutput) SetMarker(v string) *DescribeReplicationGroupsOutput {
9609	s.Marker = &v
9610	return s
9611}
9612
9613// SetReplicationGroups sets the ReplicationGroups field's value.
9614func (s *DescribeReplicationGroupsOutput) SetReplicationGroups(v []*ReplicationGroup) *DescribeReplicationGroupsOutput {
9615	s.ReplicationGroups = v
9616	return s
9617}
9618
9619// Represents the input of a DescribeReservedCacheNodes operation.
9620type DescribeReservedCacheNodesInput struct {
9621	_ struct{} `type:"structure"`
9622
9623	// The cache node type filter value. Use this parameter to show only those reservations
9624	// matching the specified cache node type.
9625	//
9626	// The following node types are supported by ElastiCache. Generally speaking,
9627	// the current generation types provide more memory and computational power
9628	// at lower cost when compared to their equivalent previous generation counterparts.
9629	//
9630	//    * General purpose: Current generation: M5 node types: cache.m5.large,
9631	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
9632	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
9633	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
9634	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
9635	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
9636	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
9637	//    cache.m3.2xlarge
9638	//
9639	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
9640	//    cache.c1.xlarge
9641	//
9642	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
9643	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
9644	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
9645	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
9646	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
9647	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
9648	//    cache.r3.8xlarge
9649	//
9650	// Additional node type info
9651	//
9652	//    * All current generation instance types are created in Amazon VPC by default.
9653	//
9654	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
9655	//
9656	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
9657	//
9658	//    * Redis configuration variables appendonly and appendfsync are not supported
9659	//    on Redis version 2.8.22 and later.
9660	CacheNodeType *string `type:"string"`
9661
9662	// The duration filter value, specified in years or seconds. Use this parameter
9663	// to show only reservations for this duration.
9664	//
9665	// Valid Values: 1 | 3 | 31536000 | 94608000
9666	Duration *string `type:"string"`
9667
9668	// An optional marker returned from a prior request. Use this marker for pagination
9669	// of results from this operation. If this parameter is specified, the response
9670	// includes only records beyond the marker, up to the value specified by MaxRecords.
9671	Marker *string `type:"string"`
9672
9673	// The maximum number of records to include in the response. If more records
9674	// exist than the specified MaxRecords value, a marker is included in the response
9675	// so that the remaining results can be retrieved.
9676	//
9677	// Default: 100
9678	//
9679	// Constraints: minimum 20; maximum 100.
9680	MaxRecords *int64 `type:"integer"`
9681
9682	// The offering type filter value. Use this parameter to show only the available
9683	// offerings matching the specified offering type.
9684	//
9685	// Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
9686	OfferingType *string `type:"string"`
9687
9688	// The product description filter value. Use this parameter to show only those
9689	// reservations matching the specified product description.
9690	ProductDescription *string `type:"string"`
9691
9692	// The reserved cache node identifier filter value. Use this parameter to show
9693	// only the reservation that matches the specified reservation ID.
9694	ReservedCacheNodeId *string `type:"string"`
9695
9696	// The offering identifier filter value. Use this parameter to show only purchased
9697	// reservations matching the specified offering identifier.
9698	ReservedCacheNodesOfferingId *string `type:"string"`
9699}
9700
9701// String returns the string representation
9702func (s DescribeReservedCacheNodesInput) String() string {
9703	return awsutil.Prettify(s)
9704}
9705
9706// GoString returns the string representation
9707func (s DescribeReservedCacheNodesInput) GoString() string {
9708	return s.String()
9709}
9710
9711// SetCacheNodeType sets the CacheNodeType field's value.
9712func (s *DescribeReservedCacheNodesInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesInput {
9713	s.CacheNodeType = &v
9714	return s
9715}
9716
9717// SetDuration sets the Duration field's value.
9718func (s *DescribeReservedCacheNodesInput) SetDuration(v string) *DescribeReservedCacheNodesInput {
9719	s.Duration = &v
9720	return s
9721}
9722
9723// SetMarker sets the Marker field's value.
9724func (s *DescribeReservedCacheNodesInput) SetMarker(v string) *DescribeReservedCacheNodesInput {
9725	s.Marker = &v
9726	return s
9727}
9728
9729// SetMaxRecords sets the MaxRecords field's value.
9730func (s *DescribeReservedCacheNodesInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesInput {
9731	s.MaxRecords = &v
9732	return s
9733}
9734
9735// SetOfferingType sets the OfferingType field's value.
9736func (s *DescribeReservedCacheNodesInput) SetOfferingType(v string) *DescribeReservedCacheNodesInput {
9737	s.OfferingType = &v
9738	return s
9739}
9740
9741// SetProductDescription sets the ProductDescription field's value.
9742func (s *DescribeReservedCacheNodesInput) SetProductDescription(v string) *DescribeReservedCacheNodesInput {
9743	s.ProductDescription = &v
9744	return s
9745}
9746
9747// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
9748func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodeId(v string) *DescribeReservedCacheNodesInput {
9749	s.ReservedCacheNodeId = &v
9750	return s
9751}
9752
9753// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
9754func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesInput {
9755	s.ReservedCacheNodesOfferingId = &v
9756	return s
9757}
9758
9759// Represents the input of a DescribeReservedCacheNodesOfferings operation.
9760type DescribeReservedCacheNodesOfferingsInput struct {
9761	_ struct{} `type:"structure"`
9762
9763	// The cache node type filter value. Use this parameter to show only the available
9764	// offerings matching the specified cache node type.
9765	//
9766	// The following node types are supported by ElastiCache. Generally speaking,
9767	// the current generation types provide more memory and computational power
9768	// at lower cost when compared to their equivalent previous generation counterparts.
9769	//
9770	//    * General purpose: Current generation: M5 node types: cache.m5.large,
9771	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
9772	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
9773	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
9774	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
9775	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
9776	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
9777	//    cache.m3.2xlarge
9778	//
9779	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
9780	//    cache.c1.xlarge
9781	//
9782	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
9783	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
9784	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
9785	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
9786	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
9787	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
9788	//    cache.r3.8xlarge
9789	//
9790	// Additional node type info
9791	//
9792	//    * All current generation instance types are created in Amazon VPC by default.
9793	//
9794	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
9795	//
9796	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
9797	//
9798	//    * Redis configuration variables appendonly and appendfsync are not supported
9799	//    on Redis version 2.8.22 and later.
9800	CacheNodeType *string `type:"string"`
9801
9802	// Duration filter value, specified in years or seconds. Use this parameter
9803	// to show only reservations for a given duration.
9804	//
9805	// Valid Values: 1 | 3 | 31536000 | 94608000
9806	Duration *string `type:"string"`
9807
9808	// An optional marker returned from a prior request. Use this marker for pagination
9809	// of results from this operation. If this parameter is specified, the response
9810	// includes only records beyond the marker, up to the value specified by MaxRecords.
9811	Marker *string `type:"string"`
9812
9813	// The maximum number of records to include in the response. If more records
9814	// exist than the specified MaxRecords value, a marker is included in the response
9815	// so that the remaining results can be retrieved.
9816	//
9817	// Default: 100
9818	//
9819	// Constraints: minimum 20; maximum 100.
9820	MaxRecords *int64 `type:"integer"`
9821
9822	// The offering type filter value. Use this parameter to show only the available
9823	// offerings matching the specified offering type.
9824	//
9825	// Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
9826	OfferingType *string `type:"string"`
9827
9828	// The product description filter value. Use this parameter to show only the
9829	// available offerings matching the specified product description.
9830	ProductDescription *string `type:"string"`
9831
9832	// The offering identifier filter value. Use this parameter to show only the
9833	// available offering that matches the specified reservation identifier.
9834	//
9835	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
9836	ReservedCacheNodesOfferingId *string `type:"string"`
9837}
9838
9839// String returns the string representation
9840func (s DescribeReservedCacheNodesOfferingsInput) String() string {
9841	return awsutil.Prettify(s)
9842}
9843
9844// GoString returns the string representation
9845func (s DescribeReservedCacheNodesOfferingsInput) GoString() string {
9846	return s.String()
9847}
9848
9849// SetCacheNodeType sets the CacheNodeType field's value.
9850func (s *DescribeReservedCacheNodesOfferingsInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesOfferingsInput {
9851	s.CacheNodeType = &v
9852	return s
9853}
9854
9855// SetDuration sets the Duration field's value.
9856func (s *DescribeReservedCacheNodesOfferingsInput) SetDuration(v string) *DescribeReservedCacheNodesOfferingsInput {
9857	s.Duration = &v
9858	return s
9859}
9860
9861// SetMarker sets the Marker field's value.
9862func (s *DescribeReservedCacheNodesOfferingsInput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsInput {
9863	s.Marker = &v
9864	return s
9865}
9866
9867// SetMaxRecords sets the MaxRecords field's value.
9868func (s *DescribeReservedCacheNodesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesOfferingsInput {
9869	s.MaxRecords = &v
9870	return s
9871}
9872
9873// SetOfferingType sets the OfferingType field's value.
9874func (s *DescribeReservedCacheNodesOfferingsInput) SetOfferingType(v string) *DescribeReservedCacheNodesOfferingsInput {
9875	s.OfferingType = &v
9876	return s
9877}
9878
9879// SetProductDescription sets the ProductDescription field's value.
9880func (s *DescribeReservedCacheNodesOfferingsInput) SetProductDescription(v string) *DescribeReservedCacheNodesOfferingsInput {
9881	s.ProductDescription = &v
9882	return s
9883}
9884
9885// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
9886func (s *DescribeReservedCacheNodesOfferingsInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesOfferingsInput {
9887	s.ReservedCacheNodesOfferingId = &v
9888	return s
9889}
9890
9891// Represents the output of a DescribeReservedCacheNodesOfferings operation.
9892type DescribeReservedCacheNodesOfferingsOutput struct {
9893	_ struct{} `type:"structure"`
9894
9895	// Provides an identifier to allow retrieval of paginated results.
9896	Marker *string `type:"string"`
9897
9898	// A list of reserved cache node offerings. Each element in the list contains
9899	// detailed information about one offering.
9900	ReservedCacheNodesOfferings []*ReservedCacheNodesOffering `locationNameList:"ReservedCacheNodesOffering" type:"list"`
9901}
9902
9903// String returns the string representation
9904func (s DescribeReservedCacheNodesOfferingsOutput) String() string {
9905	return awsutil.Prettify(s)
9906}
9907
9908// GoString returns the string representation
9909func (s DescribeReservedCacheNodesOfferingsOutput) GoString() string {
9910	return s.String()
9911}
9912
9913// SetMarker sets the Marker field's value.
9914func (s *DescribeReservedCacheNodesOfferingsOutput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsOutput {
9915	s.Marker = &v
9916	return s
9917}
9918
9919// SetReservedCacheNodesOfferings sets the ReservedCacheNodesOfferings field's value.
9920func (s *DescribeReservedCacheNodesOfferingsOutput) SetReservedCacheNodesOfferings(v []*ReservedCacheNodesOffering) *DescribeReservedCacheNodesOfferingsOutput {
9921	s.ReservedCacheNodesOfferings = v
9922	return s
9923}
9924
9925// Represents the output of a DescribeReservedCacheNodes operation.
9926type DescribeReservedCacheNodesOutput struct {
9927	_ struct{} `type:"structure"`
9928
9929	// Provides an identifier to allow retrieval of paginated results.
9930	Marker *string `type:"string"`
9931
9932	// A list of reserved cache nodes. Each element in the list contains detailed
9933	// information about one node.
9934	ReservedCacheNodes []*ReservedCacheNode `locationNameList:"ReservedCacheNode" type:"list"`
9935}
9936
9937// String returns the string representation
9938func (s DescribeReservedCacheNodesOutput) String() string {
9939	return awsutil.Prettify(s)
9940}
9941
9942// GoString returns the string representation
9943func (s DescribeReservedCacheNodesOutput) GoString() string {
9944	return s.String()
9945}
9946
9947// SetMarker sets the Marker field's value.
9948func (s *DescribeReservedCacheNodesOutput) SetMarker(v string) *DescribeReservedCacheNodesOutput {
9949	s.Marker = &v
9950	return s
9951}
9952
9953// SetReservedCacheNodes sets the ReservedCacheNodes field's value.
9954func (s *DescribeReservedCacheNodesOutput) SetReservedCacheNodes(v []*ReservedCacheNode) *DescribeReservedCacheNodesOutput {
9955	s.ReservedCacheNodes = v
9956	return s
9957}
9958
9959type DescribeServiceUpdatesInput struct {
9960	_ struct{} `type:"structure"`
9961
9962	// An optional marker returned from a prior request. Use this marker for pagination
9963	// of results from this operation. If this parameter is specified, the response
9964	// includes only records beyond the marker, up to the value specified by MaxRecords.
9965	Marker *string `type:"string"`
9966
9967	// The maximum number of records to include in the response
9968	MaxRecords *int64 `type:"integer"`
9969
9970	// The unique ID of the service update
9971	ServiceUpdateName *string `type:"string"`
9972
9973	// The status of the service update
9974	ServiceUpdateStatus []*string `type:"list"`
9975}
9976
9977// String returns the string representation
9978func (s DescribeServiceUpdatesInput) String() string {
9979	return awsutil.Prettify(s)
9980}
9981
9982// GoString returns the string representation
9983func (s DescribeServiceUpdatesInput) GoString() string {
9984	return s.String()
9985}
9986
9987// SetMarker sets the Marker field's value.
9988func (s *DescribeServiceUpdatesInput) SetMarker(v string) *DescribeServiceUpdatesInput {
9989	s.Marker = &v
9990	return s
9991}
9992
9993// SetMaxRecords sets the MaxRecords field's value.
9994func (s *DescribeServiceUpdatesInput) SetMaxRecords(v int64) *DescribeServiceUpdatesInput {
9995	s.MaxRecords = &v
9996	return s
9997}
9998
9999// SetServiceUpdateName sets the ServiceUpdateName field's value.
10000func (s *DescribeServiceUpdatesInput) SetServiceUpdateName(v string) *DescribeServiceUpdatesInput {
10001	s.ServiceUpdateName = &v
10002	return s
10003}
10004
10005// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
10006func (s *DescribeServiceUpdatesInput) SetServiceUpdateStatus(v []*string) *DescribeServiceUpdatesInput {
10007	s.ServiceUpdateStatus = v
10008	return s
10009}
10010
10011type DescribeServiceUpdatesOutput struct {
10012	_ struct{} `type:"structure"`
10013
10014	// An optional marker returned from a prior request. Use this marker for pagination
10015	// of results from this operation. If this parameter is specified, the response
10016	// includes only records beyond the marker, up to the value specified by MaxRecords.
10017	Marker *string `type:"string"`
10018
10019	// A list of service updates
10020	ServiceUpdates []*ServiceUpdate `locationNameList:"ServiceUpdate" type:"list"`
10021}
10022
10023// String returns the string representation
10024func (s DescribeServiceUpdatesOutput) String() string {
10025	return awsutil.Prettify(s)
10026}
10027
10028// GoString returns the string representation
10029func (s DescribeServiceUpdatesOutput) GoString() string {
10030	return s.String()
10031}
10032
10033// SetMarker sets the Marker field's value.
10034func (s *DescribeServiceUpdatesOutput) SetMarker(v string) *DescribeServiceUpdatesOutput {
10035	s.Marker = &v
10036	return s
10037}
10038
10039// SetServiceUpdates sets the ServiceUpdates field's value.
10040func (s *DescribeServiceUpdatesOutput) SetServiceUpdates(v []*ServiceUpdate) *DescribeServiceUpdatesOutput {
10041	s.ServiceUpdates = v
10042	return s
10043}
10044
10045// Represents the input of a DescribeSnapshotsMessage operation.
10046type DescribeSnapshotsInput struct {
10047	_ struct{} `type:"structure"`
10048
10049	// A user-supplied cluster identifier. If this parameter is specified, only
10050	// snapshots associated with that specific cluster are described.
10051	CacheClusterId *string `type:"string"`
10052
10053	// An optional marker returned from a prior request. Use this marker for pagination
10054	// of results from this operation. If this parameter is specified, the response
10055	// includes only records beyond the marker, up to the value specified by MaxRecords.
10056	Marker *string `type:"string"`
10057
10058	// The maximum number of records to include in the response. If more records
10059	// exist than the specified MaxRecords value, a marker is included in the response
10060	// so that the remaining results can be retrieved.
10061	//
10062	// Default: 50
10063	//
10064	// Constraints: minimum 20; maximum 50.
10065	MaxRecords *int64 `type:"integer"`
10066
10067	// A user-supplied replication group identifier. If this parameter is specified,
10068	// only snapshots associated with that specific replication group are described.
10069	ReplicationGroupId *string `type:"string"`
10070
10071	// A Boolean value which if true, the node group (shard) configuration is included
10072	// in the snapshot description.
10073	ShowNodeGroupConfig *bool `type:"boolean"`
10074
10075	// A user-supplied name of the snapshot. If this parameter is specified, only
10076	// this snapshot are described.
10077	SnapshotName *string `type:"string"`
10078
10079	// If set to system, the output shows snapshots that were automatically created
10080	// by ElastiCache. If set to user the output shows snapshots that were manually
10081	// created. If omitted, the output shows both automatically and manually created
10082	// snapshots.
10083	SnapshotSource *string `type:"string"`
10084}
10085
10086// String returns the string representation
10087func (s DescribeSnapshotsInput) String() string {
10088	return awsutil.Prettify(s)
10089}
10090
10091// GoString returns the string representation
10092func (s DescribeSnapshotsInput) GoString() string {
10093	return s.String()
10094}
10095
10096// SetCacheClusterId sets the CacheClusterId field's value.
10097func (s *DescribeSnapshotsInput) SetCacheClusterId(v string) *DescribeSnapshotsInput {
10098	s.CacheClusterId = &v
10099	return s
10100}
10101
10102// SetMarker sets the Marker field's value.
10103func (s *DescribeSnapshotsInput) SetMarker(v string) *DescribeSnapshotsInput {
10104	s.Marker = &v
10105	return s
10106}
10107
10108// SetMaxRecords sets the MaxRecords field's value.
10109func (s *DescribeSnapshotsInput) SetMaxRecords(v int64) *DescribeSnapshotsInput {
10110	s.MaxRecords = &v
10111	return s
10112}
10113
10114// SetReplicationGroupId sets the ReplicationGroupId field's value.
10115func (s *DescribeSnapshotsInput) SetReplicationGroupId(v string) *DescribeSnapshotsInput {
10116	s.ReplicationGroupId = &v
10117	return s
10118}
10119
10120// SetShowNodeGroupConfig sets the ShowNodeGroupConfig field's value.
10121func (s *DescribeSnapshotsInput) SetShowNodeGroupConfig(v bool) *DescribeSnapshotsInput {
10122	s.ShowNodeGroupConfig = &v
10123	return s
10124}
10125
10126// SetSnapshotName sets the SnapshotName field's value.
10127func (s *DescribeSnapshotsInput) SetSnapshotName(v string) *DescribeSnapshotsInput {
10128	s.SnapshotName = &v
10129	return s
10130}
10131
10132// SetSnapshotSource sets the SnapshotSource field's value.
10133func (s *DescribeSnapshotsInput) SetSnapshotSource(v string) *DescribeSnapshotsInput {
10134	s.SnapshotSource = &v
10135	return s
10136}
10137
10138// Represents the output of a DescribeSnapshots operation.
10139type DescribeSnapshotsOutput struct {
10140	_ struct{} `type:"structure"`
10141
10142	// An optional marker returned from a prior request. Use this marker for pagination
10143	// of results from this operation. If this parameter is specified, the response
10144	// includes only records beyond the marker, up to the value specified by MaxRecords.
10145	Marker *string `type:"string"`
10146
10147	// A list of snapshots. Each item in the list contains detailed information
10148	// about one snapshot.
10149	Snapshots []*Snapshot `locationNameList:"Snapshot" type:"list"`
10150}
10151
10152// String returns the string representation
10153func (s DescribeSnapshotsOutput) String() string {
10154	return awsutil.Prettify(s)
10155}
10156
10157// GoString returns the string representation
10158func (s DescribeSnapshotsOutput) GoString() string {
10159	return s.String()
10160}
10161
10162// SetMarker sets the Marker field's value.
10163func (s *DescribeSnapshotsOutput) SetMarker(v string) *DescribeSnapshotsOutput {
10164	s.Marker = &v
10165	return s
10166}
10167
10168// SetSnapshots sets the Snapshots field's value.
10169func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput {
10170	s.Snapshots = v
10171	return s
10172}
10173
10174type DescribeUpdateActionsInput struct {
10175	_ struct{} `type:"structure"`
10176
10177	// An optional marker returned from a prior request. Use this marker for pagination
10178	// of results from this operation. If this parameter is specified, the response
10179	// includes only records beyond the marker, up to the value specified by MaxRecords.
10180	Marker *string `type:"string"`
10181
10182	// The maximum number of records to include in the response
10183	MaxRecords *int64 `type:"integer"`
10184
10185	// The replication group IDs
10186	ReplicationGroupIds []*string `type:"list"`
10187
10188	// The unique ID of the service update
10189	ServiceUpdateName *string `type:"string"`
10190
10191	// The status of the service update
10192	ServiceUpdateStatus []*string `type:"list"`
10193
10194	// The range of time specified to search for service updates that are in available
10195	// status
10196	ServiceUpdateTimeRange *TimeRangeFilter `type:"structure"`
10197
10198	// Dictates whether to include node level update status in the response
10199	ShowNodeLevelUpdateStatus *bool `type:"boolean"`
10200
10201	// The status of the update action.
10202	UpdateActionStatus []*string `type:"list"`
10203}
10204
10205// String returns the string representation
10206func (s DescribeUpdateActionsInput) String() string {
10207	return awsutil.Prettify(s)
10208}
10209
10210// GoString returns the string representation
10211func (s DescribeUpdateActionsInput) GoString() string {
10212	return s.String()
10213}
10214
10215// SetMarker sets the Marker field's value.
10216func (s *DescribeUpdateActionsInput) SetMarker(v string) *DescribeUpdateActionsInput {
10217	s.Marker = &v
10218	return s
10219}
10220
10221// SetMaxRecords sets the MaxRecords field's value.
10222func (s *DescribeUpdateActionsInput) SetMaxRecords(v int64) *DescribeUpdateActionsInput {
10223	s.MaxRecords = &v
10224	return s
10225}
10226
10227// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
10228func (s *DescribeUpdateActionsInput) SetReplicationGroupIds(v []*string) *DescribeUpdateActionsInput {
10229	s.ReplicationGroupIds = v
10230	return s
10231}
10232
10233// SetServiceUpdateName sets the ServiceUpdateName field's value.
10234func (s *DescribeUpdateActionsInput) SetServiceUpdateName(v string) *DescribeUpdateActionsInput {
10235	s.ServiceUpdateName = &v
10236	return s
10237}
10238
10239// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
10240func (s *DescribeUpdateActionsInput) SetServiceUpdateStatus(v []*string) *DescribeUpdateActionsInput {
10241	s.ServiceUpdateStatus = v
10242	return s
10243}
10244
10245// SetServiceUpdateTimeRange sets the ServiceUpdateTimeRange field's value.
10246func (s *DescribeUpdateActionsInput) SetServiceUpdateTimeRange(v *TimeRangeFilter) *DescribeUpdateActionsInput {
10247	s.ServiceUpdateTimeRange = v
10248	return s
10249}
10250
10251// SetShowNodeLevelUpdateStatus sets the ShowNodeLevelUpdateStatus field's value.
10252func (s *DescribeUpdateActionsInput) SetShowNodeLevelUpdateStatus(v bool) *DescribeUpdateActionsInput {
10253	s.ShowNodeLevelUpdateStatus = &v
10254	return s
10255}
10256
10257// SetUpdateActionStatus sets the UpdateActionStatus field's value.
10258func (s *DescribeUpdateActionsInput) SetUpdateActionStatus(v []*string) *DescribeUpdateActionsInput {
10259	s.UpdateActionStatus = v
10260	return s
10261}
10262
10263type DescribeUpdateActionsOutput struct {
10264	_ struct{} `type:"structure"`
10265
10266	// An optional marker returned from a prior request. Use this marker for pagination
10267	// of results from this operation. If this parameter is specified, the response
10268	// includes only records beyond the marker, up to the value specified by MaxRecords.
10269	Marker *string `type:"string"`
10270
10271	// Returns a list of update actions
10272	UpdateActions []*UpdateAction `locationNameList:"UpdateAction" type:"list"`
10273}
10274
10275// String returns the string representation
10276func (s DescribeUpdateActionsOutput) String() string {
10277	return awsutil.Prettify(s)
10278}
10279
10280// GoString returns the string representation
10281func (s DescribeUpdateActionsOutput) GoString() string {
10282	return s.String()
10283}
10284
10285// SetMarker sets the Marker field's value.
10286func (s *DescribeUpdateActionsOutput) SetMarker(v string) *DescribeUpdateActionsOutput {
10287	s.Marker = &v
10288	return s
10289}
10290
10291// SetUpdateActions sets the UpdateActions field's value.
10292func (s *DescribeUpdateActionsOutput) SetUpdateActions(v []*UpdateAction) *DescribeUpdateActionsOutput {
10293	s.UpdateActions = v
10294	return s
10295}
10296
10297// Provides ownership and status information for an Amazon EC2 security group.
10298type EC2SecurityGroup struct {
10299	_ struct{} `type:"structure"`
10300
10301	// The name of the Amazon EC2 security group.
10302	EC2SecurityGroupName *string `type:"string"`
10303
10304	// The AWS account ID of the Amazon EC2 security group owner.
10305	EC2SecurityGroupOwnerId *string `type:"string"`
10306
10307	// The status of the Amazon EC2 security group.
10308	Status *string `type:"string"`
10309}
10310
10311// String returns the string representation
10312func (s EC2SecurityGroup) String() string {
10313	return awsutil.Prettify(s)
10314}
10315
10316// GoString returns the string representation
10317func (s EC2SecurityGroup) GoString() string {
10318	return s.String()
10319}
10320
10321// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
10322func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
10323	s.EC2SecurityGroupName = &v
10324	return s
10325}
10326
10327// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
10328func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
10329	s.EC2SecurityGroupOwnerId = &v
10330	return s
10331}
10332
10333// SetStatus sets the Status field's value.
10334func (s *EC2SecurityGroup) SetStatus(v string) *EC2SecurityGroup {
10335	s.Status = &v
10336	return s
10337}
10338
10339// Represents the information required for client programs to connect to a cache
10340// node.
10341type Endpoint struct {
10342	_ struct{} `type:"structure"`
10343
10344	// The DNS hostname of the cache node.
10345	Address *string `type:"string"`
10346
10347	// The port number that the cache engine is listening on.
10348	Port *int64 `type:"integer"`
10349}
10350
10351// String returns the string representation
10352func (s Endpoint) String() string {
10353	return awsutil.Prettify(s)
10354}
10355
10356// GoString returns the string representation
10357func (s Endpoint) GoString() string {
10358	return s.String()
10359}
10360
10361// SetAddress sets the Address field's value.
10362func (s *Endpoint) SetAddress(v string) *Endpoint {
10363	s.Address = &v
10364	return s
10365}
10366
10367// SetPort sets the Port field's value.
10368func (s *Endpoint) SetPort(v int64) *Endpoint {
10369	s.Port = &v
10370	return s
10371}
10372
10373// Represents the output of a DescribeEngineDefaultParameters operation.
10374type EngineDefaults struct {
10375	_ struct{} `type:"structure"`
10376
10377	// A list of parameters specific to a particular cache node type. Each element
10378	// in the list contains detailed information about one parameter.
10379	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
10380
10381	// Specifies the name of the cache parameter group family to which the engine
10382	// default parameters apply.
10383	//
10384	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
10385	// | redis4.0 | redis5.0 |
10386	CacheParameterGroupFamily *string `type:"string"`
10387
10388	// Provides an identifier to allow retrieval of paginated results.
10389	Marker *string `type:"string"`
10390
10391	// Contains a list of engine default parameters.
10392	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
10393}
10394
10395// String returns the string representation
10396func (s EngineDefaults) String() string {
10397	return awsutil.Prettify(s)
10398}
10399
10400// GoString returns the string representation
10401func (s EngineDefaults) GoString() string {
10402	return s.String()
10403}
10404
10405// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
10406func (s *EngineDefaults) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *EngineDefaults {
10407	s.CacheNodeTypeSpecificParameters = v
10408	return s
10409}
10410
10411// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
10412func (s *EngineDefaults) SetCacheParameterGroupFamily(v string) *EngineDefaults {
10413	s.CacheParameterGroupFamily = &v
10414	return s
10415}
10416
10417// SetMarker sets the Marker field's value.
10418func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
10419	s.Marker = &v
10420	return s
10421}
10422
10423// SetParameters sets the Parameters field's value.
10424func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
10425	s.Parameters = v
10426	return s
10427}
10428
10429// Represents a single occurrence of something interesting within the system.
10430// Some examples of events are creating a cluster, adding or removing a cache
10431// node, or rebooting a node.
10432type Event struct {
10433	_ struct{} `type:"structure"`
10434
10435	// The date and time when the event occurred.
10436	Date *time.Time `type:"timestamp"`
10437
10438	// The text of the event.
10439	Message *string `type:"string"`
10440
10441	// The identifier for the source of the event. For example, if the event occurred
10442	// at the cluster level, the identifier would be the name of the cluster.
10443	SourceIdentifier *string `type:"string"`
10444
10445	// Specifies the origin of this event - a cluster, a parameter group, a security
10446	// group, etc.
10447	SourceType *string `type:"string" enum:"SourceType"`
10448}
10449
10450// String returns the string representation
10451func (s Event) String() string {
10452	return awsutil.Prettify(s)
10453}
10454
10455// GoString returns the string representation
10456func (s Event) GoString() string {
10457	return s.String()
10458}
10459
10460// SetDate sets the Date field's value.
10461func (s *Event) SetDate(v time.Time) *Event {
10462	s.Date = &v
10463	return s
10464}
10465
10466// SetMessage sets the Message field's value.
10467func (s *Event) SetMessage(v string) *Event {
10468	s.Message = &v
10469	return s
10470}
10471
10472// SetSourceIdentifier sets the SourceIdentifier field's value.
10473func (s *Event) SetSourceIdentifier(v string) *Event {
10474	s.SourceIdentifier = &v
10475	return s
10476}
10477
10478// SetSourceType sets the SourceType field's value.
10479func (s *Event) SetSourceType(v string) *Event {
10480	s.SourceType = &v
10481	return s
10482}
10483
10484type IncreaseReplicaCountInput struct {
10485	_ struct{} `type:"structure"`
10486
10487	// If True, the number of replica nodes is increased immediately. ApplyImmediately=False
10488	// is not currently supported.
10489	//
10490	// ApplyImmediately is a required field
10491	ApplyImmediately *bool `type:"boolean" required:"true"`
10492
10493	// The number of read replica nodes you want at the completion of this operation.
10494	// For Redis (cluster mode disabled) replication groups, this is the number
10495	// of replica nodes in the replication group. For Redis (cluster mode enabled)
10496	// replication groups, this is the number of replica nodes in each of the replication
10497	// group's node groups.
10498	NewReplicaCount *int64 `type:"integer"`
10499
10500	// A list of ConfigureShard objects that can be used to configure each shard
10501	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
10502	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
10503	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
10504
10505	// The id of the replication group to which you want to add replica nodes.
10506	//
10507	// ReplicationGroupId is a required field
10508	ReplicationGroupId *string `type:"string" required:"true"`
10509}
10510
10511// String returns the string representation
10512func (s IncreaseReplicaCountInput) String() string {
10513	return awsutil.Prettify(s)
10514}
10515
10516// GoString returns the string representation
10517func (s IncreaseReplicaCountInput) GoString() string {
10518	return s.String()
10519}
10520
10521// Validate inspects the fields of the type to determine if they are valid.
10522func (s *IncreaseReplicaCountInput) Validate() error {
10523	invalidParams := request.ErrInvalidParams{Context: "IncreaseReplicaCountInput"}
10524	if s.ApplyImmediately == nil {
10525		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
10526	}
10527	if s.ReplicationGroupId == nil {
10528		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
10529	}
10530	if s.ReplicaConfiguration != nil {
10531		for i, v := range s.ReplicaConfiguration {
10532			if v == nil {
10533				continue
10534			}
10535			if err := v.Validate(); err != nil {
10536				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
10537			}
10538		}
10539	}
10540
10541	if invalidParams.Len() > 0 {
10542		return invalidParams
10543	}
10544	return nil
10545}
10546
10547// SetApplyImmediately sets the ApplyImmediately field's value.
10548func (s *IncreaseReplicaCountInput) SetApplyImmediately(v bool) *IncreaseReplicaCountInput {
10549	s.ApplyImmediately = &v
10550	return s
10551}
10552
10553// SetNewReplicaCount sets the NewReplicaCount field's value.
10554func (s *IncreaseReplicaCountInput) SetNewReplicaCount(v int64) *IncreaseReplicaCountInput {
10555	s.NewReplicaCount = &v
10556	return s
10557}
10558
10559// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
10560func (s *IncreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *IncreaseReplicaCountInput {
10561	s.ReplicaConfiguration = v
10562	return s
10563}
10564
10565// SetReplicationGroupId sets the ReplicationGroupId field's value.
10566func (s *IncreaseReplicaCountInput) SetReplicationGroupId(v string) *IncreaseReplicaCountInput {
10567	s.ReplicationGroupId = &v
10568	return s
10569}
10570
10571type IncreaseReplicaCountOutput struct {
10572	_ struct{} `type:"structure"`
10573
10574	// Contains all of the attributes of a specific Redis replication group.
10575	ReplicationGroup *ReplicationGroup `type:"structure"`
10576}
10577
10578// String returns the string representation
10579func (s IncreaseReplicaCountOutput) String() string {
10580	return awsutil.Prettify(s)
10581}
10582
10583// GoString returns the string representation
10584func (s IncreaseReplicaCountOutput) GoString() string {
10585	return s.String()
10586}
10587
10588// SetReplicationGroup sets the ReplicationGroup field's value.
10589func (s *IncreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *IncreaseReplicaCountOutput {
10590	s.ReplicationGroup = v
10591	return s
10592}
10593
10594// The input parameters for the ListAllowedNodeTypeModifications operation.
10595type ListAllowedNodeTypeModificationsInput struct {
10596	_ struct{} `type:"structure"`
10597
10598	// The name of the cluster you want to scale up to a larger node instanced type.
10599	// ElastiCache uses the cluster id to identify the current node type of this
10600	// cluster and from that to create a list of node types you can scale up to.
10601	//
10602	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
10603	CacheClusterId *string `type:"string"`
10604
10605	// The name of the replication group want to scale up to a larger node type.
10606	// ElastiCache uses the replication group id to identify the current node type
10607	// being used by this replication group, and from that to create a list of node
10608	// types you can scale up to.
10609	//
10610	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
10611	ReplicationGroupId *string `type:"string"`
10612}
10613
10614// String returns the string representation
10615func (s ListAllowedNodeTypeModificationsInput) String() string {
10616	return awsutil.Prettify(s)
10617}
10618
10619// GoString returns the string representation
10620func (s ListAllowedNodeTypeModificationsInput) GoString() string {
10621	return s.String()
10622}
10623
10624// SetCacheClusterId sets the CacheClusterId field's value.
10625func (s *ListAllowedNodeTypeModificationsInput) SetCacheClusterId(v string) *ListAllowedNodeTypeModificationsInput {
10626	s.CacheClusterId = &v
10627	return s
10628}
10629
10630// SetReplicationGroupId sets the ReplicationGroupId field's value.
10631func (s *ListAllowedNodeTypeModificationsInput) SetReplicationGroupId(v string) *ListAllowedNodeTypeModificationsInput {
10632	s.ReplicationGroupId = &v
10633	return s
10634}
10635
10636// Represents the allowed node types you can use to modify your cluster or replication
10637// group.
10638type ListAllowedNodeTypeModificationsOutput struct {
10639	_ struct{} `type:"structure"`
10640
10641	// A string list, each element of which specifies a cache node type which you
10642	// can use to scale your cluster or replication group.
10643	//
10644	// When scaling up a Redis cluster or replication group using ModifyCacheCluster
10645	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
10646	// parameter.
10647	ScaleUpModifications []*string `type:"list"`
10648}
10649
10650// String returns the string representation
10651func (s ListAllowedNodeTypeModificationsOutput) String() string {
10652	return awsutil.Prettify(s)
10653}
10654
10655// GoString returns the string representation
10656func (s ListAllowedNodeTypeModificationsOutput) GoString() string {
10657	return s.String()
10658}
10659
10660// SetScaleUpModifications sets the ScaleUpModifications field's value.
10661func (s *ListAllowedNodeTypeModificationsOutput) SetScaleUpModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
10662	s.ScaleUpModifications = v
10663	return s
10664}
10665
10666// The input parameters for the ListTagsForResource operation.
10667type ListTagsForResourceInput struct {
10668	_ struct{} `type:"structure"`
10669
10670	// The Amazon Resource Name (ARN) of the resource for which you want the list
10671	// of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
10672	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
10673	//
10674	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
10675	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
10676	//
10677	// ResourceName is a required field
10678	ResourceName *string `type:"string" required:"true"`
10679}
10680
10681// String returns the string representation
10682func (s ListTagsForResourceInput) String() string {
10683	return awsutil.Prettify(s)
10684}
10685
10686// GoString returns the string representation
10687func (s ListTagsForResourceInput) GoString() string {
10688	return s.String()
10689}
10690
10691// Validate inspects the fields of the type to determine if they are valid.
10692func (s *ListTagsForResourceInput) Validate() error {
10693	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
10694	if s.ResourceName == nil {
10695		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
10696	}
10697
10698	if invalidParams.Len() > 0 {
10699		return invalidParams
10700	}
10701	return nil
10702}
10703
10704// SetResourceName sets the ResourceName field's value.
10705func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
10706	s.ResourceName = &v
10707	return s
10708}
10709
10710// Represents the input of a ModifyCacheCluster operation.
10711type ModifyCacheClusterInput struct {
10712	_ struct{} `type:"structure"`
10713
10714	// Specifies whether the new nodes in this Memcached cluster are all created
10715	// in a single Availability Zone or created across multiple Availability Zones.
10716	//
10717	// Valid values: single-az | cross-az.
10718	//
10719	// This option is only supported for Memcached clusters.
10720	//
10721	// You cannot specify single-az if the Memcached cluster already has cache nodes
10722	// in different Availability Zones. If cross-az is specified, existing Memcached
10723	// nodes remain in their current Availability Zone.
10724	//
10725	// Only newly created nodes are located in different Availability Zones. For
10726	// instructions on how to move existing Memcached nodes to different Availability
10727	// Zones, see the Availability Zone Considerations section of Cache Node Considerations
10728	// for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
10729	AZMode *string `type:"string" enum:"AZMode"`
10730
10731	// If true, this parameter causes the modifications in this request and any
10732	// pending modifications to be applied, asynchronously and as soon as possible,
10733	// regardless of the PreferredMaintenanceWindow setting for the cluster.
10734	//
10735	// If false, changes to the cluster are applied on the next maintenance reboot,
10736	// or the next failure reboot, whichever occurs first.
10737	//
10738	// If you perform a ModifyCacheCluster before a pending modification is applied,
10739	// the pending modification is replaced by the newer modification.
10740	//
10741	// Valid values: true | false
10742	//
10743	// Default: false
10744	ApplyImmediately *bool `type:"boolean"`
10745
10746	// This parameter is currently disabled.
10747	AutoMinorVersionUpgrade *bool `type:"boolean"`
10748
10749	// The cluster identifier. This value is stored as a lowercase string.
10750	//
10751	// CacheClusterId is a required field
10752	CacheClusterId *string `type:"string" required:"true"`
10753
10754	// A list of cache node IDs to be removed. A node ID is a numeric identifier
10755	// (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less
10756	// than the existing number of cache nodes. The number of cache node IDs supplied
10757	// in this parameter must match the difference between the existing number of
10758	// cache nodes in the cluster or pending cache nodes, whichever is greater,
10759	// and the value of NumCacheNodes in the request.
10760	//
10761	// For example: If you have 3 active cache nodes, 7 pending cache nodes, and
10762	// the number of cache nodes in this ModifyCacheCluster call is 5, you must
10763	// list 2 (7 - 5) cache node IDs to remove.
10764	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
10765
10766	// A valid cache node type that you want to scale this cluster up to.
10767	CacheNodeType *string `type:"string"`
10768
10769	// The name of the cache parameter group to apply to this cluster. This change
10770	// is asynchronously applied as soon as possible for parameters when the ApplyImmediately
10771	// parameter is specified as true for this request.
10772	CacheParameterGroupName *string `type:"string"`
10773
10774	// A list of cache security group names to authorize on this cluster. This change
10775	// is asynchronously applied as soon as possible.
10776	//
10777	// You can use this parameter only with clusters that are created outside of
10778	// an Amazon Virtual Private Cloud (Amazon VPC).
10779	//
10780	// Constraints: Must contain no more than 255 alphanumeric characters. Must
10781	// not be "Default".
10782	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
10783
10784	// The upgraded version of the cache engine to be run on the cache nodes.
10785	//
10786	// Important: You can upgrade to a newer engine version (see Selecting a Cache
10787	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
10788	// but you cannot downgrade to an earlier engine version. If you want to use
10789	// an earlier engine version, you must delete the existing cluster and create
10790	// it anew with the earlier engine version.
10791	EngineVersion *string `type:"string"`
10792
10793	// The list of Availability Zones where the new Memcached cache nodes are created.
10794	//
10795	// This parameter is only valid when NumCacheNodes in the request is greater
10796	// than the sum of the number of active cache nodes and the number of cache
10797	// nodes pending creation (which may be zero). The number of Availability Zones
10798	// supplied in this list must match the cache nodes being added in this request.
10799	//
10800	// This option is only supported on Memcached clusters.
10801	//
10802	// Scenarios:
10803	//
10804	//    * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
10805	//    NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones
10806	//    for the two new nodes.
10807	//
10808	//    * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from
10809	//    the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6
10810	//    ((3 + 2) + 1) and optionally specify an Availability Zone for the new
10811	//    node.
10812	//
10813	//    * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3
10814	//    to cancel all pending operations.
10815	//
10816	// The Availability Zone placement of nodes pending creation cannot be modified.
10817	// If you wish to cancel any nodes pending creation, add 0 nodes by setting
10818	// NumCacheNodes to the number of current nodes.
10819	//
10820	// If cross-az is specified, existing Memcached nodes remain in their current
10821	// Availability Zone. Only newly created nodes can be located in different Availability
10822	// Zones. For guidance on how to move existing Memcached nodes to different
10823	// Availability Zones, see the Availability Zone Considerations section of Cache
10824	// Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
10825	//
10826	// Impact of new add/remove requests upon pending requests
10827	//
10828	//    * Scenario-1 Pending Action: Delete New Request: Delete Result: The new
10829	//    delete, pending or immediate, replaces the pending delete.
10830	//
10831	//    * Scenario-2 Pending Action: Delete New Request: Create Result: The new
10832	//    create, pending or immediate, replaces the pending delete.
10833	//
10834	//    * Scenario-3 Pending Action: Create New Request: Delete Result: The new
10835	//    delete, pending or immediate, replaces the pending create.
10836	//
10837	//    * Scenario-4 Pending Action: Create New Request: Create Result: The new
10838	//    create is added to the pending create. Important: If the new create request
10839	//    is Apply Immediately - Yes, all creates are performed immediately. If
10840	//    the new create request is Apply Immediately - No, all creates are pending.
10841	NewAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
10842
10843	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
10844	// are sent.
10845	//
10846	// The Amazon SNS topic owner must be same as the cluster owner.
10847	NotificationTopicArn *string `type:"string"`
10848
10849	// The status of the Amazon SNS notification topic. Notifications are sent only
10850	// if the status is active.
10851	//
10852	// Valid values: active | inactive
10853	NotificationTopicStatus *string `type:"string"`
10854
10855	// The number of cache nodes that the cluster should have. If the value for
10856	// NumCacheNodes is greater than the sum of the number of current cache nodes
10857	// and the number of cache nodes pending creation (which may be zero), more
10858	// nodes are added. If the value is less than the number of existing cache nodes,
10859	// nodes are removed. If the value is equal to the number of current cache nodes,
10860	// any pending add or remove requests are canceled.
10861	//
10862	// If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter
10863	// to provide the IDs of the specific cache nodes to remove.
10864	//
10865	// For clusters running Redis, this value must be 1. For clusters running Memcached,
10866	// this value must be between 1 and 20.
10867	//
10868	// Adding or removing Memcached cache nodes can be applied immediately or as
10869	// a pending operation (see ApplyImmediately).
10870	//
10871	// A pending operation to modify the number of cache nodes in a cluster during
10872	// its maintenance window, whether by adding or removing nodes in accordance
10873	// with the scale out architecture, is not queued. The customer's latest request
10874	// to add or remove nodes to the cluster overrides any previous pending operations
10875	// to modify the number of cache nodes in the cluster. For example, a request
10876	// to remove 2 nodes would override a previous pending operation to remove 3
10877	// nodes. Similarly, a request to add 2 nodes would override a previous pending
10878	// operation to remove 3 nodes and vice versa. As Memcached cache nodes may
10879	// now be provisioned in different Availability Zones with flexible cache node
10880	// placement, a request to add nodes does not automatically override a previous
10881	// pending operation to add nodes. The customer can modify the previous pending
10882	// operation to add more nodes or explicitly cancel the pending request and
10883	// retry the new request. To cancel pending operations to modify the number
10884	// of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes
10885	// equal to the number of cache nodes currently in the cluster.
10886	NumCacheNodes *int64 `type:"integer"`
10887
10888	// Specifies the weekly time range during which maintenance on the cluster is
10889	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
10890	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
10891	//
10892	// Valid values for ddd are:
10893	//
10894	//    * sun
10895	//
10896	//    * mon
10897	//
10898	//    * tue
10899	//
10900	//    * wed
10901	//
10902	//    * thu
10903	//
10904	//    * fri
10905	//
10906	//    * sat
10907	//
10908	// Example: sun:23:00-mon:01:30
10909	PreferredMaintenanceWindow *string `type:"string"`
10910
10911	// Specifies the VPC Security Groups associated with the cluster.
10912	//
10913	// This parameter can be used only with clusters that are created in an Amazon
10914	// Virtual Private Cloud (Amazon VPC).
10915	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
10916
10917	// The number of days for which ElastiCache retains automatic cluster snapshots
10918	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
10919	// a snapshot that was taken today is retained for 5 days before being deleted.
10920	//
10921	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
10922	// off.
10923	SnapshotRetentionLimit *int64 `type:"integer"`
10924
10925	// The daily time range (in UTC) during which ElastiCache begins taking a daily
10926	// snapshot of your cluster.
10927	SnapshotWindow *string `type:"string"`
10928}
10929
10930// String returns the string representation
10931func (s ModifyCacheClusterInput) String() string {
10932	return awsutil.Prettify(s)
10933}
10934
10935// GoString returns the string representation
10936func (s ModifyCacheClusterInput) GoString() string {
10937	return s.String()
10938}
10939
10940// Validate inspects the fields of the type to determine if they are valid.
10941func (s *ModifyCacheClusterInput) Validate() error {
10942	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheClusterInput"}
10943	if s.CacheClusterId == nil {
10944		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
10945	}
10946
10947	if invalidParams.Len() > 0 {
10948		return invalidParams
10949	}
10950	return nil
10951}
10952
10953// SetAZMode sets the AZMode field's value.
10954func (s *ModifyCacheClusterInput) SetAZMode(v string) *ModifyCacheClusterInput {
10955	s.AZMode = &v
10956	return s
10957}
10958
10959// SetApplyImmediately sets the ApplyImmediately field's value.
10960func (s *ModifyCacheClusterInput) SetApplyImmediately(v bool) *ModifyCacheClusterInput {
10961	s.ApplyImmediately = &v
10962	return s
10963}
10964
10965// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
10966func (s *ModifyCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyCacheClusterInput {
10967	s.AutoMinorVersionUpgrade = &v
10968	return s
10969}
10970
10971// SetCacheClusterId sets the CacheClusterId field's value.
10972func (s *ModifyCacheClusterInput) SetCacheClusterId(v string) *ModifyCacheClusterInput {
10973	s.CacheClusterId = &v
10974	return s
10975}
10976
10977// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
10978func (s *ModifyCacheClusterInput) SetCacheNodeIdsToRemove(v []*string) *ModifyCacheClusterInput {
10979	s.CacheNodeIdsToRemove = v
10980	return s
10981}
10982
10983// SetCacheNodeType sets the CacheNodeType field's value.
10984func (s *ModifyCacheClusterInput) SetCacheNodeType(v string) *ModifyCacheClusterInput {
10985	s.CacheNodeType = &v
10986	return s
10987}
10988
10989// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10990func (s *ModifyCacheClusterInput) SetCacheParameterGroupName(v string) *ModifyCacheClusterInput {
10991	s.CacheParameterGroupName = &v
10992	return s
10993}
10994
10995// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
10996func (s *ModifyCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *ModifyCacheClusterInput {
10997	s.CacheSecurityGroupNames = v
10998	return s
10999}
11000
11001// SetEngineVersion sets the EngineVersion field's value.
11002func (s *ModifyCacheClusterInput) SetEngineVersion(v string) *ModifyCacheClusterInput {
11003	s.EngineVersion = &v
11004	return s
11005}
11006
11007// SetNewAvailabilityZones sets the NewAvailabilityZones field's value.
11008func (s *ModifyCacheClusterInput) SetNewAvailabilityZones(v []*string) *ModifyCacheClusterInput {
11009	s.NewAvailabilityZones = v
11010	return s
11011}
11012
11013// SetNotificationTopicArn sets the NotificationTopicArn field's value.
11014func (s *ModifyCacheClusterInput) SetNotificationTopicArn(v string) *ModifyCacheClusterInput {
11015	s.NotificationTopicArn = &v
11016	return s
11017}
11018
11019// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
11020func (s *ModifyCacheClusterInput) SetNotificationTopicStatus(v string) *ModifyCacheClusterInput {
11021	s.NotificationTopicStatus = &v
11022	return s
11023}
11024
11025// SetNumCacheNodes sets the NumCacheNodes field's value.
11026func (s *ModifyCacheClusterInput) SetNumCacheNodes(v int64) *ModifyCacheClusterInput {
11027	s.NumCacheNodes = &v
11028	return s
11029}
11030
11031// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
11032func (s *ModifyCacheClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyCacheClusterInput {
11033	s.PreferredMaintenanceWindow = &v
11034	return s
11035}
11036
11037// SetSecurityGroupIds sets the SecurityGroupIds field's value.
11038func (s *ModifyCacheClusterInput) SetSecurityGroupIds(v []*string) *ModifyCacheClusterInput {
11039	s.SecurityGroupIds = v
11040	return s
11041}
11042
11043// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
11044func (s *ModifyCacheClusterInput) SetSnapshotRetentionLimit(v int64) *ModifyCacheClusterInput {
11045	s.SnapshotRetentionLimit = &v
11046	return s
11047}
11048
11049// SetSnapshotWindow sets the SnapshotWindow field's value.
11050func (s *ModifyCacheClusterInput) SetSnapshotWindow(v string) *ModifyCacheClusterInput {
11051	s.SnapshotWindow = &v
11052	return s
11053}
11054
11055type ModifyCacheClusterOutput struct {
11056	_ struct{} `type:"structure"`
11057
11058	// Contains all of the attributes of a specific cluster.
11059	CacheCluster *CacheCluster `type:"structure"`
11060}
11061
11062// String returns the string representation
11063func (s ModifyCacheClusterOutput) String() string {
11064	return awsutil.Prettify(s)
11065}
11066
11067// GoString returns the string representation
11068func (s ModifyCacheClusterOutput) GoString() string {
11069	return s.String()
11070}
11071
11072// SetCacheCluster sets the CacheCluster field's value.
11073func (s *ModifyCacheClusterOutput) SetCacheCluster(v *CacheCluster) *ModifyCacheClusterOutput {
11074	s.CacheCluster = v
11075	return s
11076}
11077
11078// Represents the input of a ModifyCacheParameterGroup operation.
11079type ModifyCacheParameterGroupInput struct {
11080	_ struct{} `type:"structure"`
11081
11082	// The name of the cache parameter group to modify.
11083	//
11084	// CacheParameterGroupName is a required field
11085	CacheParameterGroupName *string `type:"string" required:"true"`
11086
11087	// An array of parameter names and values for the parameter update. You must
11088	// supply at least one parameter name and value; subsequent arguments are optional.
11089	// A maximum of 20 parameters may be modified per request.
11090	//
11091	// ParameterNameValues is a required field
11092	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"`
11093}
11094
11095// String returns the string representation
11096func (s ModifyCacheParameterGroupInput) String() string {
11097	return awsutil.Prettify(s)
11098}
11099
11100// GoString returns the string representation
11101func (s ModifyCacheParameterGroupInput) GoString() string {
11102	return s.String()
11103}
11104
11105// Validate inspects the fields of the type to determine if they are valid.
11106func (s *ModifyCacheParameterGroupInput) Validate() error {
11107	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheParameterGroupInput"}
11108	if s.CacheParameterGroupName == nil {
11109		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
11110	}
11111	if s.ParameterNameValues == nil {
11112		invalidParams.Add(request.NewErrParamRequired("ParameterNameValues"))
11113	}
11114
11115	if invalidParams.Len() > 0 {
11116		return invalidParams
11117	}
11118	return nil
11119}
11120
11121// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
11122func (s *ModifyCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ModifyCacheParameterGroupInput {
11123	s.CacheParameterGroupName = &v
11124	return s
11125}
11126
11127// SetParameterNameValues sets the ParameterNameValues field's value.
11128func (s *ModifyCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ModifyCacheParameterGroupInput {
11129	s.ParameterNameValues = v
11130	return s
11131}
11132
11133// Represents the input of a ModifyCacheSubnetGroup operation.
11134type ModifyCacheSubnetGroupInput struct {
11135	_ struct{} `type:"structure"`
11136
11137	// A description of the cache subnet group.
11138	CacheSubnetGroupDescription *string `type:"string"`
11139
11140	// The name for the cache subnet group. This value is stored as a lowercase
11141	// string.
11142	//
11143	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
11144	//
11145	// Example: mysubnetgroup
11146	//
11147	// CacheSubnetGroupName is a required field
11148	CacheSubnetGroupName *string `type:"string" required:"true"`
11149
11150	// The EC2 subnet IDs for the cache subnet group.
11151	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list"`
11152}
11153
11154// String returns the string representation
11155func (s ModifyCacheSubnetGroupInput) String() string {
11156	return awsutil.Prettify(s)
11157}
11158
11159// GoString returns the string representation
11160func (s ModifyCacheSubnetGroupInput) GoString() string {
11161	return s.String()
11162}
11163
11164// Validate inspects the fields of the type to determine if they are valid.
11165func (s *ModifyCacheSubnetGroupInput) Validate() error {
11166	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheSubnetGroupInput"}
11167	if s.CacheSubnetGroupName == nil {
11168		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
11169	}
11170
11171	if invalidParams.Len() > 0 {
11172		return invalidParams
11173	}
11174	return nil
11175}
11176
11177// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
11178func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *ModifyCacheSubnetGroupInput {
11179	s.CacheSubnetGroupDescription = &v
11180	return s
11181}
11182
11183// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
11184func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *ModifyCacheSubnetGroupInput {
11185	s.CacheSubnetGroupName = &v
11186	return s
11187}
11188
11189// SetSubnetIds sets the SubnetIds field's value.
11190func (s *ModifyCacheSubnetGroupInput) SetSubnetIds(v []*string) *ModifyCacheSubnetGroupInput {
11191	s.SubnetIds = v
11192	return s
11193}
11194
11195type ModifyCacheSubnetGroupOutput struct {
11196	_ struct{} `type:"structure"`
11197
11198	// Represents the output of one of the following operations:
11199	//
11200	//    * CreateCacheSubnetGroup
11201	//
11202	//    * ModifyCacheSubnetGroup
11203	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
11204}
11205
11206// String returns the string representation
11207func (s ModifyCacheSubnetGroupOutput) String() string {
11208	return awsutil.Prettify(s)
11209}
11210
11211// GoString returns the string representation
11212func (s ModifyCacheSubnetGroupOutput) GoString() string {
11213	return s.String()
11214}
11215
11216// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
11217func (s *ModifyCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *ModifyCacheSubnetGroupOutput {
11218	s.CacheSubnetGroup = v
11219	return s
11220}
11221
11222// Represents the input of a ModifyReplicationGroups operation.
11223type ModifyReplicationGroupInput struct {
11224	_ struct{} `type:"structure"`
11225
11226	// If true, this parameter causes the modifications in this request and any
11227	// pending modifications to be applied, asynchronously and as soon as possible,
11228	// regardless of the PreferredMaintenanceWindow setting for the replication
11229	// group.
11230	//
11231	// If false, changes to the nodes in the replication group are applied on the
11232	// next maintenance reboot, or the next failure reboot, whichever occurs first.
11233	//
11234	// Valid values: true | false
11235	//
11236	// Default: false
11237	ApplyImmediately *bool `type:"boolean"`
11238
11239	// This parameter is currently disabled.
11240	AutoMinorVersionUpgrade *bool `type:"boolean"`
11241
11242	// Determines whether a read replica is automatically promoted to read/write
11243	// primary if the existing primary encounters a failure.
11244	//
11245	// Valid values: true | false
11246	//
11247	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
11248	// on:
11249	//
11250	//    * Redis versions earlier than 2.8.6.
11251	//
11252	//    * Redis (cluster mode disabled): T1 node types.
11253	//
11254	//    * Redis (cluster mode enabled): T1 node types.
11255	AutomaticFailoverEnabled *bool `type:"boolean"`
11256
11257	// A valid cache node type that you want to scale this replication group to.
11258	CacheNodeType *string `type:"string"`
11259
11260	// The name of the cache parameter group to apply to all of the clusters in
11261	// this replication group. This change is asynchronously applied as soon as
11262	// possible for parameters when the ApplyImmediately parameter is specified
11263	// as true for this request.
11264	CacheParameterGroupName *string `type:"string"`
11265
11266	// A list of cache security group names to authorize for the clusters in this
11267	// replication group. This change is asynchronously applied as soon as possible.
11268	//
11269	// This parameter can be used only with replication group containing clusters
11270	// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
11271	//
11272	// Constraints: Must contain no more than 255 alphanumeric characters. Must
11273	// not be Default.
11274	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
11275
11276	// The upgraded version of the cache engine to be run on the clusters in the
11277	// replication group.
11278	//
11279	// Important: You can upgrade to a newer engine version (see Selecting a Cache
11280	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
11281	// but you cannot downgrade to an earlier engine version. If you want to use
11282	// an earlier engine version, you must delete the existing replication group
11283	// and create it anew with the earlier engine version.
11284	EngineVersion *string `type:"string"`
11285
11286	// Deprecated. This parameter is not used.
11287	//
11288	// Deprecated: NodeGroupId has been deprecated
11289	NodeGroupId *string `deprecated:"true" type:"string"`
11290
11291	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
11292	// are sent.
11293	//
11294	// The Amazon SNS topic owner must be same as the replication group owner.
11295	NotificationTopicArn *string `type:"string"`
11296
11297	// The status of the Amazon SNS notification topic for the replication group.
11298	// Notifications are sent only if the status is active.
11299	//
11300	// Valid values: active | inactive
11301	NotificationTopicStatus *string `type:"string"`
11302
11303	// Specifies the weekly time range during which maintenance on the cluster is
11304	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
11305	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
11306	//
11307	// Valid values for ddd are:
11308	//
11309	//    * sun
11310	//
11311	//    * mon
11312	//
11313	//    * tue
11314	//
11315	//    * wed
11316	//
11317	//    * thu
11318	//
11319	//    * fri
11320	//
11321	//    * sat
11322	//
11323	// Example: sun:23:00-mon:01:30
11324	PreferredMaintenanceWindow *string `type:"string"`
11325
11326	// For replication groups with a single primary, if this parameter is specified,
11327	// ElastiCache promotes the specified cluster in the specified replication group
11328	// to the primary role. The nodes of all other clusters in the replication group
11329	// are read replicas.
11330	PrimaryClusterId *string `type:"string"`
11331
11332	// A description for the replication group. Maximum length is 255 characters.
11333	ReplicationGroupDescription *string `type:"string"`
11334
11335	// The identifier of the replication group to modify.
11336	//
11337	// ReplicationGroupId is a required field
11338	ReplicationGroupId *string `type:"string" required:"true"`
11339
11340	// Specifies the VPC Security Groups associated with the clusters in the replication
11341	// group.
11342	//
11343	// This parameter can be used only with replication group containing clusters
11344	// running in an Amazon Virtual Private Cloud (Amazon VPC).
11345	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
11346
11347	// The number of days for which ElastiCache retains automatic node group (shard)
11348	// snapshots before deleting them. For example, if you set SnapshotRetentionLimit
11349	// to 5, a snapshot that was taken today is retained for 5 days before being
11350	// deleted.
11351	//
11352	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
11353	// are turned off.
11354	SnapshotRetentionLimit *int64 `type:"integer"`
11355
11356	// The daily time range (in UTC) during which ElastiCache begins taking a daily
11357	// snapshot of the node group (shard) specified by SnapshottingClusterId.
11358	//
11359	// Example: 05:00-09:00
11360	//
11361	// If you do not specify this parameter, ElastiCache automatically chooses an
11362	// appropriate time range.
11363	SnapshotWindow *string `type:"string"`
11364
11365	// The cluster ID that is used as the daily snapshot source for the replication
11366	// group. This parameter cannot be set for Redis (cluster mode enabled) replication
11367	// groups.
11368	SnapshottingClusterId *string `type:"string"`
11369}
11370
11371// String returns the string representation
11372func (s ModifyReplicationGroupInput) String() string {
11373	return awsutil.Prettify(s)
11374}
11375
11376// GoString returns the string representation
11377func (s ModifyReplicationGroupInput) GoString() string {
11378	return s.String()
11379}
11380
11381// Validate inspects the fields of the type to determine if they are valid.
11382func (s *ModifyReplicationGroupInput) Validate() error {
11383	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupInput"}
11384	if s.ReplicationGroupId == nil {
11385		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
11386	}
11387
11388	if invalidParams.Len() > 0 {
11389		return invalidParams
11390	}
11391	return nil
11392}
11393
11394// SetApplyImmediately sets the ApplyImmediately field's value.
11395func (s *ModifyReplicationGroupInput) SetApplyImmediately(v bool) *ModifyReplicationGroupInput {
11396	s.ApplyImmediately = &v
11397	return s
11398}
11399
11400// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
11401func (s *ModifyReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *ModifyReplicationGroupInput {
11402	s.AutoMinorVersionUpgrade = &v
11403	return s
11404}
11405
11406// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
11407func (s *ModifyReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyReplicationGroupInput {
11408	s.AutomaticFailoverEnabled = &v
11409	return s
11410}
11411
11412// SetCacheNodeType sets the CacheNodeType field's value.
11413func (s *ModifyReplicationGroupInput) SetCacheNodeType(v string) *ModifyReplicationGroupInput {
11414	s.CacheNodeType = &v
11415	return s
11416}
11417
11418// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
11419func (s *ModifyReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyReplicationGroupInput {
11420	s.CacheParameterGroupName = &v
11421	return s
11422}
11423
11424// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
11425func (s *ModifyReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *ModifyReplicationGroupInput {
11426	s.CacheSecurityGroupNames = v
11427	return s
11428}
11429
11430// SetEngineVersion sets the EngineVersion field's value.
11431func (s *ModifyReplicationGroupInput) SetEngineVersion(v string) *ModifyReplicationGroupInput {
11432	s.EngineVersion = &v
11433	return s
11434}
11435
11436// SetNodeGroupId sets the NodeGroupId field's value.
11437func (s *ModifyReplicationGroupInput) SetNodeGroupId(v string) *ModifyReplicationGroupInput {
11438	s.NodeGroupId = &v
11439	return s
11440}
11441
11442// SetNotificationTopicArn sets the NotificationTopicArn field's value.
11443func (s *ModifyReplicationGroupInput) SetNotificationTopicArn(v string) *ModifyReplicationGroupInput {
11444	s.NotificationTopicArn = &v
11445	return s
11446}
11447
11448// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
11449func (s *ModifyReplicationGroupInput) SetNotificationTopicStatus(v string) *ModifyReplicationGroupInput {
11450	s.NotificationTopicStatus = &v
11451	return s
11452}
11453
11454// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
11455func (s *ModifyReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *ModifyReplicationGroupInput {
11456	s.PreferredMaintenanceWindow = &v
11457	return s
11458}
11459
11460// SetPrimaryClusterId sets the PrimaryClusterId field's value.
11461func (s *ModifyReplicationGroupInput) SetPrimaryClusterId(v string) *ModifyReplicationGroupInput {
11462	s.PrimaryClusterId = &v
11463	return s
11464}
11465
11466// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
11467func (s *ModifyReplicationGroupInput) SetReplicationGroupDescription(v string) *ModifyReplicationGroupInput {
11468	s.ReplicationGroupDescription = &v
11469	return s
11470}
11471
11472// SetReplicationGroupId sets the ReplicationGroupId field's value.
11473func (s *ModifyReplicationGroupInput) SetReplicationGroupId(v string) *ModifyReplicationGroupInput {
11474	s.ReplicationGroupId = &v
11475	return s
11476}
11477
11478// SetSecurityGroupIds sets the SecurityGroupIds field's value.
11479func (s *ModifyReplicationGroupInput) SetSecurityGroupIds(v []*string) *ModifyReplicationGroupInput {
11480	s.SecurityGroupIds = v
11481	return s
11482}
11483
11484// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
11485func (s *ModifyReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *ModifyReplicationGroupInput {
11486	s.SnapshotRetentionLimit = &v
11487	return s
11488}
11489
11490// SetSnapshotWindow sets the SnapshotWindow field's value.
11491func (s *ModifyReplicationGroupInput) SetSnapshotWindow(v string) *ModifyReplicationGroupInput {
11492	s.SnapshotWindow = &v
11493	return s
11494}
11495
11496// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
11497func (s *ModifyReplicationGroupInput) SetSnapshottingClusterId(v string) *ModifyReplicationGroupInput {
11498	s.SnapshottingClusterId = &v
11499	return s
11500}
11501
11502type ModifyReplicationGroupOutput struct {
11503	_ struct{} `type:"structure"`
11504
11505	// Contains all of the attributes of a specific Redis replication group.
11506	ReplicationGroup *ReplicationGroup `type:"structure"`
11507}
11508
11509// String returns the string representation
11510func (s ModifyReplicationGroupOutput) String() string {
11511	return awsutil.Prettify(s)
11512}
11513
11514// GoString returns the string representation
11515func (s ModifyReplicationGroupOutput) GoString() string {
11516	return s.String()
11517}
11518
11519// SetReplicationGroup sets the ReplicationGroup field's value.
11520func (s *ModifyReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupOutput {
11521	s.ReplicationGroup = v
11522	return s
11523}
11524
11525// Represents the input for a ModifyReplicationGroupShardConfiguration operation.
11526type ModifyReplicationGroupShardConfigurationInput struct {
11527	_ struct{} `type:"structure"`
11528
11529	// Indicates that the shard reconfiguration process begins immediately. At present,
11530	// the only permitted value for this parameter is true.
11531	//
11532	// Value: true
11533	//
11534	// ApplyImmediately is a required field
11535	ApplyImmediately *bool `type:"boolean" required:"true"`
11536
11537	// The number of node groups (shards) that results from the modification of
11538	// the shard configuration.
11539	//
11540	// NodeGroupCount is a required field
11541	NodeGroupCount *int64 `type:"integer" required:"true"`
11542
11543	// If the value of NodeGroupCount is less than the current number of node groups
11544	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
11545	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
11546	//
11547	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
11548	// from the cluster.
11549	NodeGroupsToRemove []*string `locationNameList:"NodeGroupToRemove" type:"list"`
11550
11551	// If the value of NodeGroupCount is less than the current number of node groups
11552	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
11553	// NodeGroupsToRetain is a list of NodeGroupIds to retain in the cluster.
11554	//
11555	// ElastiCache for Redis will attempt to remove all node groups except those
11556	// listed by NodeGroupsToRetain from the cluster.
11557	NodeGroupsToRetain []*string `locationNameList:"NodeGroupToRetain" type:"list"`
11558
11559	// The name of the Redis (cluster mode enabled) cluster (replication group)
11560	// on which the shards are to be configured.
11561	//
11562	// ReplicationGroupId is a required field
11563	ReplicationGroupId *string `type:"string" required:"true"`
11564
11565	// Specifies the preferred availability zones for each node group in the cluster.
11566	// If the value of NodeGroupCount is greater than the current number of node
11567	// groups (shards), you can use this parameter to specify the preferred availability
11568	// zones of the cluster's shards. If you omit this parameter ElastiCache selects
11569	// availability zones for you.
11570	//
11571	// You can specify this parameter only if the value of NodeGroupCount is greater
11572	// than the current number of node groups (shards).
11573	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list"`
11574}
11575
11576// String returns the string representation
11577func (s ModifyReplicationGroupShardConfigurationInput) String() string {
11578	return awsutil.Prettify(s)
11579}
11580
11581// GoString returns the string representation
11582func (s ModifyReplicationGroupShardConfigurationInput) GoString() string {
11583	return s.String()
11584}
11585
11586// Validate inspects the fields of the type to determine if they are valid.
11587func (s *ModifyReplicationGroupShardConfigurationInput) Validate() error {
11588	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupShardConfigurationInput"}
11589	if s.ApplyImmediately == nil {
11590		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
11591	}
11592	if s.NodeGroupCount == nil {
11593		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
11594	}
11595	if s.ReplicationGroupId == nil {
11596		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
11597	}
11598	if s.ReshardingConfiguration != nil {
11599		for i, v := range s.ReshardingConfiguration {
11600			if v == nil {
11601				continue
11602			}
11603			if err := v.Validate(); err != nil {
11604				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
11605			}
11606		}
11607	}
11608
11609	if invalidParams.Len() > 0 {
11610		return invalidParams
11611	}
11612	return nil
11613}
11614
11615// SetApplyImmediately sets the ApplyImmediately field's value.
11616func (s *ModifyReplicationGroupShardConfigurationInput) SetApplyImmediately(v bool) *ModifyReplicationGroupShardConfigurationInput {
11617	s.ApplyImmediately = &v
11618	return s
11619}
11620
11621// SetNodeGroupCount sets the NodeGroupCount field's value.
11622func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupCount(v int64) *ModifyReplicationGroupShardConfigurationInput {
11623	s.NodeGroupCount = &v
11624	return s
11625}
11626
11627// SetNodeGroupsToRemove sets the NodeGroupsToRemove field's value.
11628func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRemove(v []*string) *ModifyReplicationGroupShardConfigurationInput {
11629	s.NodeGroupsToRemove = v
11630	return s
11631}
11632
11633// SetNodeGroupsToRetain sets the NodeGroupsToRetain field's value.
11634func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRetain(v []*string) *ModifyReplicationGroupShardConfigurationInput {
11635	s.NodeGroupsToRetain = v
11636	return s
11637}
11638
11639// SetReplicationGroupId sets the ReplicationGroupId field's value.
11640func (s *ModifyReplicationGroupShardConfigurationInput) SetReplicationGroupId(v string) *ModifyReplicationGroupShardConfigurationInput {
11641	s.ReplicationGroupId = &v
11642	return s
11643}
11644
11645// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
11646func (s *ModifyReplicationGroupShardConfigurationInput) SetReshardingConfiguration(v []*ReshardingConfiguration) *ModifyReplicationGroupShardConfigurationInput {
11647	s.ReshardingConfiguration = v
11648	return s
11649}
11650
11651type ModifyReplicationGroupShardConfigurationOutput struct {
11652	_ struct{} `type:"structure"`
11653
11654	// Contains all of the attributes of a specific Redis replication group.
11655	ReplicationGroup *ReplicationGroup `type:"structure"`
11656}
11657
11658// String returns the string representation
11659func (s ModifyReplicationGroupShardConfigurationOutput) String() string {
11660	return awsutil.Prettify(s)
11661}
11662
11663// GoString returns the string representation
11664func (s ModifyReplicationGroupShardConfigurationOutput) GoString() string {
11665	return s.String()
11666}
11667
11668// SetReplicationGroup sets the ReplicationGroup field's value.
11669func (s *ModifyReplicationGroupShardConfigurationOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupShardConfigurationOutput {
11670	s.ReplicationGroup = v
11671	return s
11672}
11673
11674// Represents a collection of cache nodes in a replication group. One node in
11675// the node group is the read/write primary node. All the other nodes are read-only
11676// Replica nodes.
11677type NodeGroup struct {
11678	_ struct{} `type:"structure"`
11679
11680	// The identifier for the node group (shard). A Redis (cluster mode disabled)
11681	// replication group contains only 1 node group; therefore, the node group ID
11682	// is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90
11683	// node groups numbered 0001 to 0090. Optionally, the user can provide the id
11684	// for a node group.
11685	NodeGroupId *string `type:"string"`
11686
11687	// A list containing information about individual nodes within the node group
11688	// (shard).
11689	NodeGroupMembers []*NodeGroupMember `locationNameList:"NodeGroupMember" type:"list"`
11690
11691	// The endpoint of the primary node in this node group (shard).
11692	PrimaryEndpoint *Endpoint `type:"structure"`
11693
11694	// The endpoint of the replica nodes in this node group (shard).
11695	ReaderEndpoint *Endpoint `type:"structure"`
11696
11697	// The keyspace for this node group (shard).
11698	Slots *string `type:"string"`
11699
11700	// The current state of this replication group - creating, available, etc.
11701	Status *string `type:"string"`
11702}
11703
11704// String returns the string representation
11705func (s NodeGroup) String() string {
11706	return awsutil.Prettify(s)
11707}
11708
11709// GoString returns the string representation
11710func (s NodeGroup) GoString() string {
11711	return s.String()
11712}
11713
11714// SetNodeGroupId sets the NodeGroupId field's value.
11715func (s *NodeGroup) SetNodeGroupId(v string) *NodeGroup {
11716	s.NodeGroupId = &v
11717	return s
11718}
11719
11720// SetNodeGroupMembers sets the NodeGroupMembers field's value.
11721func (s *NodeGroup) SetNodeGroupMembers(v []*NodeGroupMember) *NodeGroup {
11722	s.NodeGroupMembers = v
11723	return s
11724}
11725
11726// SetPrimaryEndpoint sets the PrimaryEndpoint field's value.
11727func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup {
11728	s.PrimaryEndpoint = v
11729	return s
11730}
11731
11732// SetReaderEndpoint sets the ReaderEndpoint field's value.
11733func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup {
11734	s.ReaderEndpoint = v
11735	return s
11736}
11737
11738// SetSlots sets the Slots field's value.
11739func (s *NodeGroup) SetSlots(v string) *NodeGroup {
11740	s.Slots = &v
11741	return s
11742}
11743
11744// SetStatus sets the Status field's value.
11745func (s *NodeGroup) SetStatus(v string) *NodeGroup {
11746	s.Status = &v
11747	return s
11748}
11749
11750// Node group (shard) configuration options. Each node group (shard) configuration
11751// has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
11752// ReplicaCount.
11753type NodeGroupConfiguration struct {
11754	_ struct{} `type:"structure"`
11755
11756	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
11757	// for the node group these configuration values apply to.
11758	NodeGroupId *string `min:"1" type:"string"`
11759
11760	// The Availability Zone where the primary node of this node group (shard) is
11761	// launched.
11762	PrimaryAvailabilityZone *string `type:"string"`
11763
11764	// A list of Availability Zones to be used for the read replicas. The number
11765	// of Availability Zones in this list must match the value of ReplicaCount or
11766	// ReplicasPerNodeGroup if not specified.
11767	ReplicaAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
11768
11769	// The number of read replica nodes in this node group (shard).
11770	ReplicaCount *int64 `type:"integer"`
11771
11772	// A string that specifies the keyspace for a particular node group. Keyspaces
11773	// range from 0 to 16,383. The string is in the format startkey-endkey.
11774	//
11775	// Example: "0-3999"
11776	Slots *string `type:"string"`
11777}
11778
11779// String returns the string representation
11780func (s NodeGroupConfiguration) String() string {
11781	return awsutil.Prettify(s)
11782}
11783
11784// GoString returns the string representation
11785func (s NodeGroupConfiguration) GoString() string {
11786	return s.String()
11787}
11788
11789// Validate inspects the fields of the type to determine if they are valid.
11790func (s *NodeGroupConfiguration) Validate() error {
11791	invalidParams := request.ErrInvalidParams{Context: "NodeGroupConfiguration"}
11792	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
11793		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
11794	}
11795
11796	if invalidParams.Len() > 0 {
11797		return invalidParams
11798	}
11799	return nil
11800}
11801
11802// SetNodeGroupId sets the NodeGroupId field's value.
11803func (s *NodeGroupConfiguration) SetNodeGroupId(v string) *NodeGroupConfiguration {
11804	s.NodeGroupId = &v
11805	return s
11806}
11807
11808// SetPrimaryAvailabilityZone sets the PrimaryAvailabilityZone field's value.
11809func (s *NodeGroupConfiguration) SetPrimaryAvailabilityZone(v string) *NodeGroupConfiguration {
11810	s.PrimaryAvailabilityZone = &v
11811	return s
11812}
11813
11814// SetReplicaAvailabilityZones sets the ReplicaAvailabilityZones field's value.
11815func (s *NodeGroupConfiguration) SetReplicaAvailabilityZones(v []*string) *NodeGroupConfiguration {
11816	s.ReplicaAvailabilityZones = v
11817	return s
11818}
11819
11820// SetReplicaCount sets the ReplicaCount field's value.
11821func (s *NodeGroupConfiguration) SetReplicaCount(v int64) *NodeGroupConfiguration {
11822	s.ReplicaCount = &v
11823	return s
11824}
11825
11826// SetSlots sets the Slots field's value.
11827func (s *NodeGroupConfiguration) SetSlots(v string) *NodeGroupConfiguration {
11828	s.Slots = &v
11829	return s
11830}
11831
11832// Represents a single node within a node group (shard).
11833type NodeGroupMember struct {
11834	_ struct{} `type:"structure"`
11835
11836	// The ID of the cluster to which the node belongs.
11837	CacheClusterId *string `type:"string"`
11838
11839	// The ID of the node within its cluster. A node ID is a numeric identifier
11840	// (0001, 0002, etc.).
11841	CacheNodeId *string `type:"string"`
11842
11843	// The role that is currently assigned to the node - primary or replica. This
11844	// member is only applicable for Redis (cluster mode disabled) replication groups.
11845	CurrentRole *string `type:"string"`
11846
11847	// The name of the Availability Zone in which the node is located.
11848	PreferredAvailabilityZone *string `type:"string"`
11849
11850	// The information required for client programs to connect to a node for read
11851	// operations. The read endpoint is only applicable on Redis (cluster mode disabled)
11852	// clusters.
11853	ReadEndpoint *Endpoint `type:"structure"`
11854}
11855
11856// String returns the string representation
11857func (s NodeGroupMember) String() string {
11858	return awsutil.Prettify(s)
11859}
11860
11861// GoString returns the string representation
11862func (s NodeGroupMember) GoString() string {
11863	return s.String()
11864}
11865
11866// SetCacheClusterId sets the CacheClusterId field's value.
11867func (s *NodeGroupMember) SetCacheClusterId(v string) *NodeGroupMember {
11868	s.CacheClusterId = &v
11869	return s
11870}
11871
11872// SetCacheNodeId sets the CacheNodeId field's value.
11873func (s *NodeGroupMember) SetCacheNodeId(v string) *NodeGroupMember {
11874	s.CacheNodeId = &v
11875	return s
11876}
11877
11878// SetCurrentRole sets the CurrentRole field's value.
11879func (s *NodeGroupMember) SetCurrentRole(v string) *NodeGroupMember {
11880	s.CurrentRole = &v
11881	return s
11882}
11883
11884// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
11885func (s *NodeGroupMember) SetPreferredAvailabilityZone(v string) *NodeGroupMember {
11886	s.PreferredAvailabilityZone = &v
11887	return s
11888}
11889
11890// SetReadEndpoint sets the ReadEndpoint field's value.
11891func (s *NodeGroupMember) SetReadEndpoint(v *Endpoint) *NodeGroupMember {
11892	s.ReadEndpoint = v
11893	return s
11894}
11895
11896// The status of the service update on the node group member
11897type NodeGroupMemberUpdateStatus struct {
11898	_ struct{} `type:"structure"`
11899
11900	// The cache cluster ID
11901	CacheClusterId *string `type:"string"`
11902
11903	// The node ID of the cache cluster
11904	CacheNodeId *string `type:"string"`
11905
11906	// The deletion date of the node
11907	NodeDeletionDate *time.Time `type:"timestamp"`
11908
11909	// The end date of the update for a node
11910	NodeUpdateEndDate *time.Time `type:"timestamp"`
11911
11912	// Reflects whether the update was initiated by the customer or automatically
11913	// applied
11914	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
11915
11916	// The date when the update is triggered
11917	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
11918
11919	// The start date of the update for a node
11920	NodeUpdateStartDate *time.Time `type:"timestamp"`
11921
11922	// The update status of the node
11923	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
11924
11925	// The date when the NodeUpdateStatus was last modified
11926	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
11927}
11928
11929// String returns the string representation
11930func (s NodeGroupMemberUpdateStatus) String() string {
11931	return awsutil.Prettify(s)
11932}
11933
11934// GoString returns the string representation
11935func (s NodeGroupMemberUpdateStatus) GoString() string {
11936	return s.String()
11937}
11938
11939// SetCacheClusterId sets the CacheClusterId field's value.
11940func (s *NodeGroupMemberUpdateStatus) SetCacheClusterId(v string) *NodeGroupMemberUpdateStatus {
11941	s.CacheClusterId = &v
11942	return s
11943}
11944
11945// SetCacheNodeId sets the CacheNodeId field's value.
11946func (s *NodeGroupMemberUpdateStatus) SetCacheNodeId(v string) *NodeGroupMemberUpdateStatus {
11947	s.CacheNodeId = &v
11948	return s
11949}
11950
11951// SetNodeDeletionDate sets the NodeDeletionDate field's value.
11952func (s *NodeGroupMemberUpdateStatus) SetNodeDeletionDate(v time.Time) *NodeGroupMemberUpdateStatus {
11953	s.NodeDeletionDate = &v
11954	return s
11955}
11956
11957// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
11958func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateEndDate(v time.Time) *NodeGroupMemberUpdateStatus {
11959	s.NodeUpdateEndDate = &v
11960	return s
11961}
11962
11963// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
11964func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedBy(v string) *NodeGroupMemberUpdateStatus {
11965	s.NodeUpdateInitiatedBy = &v
11966	return s
11967}
11968
11969// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
11970func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *NodeGroupMemberUpdateStatus {
11971	s.NodeUpdateInitiatedDate = &v
11972	return s
11973}
11974
11975// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
11976func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStartDate(v time.Time) *NodeGroupMemberUpdateStatus {
11977	s.NodeUpdateStartDate = &v
11978	return s
11979}
11980
11981// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
11982func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatus(v string) *NodeGroupMemberUpdateStatus {
11983	s.NodeUpdateStatus = &v
11984	return s
11985}
11986
11987// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
11988func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *NodeGroupMemberUpdateStatus {
11989	s.NodeUpdateStatusModifiedDate = &v
11990	return s
11991}
11992
11993// The status of the service update on the node group
11994type NodeGroupUpdateStatus struct {
11995	_ struct{} `type:"structure"`
11996
11997	// The ID of the node group
11998	NodeGroupId *string `type:"string"`
11999
12000	// The status of the service update on the node group member
12001	NodeGroupMemberUpdateStatus []*NodeGroupMemberUpdateStatus `locationNameList:"NodeGroupMemberUpdateStatus" type:"list"`
12002}
12003
12004// String returns the string representation
12005func (s NodeGroupUpdateStatus) String() string {
12006	return awsutil.Prettify(s)
12007}
12008
12009// GoString returns the string representation
12010func (s NodeGroupUpdateStatus) GoString() string {
12011	return s.String()
12012}
12013
12014// SetNodeGroupId sets the NodeGroupId field's value.
12015func (s *NodeGroupUpdateStatus) SetNodeGroupId(v string) *NodeGroupUpdateStatus {
12016	s.NodeGroupId = &v
12017	return s
12018}
12019
12020// SetNodeGroupMemberUpdateStatus sets the NodeGroupMemberUpdateStatus field's value.
12021func (s *NodeGroupUpdateStatus) SetNodeGroupMemberUpdateStatus(v []*NodeGroupMemberUpdateStatus) *NodeGroupUpdateStatus {
12022	s.NodeGroupMemberUpdateStatus = v
12023	return s
12024}
12025
12026// Represents an individual cache node in a snapshot of a cluster.
12027type NodeSnapshot struct {
12028	_ struct{} `type:"structure"`
12029
12030	// A unique identifier for the source cluster.
12031	CacheClusterId *string `type:"string"`
12032
12033	// The date and time when the cache node was created in the source cluster.
12034	CacheNodeCreateTime *time.Time `type:"timestamp"`
12035
12036	// The cache node identifier for the node in the source cluster.
12037	CacheNodeId *string `type:"string"`
12038
12039	// The size of the cache on the source cache node.
12040	CacheSize *string `type:"string"`
12041
12042	// The configuration for the source node group (shard).
12043	NodeGroupConfiguration *NodeGroupConfiguration `type:"structure"`
12044
12045	// A unique identifier for the source node group (shard).
12046	NodeGroupId *string `type:"string"`
12047
12048	// The date and time when the source node's metadata and cache data set was
12049	// obtained for the snapshot.
12050	SnapshotCreateTime *time.Time `type:"timestamp"`
12051}
12052
12053// String returns the string representation
12054func (s NodeSnapshot) String() string {
12055	return awsutil.Prettify(s)
12056}
12057
12058// GoString returns the string representation
12059func (s NodeSnapshot) GoString() string {
12060	return s.String()
12061}
12062
12063// SetCacheClusterId sets the CacheClusterId field's value.
12064func (s *NodeSnapshot) SetCacheClusterId(v string) *NodeSnapshot {
12065	s.CacheClusterId = &v
12066	return s
12067}
12068
12069// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
12070func (s *NodeSnapshot) SetCacheNodeCreateTime(v time.Time) *NodeSnapshot {
12071	s.CacheNodeCreateTime = &v
12072	return s
12073}
12074
12075// SetCacheNodeId sets the CacheNodeId field's value.
12076func (s *NodeSnapshot) SetCacheNodeId(v string) *NodeSnapshot {
12077	s.CacheNodeId = &v
12078	return s
12079}
12080
12081// SetCacheSize sets the CacheSize field's value.
12082func (s *NodeSnapshot) SetCacheSize(v string) *NodeSnapshot {
12083	s.CacheSize = &v
12084	return s
12085}
12086
12087// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
12088func (s *NodeSnapshot) SetNodeGroupConfiguration(v *NodeGroupConfiguration) *NodeSnapshot {
12089	s.NodeGroupConfiguration = v
12090	return s
12091}
12092
12093// SetNodeGroupId sets the NodeGroupId field's value.
12094func (s *NodeSnapshot) SetNodeGroupId(v string) *NodeSnapshot {
12095	s.NodeGroupId = &v
12096	return s
12097}
12098
12099// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
12100func (s *NodeSnapshot) SetSnapshotCreateTime(v time.Time) *NodeSnapshot {
12101	s.SnapshotCreateTime = &v
12102	return s
12103}
12104
12105// Describes a notification topic and its status. Notification topics are used
12106// for publishing ElastiCache events to subscribers using Amazon Simple Notification
12107// Service (SNS).
12108type NotificationConfiguration struct {
12109	_ struct{} `type:"structure"`
12110
12111	// The Amazon Resource Name (ARN) that identifies the topic.
12112	TopicArn *string `type:"string"`
12113
12114	// The current state of the topic.
12115	TopicStatus *string `type:"string"`
12116}
12117
12118// String returns the string representation
12119func (s NotificationConfiguration) String() string {
12120	return awsutil.Prettify(s)
12121}
12122
12123// GoString returns the string representation
12124func (s NotificationConfiguration) GoString() string {
12125	return s.String()
12126}
12127
12128// SetTopicArn sets the TopicArn field's value.
12129func (s *NotificationConfiguration) SetTopicArn(v string) *NotificationConfiguration {
12130	s.TopicArn = &v
12131	return s
12132}
12133
12134// SetTopicStatus sets the TopicStatus field's value.
12135func (s *NotificationConfiguration) SetTopicStatus(v string) *NotificationConfiguration {
12136	s.TopicStatus = &v
12137	return s
12138}
12139
12140// Describes an individual setting that controls some aspect of ElastiCache
12141// behavior.
12142type Parameter struct {
12143	_ struct{} `type:"structure"`
12144
12145	// The valid range of values for the parameter.
12146	AllowedValues *string `type:"string"`
12147
12148	// Indicates whether a change to the parameter is applied immediately or requires
12149	// a reboot for the change to be applied. You can force a reboot or wait until
12150	// the next maintenance window's reboot. For more information, see Rebooting
12151	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
12152	ChangeType *string `type:"string" enum:"ChangeType"`
12153
12154	// The valid data type for the parameter.
12155	DataType *string `type:"string"`
12156
12157	// A description of the parameter.
12158	Description *string `type:"string"`
12159
12160	// Indicates whether (true) or not (false) the parameter can be modified. Some
12161	// parameters have security or operational implications that prevent them from
12162	// being changed.
12163	IsModifiable *bool `type:"boolean"`
12164
12165	// The earliest cache engine version to which the parameter can apply.
12166	MinimumEngineVersion *string `type:"string"`
12167
12168	// The name of the parameter.
12169	ParameterName *string `type:"string"`
12170
12171	// The value of the parameter.
12172	ParameterValue *string `type:"string"`
12173
12174	// The source of the parameter.
12175	Source *string `type:"string"`
12176}
12177
12178// String returns the string representation
12179func (s Parameter) String() string {
12180	return awsutil.Prettify(s)
12181}
12182
12183// GoString returns the string representation
12184func (s Parameter) GoString() string {
12185	return s.String()
12186}
12187
12188// SetAllowedValues sets the AllowedValues field's value.
12189func (s *Parameter) SetAllowedValues(v string) *Parameter {
12190	s.AllowedValues = &v
12191	return s
12192}
12193
12194// SetChangeType sets the ChangeType field's value.
12195func (s *Parameter) SetChangeType(v string) *Parameter {
12196	s.ChangeType = &v
12197	return s
12198}
12199
12200// SetDataType sets the DataType field's value.
12201func (s *Parameter) SetDataType(v string) *Parameter {
12202	s.DataType = &v
12203	return s
12204}
12205
12206// SetDescription sets the Description field's value.
12207func (s *Parameter) SetDescription(v string) *Parameter {
12208	s.Description = &v
12209	return s
12210}
12211
12212// SetIsModifiable sets the IsModifiable field's value.
12213func (s *Parameter) SetIsModifiable(v bool) *Parameter {
12214	s.IsModifiable = &v
12215	return s
12216}
12217
12218// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
12219func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
12220	s.MinimumEngineVersion = &v
12221	return s
12222}
12223
12224// SetParameterName sets the ParameterName field's value.
12225func (s *Parameter) SetParameterName(v string) *Parameter {
12226	s.ParameterName = &v
12227	return s
12228}
12229
12230// SetParameterValue sets the ParameterValue field's value.
12231func (s *Parameter) SetParameterValue(v string) *Parameter {
12232	s.ParameterValue = &v
12233	return s
12234}
12235
12236// SetSource sets the Source field's value.
12237func (s *Parameter) SetSource(v string) *Parameter {
12238	s.Source = &v
12239	return s
12240}
12241
12242// Describes a name-value pair that is used to update the value of a parameter.
12243type ParameterNameValue struct {
12244	_ struct{} `type:"structure"`
12245
12246	// The name of the parameter.
12247	ParameterName *string `type:"string"`
12248
12249	// The value of the parameter.
12250	ParameterValue *string `type:"string"`
12251}
12252
12253// String returns the string representation
12254func (s ParameterNameValue) String() string {
12255	return awsutil.Prettify(s)
12256}
12257
12258// GoString returns the string representation
12259func (s ParameterNameValue) GoString() string {
12260	return s.String()
12261}
12262
12263// SetParameterName sets the ParameterName field's value.
12264func (s *ParameterNameValue) SetParameterName(v string) *ParameterNameValue {
12265	s.ParameterName = &v
12266	return s
12267}
12268
12269// SetParameterValue sets the ParameterValue field's value.
12270func (s *ParameterNameValue) SetParameterValue(v string) *ParameterNameValue {
12271	s.ParameterValue = &v
12272	return s
12273}
12274
12275// A group of settings that are applied to the cluster in the future, or that
12276// are currently being applied.
12277type PendingModifiedValues struct {
12278	_ struct{} `type:"structure"`
12279
12280	// A list of cache node IDs that are being removed (or will be removed) from
12281	// the cluster. A node ID is a 4-digit numeric identifier (0001, 0002, etc.).
12282	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
12283
12284	// The cache node type that this cluster or replication group is scaled to.
12285	CacheNodeType *string `type:"string"`
12286
12287	// The new cache engine version that the cluster runs.
12288	EngineVersion *string `type:"string"`
12289
12290	// The new number of cache nodes for the cluster.
12291	//
12292	// For clusters running Redis, this value must be 1. For clusters running Memcached,
12293	// this value must be between 1 and 20.
12294	NumCacheNodes *int64 `type:"integer"`
12295}
12296
12297// String returns the string representation
12298func (s PendingModifiedValues) String() string {
12299	return awsutil.Prettify(s)
12300}
12301
12302// GoString returns the string representation
12303func (s PendingModifiedValues) GoString() string {
12304	return s.String()
12305}
12306
12307// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
12308func (s *PendingModifiedValues) SetCacheNodeIdsToRemove(v []*string) *PendingModifiedValues {
12309	s.CacheNodeIdsToRemove = v
12310	return s
12311}
12312
12313// SetCacheNodeType sets the CacheNodeType field's value.
12314func (s *PendingModifiedValues) SetCacheNodeType(v string) *PendingModifiedValues {
12315	s.CacheNodeType = &v
12316	return s
12317}
12318
12319// SetEngineVersion sets the EngineVersion field's value.
12320func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
12321	s.EngineVersion = &v
12322	return s
12323}
12324
12325// SetNumCacheNodes sets the NumCacheNodes field's value.
12326func (s *PendingModifiedValues) SetNumCacheNodes(v int64) *PendingModifiedValues {
12327	s.NumCacheNodes = &v
12328	return s
12329}
12330
12331// Update action that has been processed for the corresponding apply/stop request
12332type ProcessedUpdateAction struct {
12333	_ struct{} `type:"structure"`
12334
12335	// The ID of the replication group
12336	ReplicationGroupId *string `type:"string"`
12337
12338	// The unique ID of the service update
12339	ServiceUpdateName *string `type:"string"`
12340
12341	// The status of the update action on the Redis cluster
12342	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
12343}
12344
12345// String returns the string representation
12346func (s ProcessedUpdateAction) String() string {
12347	return awsutil.Prettify(s)
12348}
12349
12350// GoString returns the string representation
12351func (s ProcessedUpdateAction) GoString() string {
12352	return s.String()
12353}
12354
12355// SetReplicationGroupId sets the ReplicationGroupId field's value.
12356func (s *ProcessedUpdateAction) SetReplicationGroupId(v string) *ProcessedUpdateAction {
12357	s.ReplicationGroupId = &v
12358	return s
12359}
12360
12361// SetServiceUpdateName sets the ServiceUpdateName field's value.
12362func (s *ProcessedUpdateAction) SetServiceUpdateName(v string) *ProcessedUpdateAction {
12363	s.ServiceUpdateName = &v
12364	return s
12365}
12366
12367// SetUpdateActionStatus sets the UpdateActionStatus field's value.
12368func (s *ProcessedUpdateAction) SetUpdateActionStatus(v string) *ProcessedUpdateAction {
12369	s.UpdateActionStatus = &v
12370	return s
12371}
12372
12373// Represents the input of a PurchaseReservedCacheNodesOffering operation.
12374type PurchaseReservedCacheNodesOfferingInput struct {
12375	_ struct{} `type:"structure"`
12376
12377	// The number of cache node instances to reserve.
12378	//
12379	// Default: 1
12380	CacheNodeCount *int64 `type:"integer"`
12381
12382	// A customer-specified identifier to track this reservation.
12383	//
12384	// The Reserved Cache Node ID is an unique customer-specified identifier to
12385	// track this reservation. If this parameter is not specified, ElastiCache automatically
12386	// generates an identifier for the reservation.
12387	//
12388	// Example: myreservationID
12389	ReservedCacheNodeId *string `type:"string"`
12390
12391	// The ID of the reserved cache node offering to purchase.
12392	//
12393	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
12394	//
12395	// ReservedCacheNodesOfferingId is a required field
12396	ReservedCacheNodesOfferingId *string `type:"string" required:"true"`
12397}
12398
12399// String returns the string representation
12400func (s PurchaseReservedCacheNodesOfferingInput) String() string {
12401	return awsutil.Prettify(s)
12402}
12403
12404// GoString returns the string representation
12405func (s PurchaseReservedCacheNodesOfferingInput) GoString() string {
12406	return s.String()
12407}
12408
12409// Validate inspects the fields of the type to determine if they are valid.
12410func (s *PurchaseReservedCacheNodesOfferingInput) Validate() error {
12411	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedCacheNodesOfferingInput"}
12412	if s.ReservedCacheNodesOfferingId == nil {
12413		invalidParams.Add(request.NewErrParamRequired("ReservedCacheNodesOfferingId"))
12414	}
12415
12416	if invalidParams.Len() > 0 {
12417		return invalidParams
12418	}
12419	return nil
12420}
12421
12422// SetCacheNodeCount sets the CacheNodeCount field's value.
12423func (s *PurchaseReservedCacheNodesOfferingInput) SetCacheNodeCount(v int64) *PurchaseReservedCacheNodesOfferingInput {
12424	s.CacheNodeCount = &v
12425	return s
12426}
12427
12428// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
12429func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodeId(v string) *PurchaseReservedCacheNodesOfferingInput {
12430	s.ReservedCacheNodeId = &v
12431	return s
12432}
12433
12434// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
12435func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodesOfferingId(v string) *PurchaseReservedCacheNodesOfferingInput {
12436	s.ReservedCacheNodesOfferingId = &v
12437	return s
12438}
12439
12440type PurchaseReservedCacheNodesOfferingOutput struct {
12441	_ struct{} `type:"structure"`
12442
12443	// Represents the output of a PurchaseReservedCacheNodesOffering operation.
12444	ReservedCacheNode *ReservedCacheNode `type:"structure"`
12445}
12446
12447// String returns the string representation
12448func (s PurchaseReservedCacheNodesOfferingOutput) String() string {
12449	return awsutil.Prettify(s)
12450}
12451
12452// GoString returns the string representation
12453func (s PurchaseReservedCacheNodesOfferingOutput) GoString() string {
12454	return s.String()
12455}
12456
12457// SetReservedCacheNode sets the ReservedCacheNode field's value.
12458func (s *PurchaseReservedCacheNodesOfferingOutput) SetReservedCacheNode(v *ReservedCacheNode) *PurchaseReservedCacheNodesOfferingOutput {
12459	s.ReservedCacheNode = v
12460	return s
12461}
12462
12463// Represents the input of a RebootCacheCluster operation.
12464type RebootCacheClusterInput struct {
12465	_ struct{} `type:"structure"`
12466
12467	// The cluster identifier. This parameter is stored as a lowercase string.
12468	//
12469	// CacheClusterId is a required field
12470	CacheClusterId *string `type:"string" required:"true"`
12471
12472	// A list of cache node IDs to reboot. A node ID is a numeric identifier (0001,
12473	// 0002, etc.). To reboot an entire cluster, specify all of the cache node IDs.
12474	//
12475	// CacheNodeIdsToReboot is a required field
12476	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list" required:"true"`
12477}
12478
12479// String returns the string representation
12480func (s RebootCacheClusterInput) String() string {
12481	return awsutil.Prettify(s)
12482}
12483
12484// GoString returns the string representation
12485func (s RebootCacheClusterInput) GoString() string {
12486	return s.String()
12487}
12488
12489// Validate inspects the fields of the type to determine if they are valid.
12490func (s *RebootCacheClusterInput) Validate() error {
12491	invalidParams := request.ErrInvalidParams{Context: "RebootCacheClusterInput"}
12492	if s.CacheClusterId == nil {
12493		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
12494	}
12495	if s.CacheNodeIdsToReboot == nil {
12496		invalidParams.Add(request.NewErrParamRequired("CacheNodeIdsToReboot"))
12497	}
12498
12499	if invalidParams.Len() > 0 {
12500		return invalidParams
12501	}
12502	return nil
12503}
12504
12505// SetCacheClusterId sets the CacheClusterId field's value.
12506func (s *RebootCacheClusterInput) SetCacheClusterId(v string) *RebootCacheClusterInput {
12507	s.CacheClusterId = &v
12508	return s
12509}
12510
12511// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
12512func (s *RebootCacheClusterInput) SetCacheNodeIdsToReboot(v []*string) *RebootCacheClusterInput {
12513	s.CacheNodeIdsToReboot = v
12514	return s
12515}
12516
12517type RebootCacheClusterOutput struct {
12518	_ struct{} `type:"structure"`
12519
12520	// Contains all of the attributes of a specific cluster.
12521	CacheCluster *CacheCluster `type:"structure"`
12522}
12523
12524// String returns the string representation
12525func (s RebootCacheClusterOutput) String() string {
12526	return awsutil.Prettify(s)
12527}
12528
12529// GoString returns the string representation
12530func (s RebootCacheClusterOutput) GoString() string {
12531	return s.String()
12532}
12533
12534// SetCacheCluster sets the CacheCluster field's value.
12535func (s *RebootCacheClusterOutput) SetCacheCluster(v *CacheCluster) *RebootCacheClusterOutput {
12536	s.CacheCluster = v
12537	return s
12538}
12539
12540// Contains the specific price and frequency of a recurring charges for a reserved
12541// cache node, or for a reserved cache node offering.
12542type RecurringCharge struct {
12543	_ struct{} `type:"structure"`
12544
12545	// The monetary amount of the recurring charge.
12546	RecurringChargeAmount *float64 `type:"double"`
12547
12548	// The frequency of the recurring charge.
12549	RecurringChargeFrequency *string `type:"string"`
12550}
12551
12552// String returns the string representation
12553func (s RecurringCharge) String() string {
12554	return awsutil.Prettify(s)
12555}
12556
12557// GoString returns the string representation
12558func (s RecurringCharge) GoString() string {
12559	return s.String()
12560}
12561
12562// SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
12563func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
12564	s.RecurringChargeAmount = &v
12565	return s
12566}
12567
12568// SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
12569func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
12570	s.RecurringChargeFrequency = &v
12571	return s
12572}
12573
12574// Represents the input of a RemoveTagsFromResource operation.
12575type RemoveTagsFromResourceInput struct {
12576	_ struct{} `type:"structure"`
12577
12578	// The Amazon Resource Name (ARN) of the resource from which you want the tags
12579	// removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
12580	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
12581	//
12582	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
12583	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
12584	//
12585	// ResourceName is a required field
12586	ResourceName *string `type:"string" required:"true"`
12587
12588	// A list of TagKeys identifying the tags you want removed from the named resource.
12589	//
12590	// TagKeys is a required field
12591	TagKeys []*string `type:"list" required:"true"`
12592}
12593
12594// String returns the string representation
12595func (s RemoveTagsFromResourceInput) String() string {
12596	return awsutil.Prettify(s)
12597}
12598
12599// GoString returns the string representation
12600func (s RemoveTagsFromResourceInput) GoString() string {
12601	return s.String()
12602}
12603
12604// Validate inspects the fields of the type to determine if they are valid.
12605func (s *RemoveTagsFromResourceInput) Validate() error {
12606	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
12607	if s.ResourceName == nil {
12608		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
12609	}
12610	if s.TagKeys == nil {
12611		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
12612	}
12613
12614	if invalidParams.Len() > 0 {
12615		return invalidParams
12616	}
12617	return nil
12618}
12619
12620// SetResourceName sets the ResourceName field's value.
12621func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
12622	s.ResourceName = &v
12623	return s
12624}
12625
12626// SetTagKeys sets the TagKeys field's value.
12627func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
12628	s.TagKeys = v
12629	return s
12630}
12631
12632// Contains all of the attributes of a specific Redis replication group.
12633type ReplicationGroup struct {
12634	_ struct{} `type:"structure"`
12635
12636	// A flag that enables encryption at-rest when set to true.
12637	//
12638	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
12639	// is created. To enable encryption at-rest on a cluster you must set AtRestEncryptionEnabled
12640	// to true when you create a cluster.
12641	//
12642	// Required: Only available when creating a replication group in an Amazon VPC
12643	// using redis version 3.2.6, 4.x or later.
12644	//
12645	// Default: false
12646	AtRestEncryptionEnabled *bool `type:"boolean"`
12647
12648	// A flag that enables using an AuthToken (password) when issuing Redis commands.
12649	//
12650	// Default: false
12651	AuthTokenEnabled *bool `type:"boolean"`
12652
12653	// Indicates the status of Multi-AZ with automatic failover for this Redis replication
12654	// group.
12655	//
12656	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
12657	// on:
12658	//
12659	//    * Redis versions earlier than 2.8.6.
12660	//
12661	//    * Redis (cluster mode disabled): T1 node types.
12662	//
12663	//    * Redis (cluster mode enabled): T1 node types.
12664	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
12665
12666	// The name of the compute and memory capacity node type for each node in the
12667	// replication group.
12668	CacheNodeType *string `type:"string"`
12669
12670	// A flag indicating whether or not this replication group is cluster enabled;
12671	// i.e., whether its data can be partitioned across multiple shards (API/CLI:
12672	// node groups).
12673	//
12674	// Valid values: true | false
12675	ClusterEnabled *bool `type:"boolean"`
12676
12677	// The configuration endpoint for this replication group. Use the configuration
12678	// endpoint to connect to this replication group.
12679	ConfigurationEndpoint *Endpoint `type:"structure"`
12680
12681	// The user supplied description of the replication group.
12682	Description *string `type:"string"`
12683
12684	// The names of all the cache clusters that are part of this replication group.
12685	MemberClusters []*string `locationNameList:"ClusterId" type:"list"`
12686
12687	// A list of node groups in this replication group. For Redis (cluster mode
12688	// disabled) replication groups, this is a single-element list. For Redis (cluster
12689	// mode enabled) replication groups, the list contains an entry for each node
12690	// group (shard).
12691	NodeGroups []*NodeGroup `locationNameList:"NodeGroup" type:"list"`
12692
12693	// A group of settings to be applied to the replication group, either immediately
12694	// or during the next maintenance window.
12695	PendingModifiedValues *ReplicationGroupPendingModifiedValues `type:"structure"`
12696
12697	// The identifier for the replication group.
12698	ReplicationGroupId *string `type:"string"`
12699
12700	// The number of days for which ElastiCache retains automatic cluster snapshots
12701	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
12702	// a snapshot that was taken today is retained for 5 days before being deleted.
12703	//
12704	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
12705	// off.
12706	SnapshotRetentionLimit *int64 `type:"integer"`
12707
12708	// The daily time range (in UTC) during which ElastiCache begins taking a daily
12709	// snapshot of your node group (shard).
12710	//
12711	// Example: 05:00-09:00
12712	//
12713	// If you do not specify this parameter, ElastiCache automatically chooses an
12714	// appropriate time range.
12715	//
12716	// This parameter is only valid if the Engine parameter is redis.
12717	SnapshotWindow *string `type:"string"`
12718
12719	// The cluster ID that is used as the daily snapshot source for the replication
12720	// group.
12721	SnapshottingClusterId *string `type:"string"`
12722
12723	// The current state of this replication group - creating, available, modifying,
12724	// deleting, create-failed, snapshotting.
12725	Status *string `type:"string"`
12726
12727	// A flag that enables in-transit encryption when set to true.
12728	//
12729	// You cannot modify the value of TransitEncryptionEnabled after the cluster
12730	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
12731	// to true when you create a cluster.
12732	//
12733	// Required: Only available when creating a replication group in an Amazon VPC
12734	// using redis version 3.2.6, 4.x or later.
12735	//
12736	// Default: false
12737	TransitEncryptionEnabled *bool `type:"boolean"`
12738}
12739
12740// String returns the string representation
12741func (s ReplicationGroup) String() string {
12742	return awsutil.Prettify(s)
12743}
12744
12745// GoString returns the string representation
12746func (s ReplicationGroup) GoString() string {
12747	return s.String()
12748}
12749
12750// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
12751func (s *ReplicationGroup) SetAtRestEncryptionEnabled(v bool) *ReplicationGroup {
12752	s.AtRestEncryptionEnabled = &v
12753	return s
12754}
12755
12756// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
12757func (s *ReplicationGroup) SetAuthTokenEnabled(v bool) *ReplicationGroup {
12758	s.AuthTokenEnabled = &v
12759	return s
12760}
12761
12762// SetAutomaticFailover sets the AutomaticFailover field's value.
12763func (s *ReplicationGroup) SetAutomaticFailover(v string) *ReplicationGroup {
12764	s.AutomaticFailover = &v
12765	return s
12766}
12767
12768// SetCacheNodeType sets the CacheNodeType field's value.
12769func (s *ReplicationGroup) SetCacheNodeType(v string) *ReplicationGroup {
12770	s.CacheNodeType = &v
12771	return s
12772}
12773
12774// SetClusterEnabled sets the ClusterEnabled field's value.
12775func (s *ReplicationGroup) SetClusterEnabled(v bool) *ReplicationGroup {
12776	s.ClusterEnabled = &v
12777	return s
12778}
12779
12780// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
12781func (s *ReplicationGroup) SetConfigurationEndpoint(v *Endpoint) *ReplicationGroup {
12782	s.ConfigurationEndpoint = v
12783	return s
12784}
12785
12786// SetDescription sets the Description field's value.
12787func (s *ReplicationGroup) SetDescription(v string) *ReplicationGroup {
12788	s.Description = &v
12789	return s
12790}
12791
12792// SetMemberClusters sets the MemberClusters field's value.
12793func (s *ReplicationGroup) SetMemberClusters(v []*string) *ReplicationGroup {
12794	s.MemberClusters = v
12795	return s
12796}
12797
12798// SetNodeGroups sets the NodeGroups field's value.
12799func (s *ReplicationGroup) SetNodeGroups(v []*NodeGroup) *ReplicationGroup {
12800	s.NodeGroups = v
12801	return s
12802}
12803
12804// SetPendingModifiedValues sets the PendingModifiedValues field's value.
12805func (s *ReplicationGroup) SetPendingModifiedValues(v *ReplicationGroupPendingModifiedValues) *ReplicationGroup {
12806	s.PendingModifiedValues = v
12807	return s
12808}
12809
12810// SetReplicationGroupId sets the ReplicationGroupId field's value.
12811func (s *ReplicationGroup) SetReplicationGroupId(v string) *ReplicationGroup {
12812	s.ReplicationGroupId = &v
12813	return s
12814}
12815
12816// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
12817func (s *ReplicationGroup) SetSnapshotRetentionLimit(v int64) *ReplicationGroup {
12818	s.SnapshotRetentionLimit = &v
12819	return s
12820}
12821
12822// SetSnapshotWindow sets the SnapshotWindow field's value.
12823func (s *ReplicationGroup) SetSnapshotWindow(v string) *ReplicationGroup {
12824	s.SnapshotWindow = &v
12825	return s
12826}
12827
12828// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
12829func (s *ReplicationGroup) SetSnapshottingClusterId(v string) *ReplicationGroup {
12830	s.SnapshottingClusterId = &v
12831	return s
12832}
12833
12834// SetStatus sets the Status field's value.
12835func (s *ReplicationGroup) SetStatus(v string) *ReplicationGroup {
12836	s.Status = &v
12837	return s
12838}
12839
12840// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
12841func (s *ReplicationGroup) SetTransitEncryptionEnabled(v bool) *ReplicationGroup {
12842	s.TransitEncryptionEnabled = &v
12843	return s
12844}
12845
12846// The settings to be applied to the Redis replication group, either immediately
12847// or during the next maintenance window.
12848type ReplicationGroupPendingModifiedValues struct {
12849	_ struct{} `type:"structure"`
12850
12851	// Indicates the status of Multi-AZ with automatic failover for this Redis replication
12852	// group.
12853	//
12854	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
12855	// on:
12856	//
12857	//    * Redis versions earlier than 2.8.6.
12858	//
12859	//    * Redis (cluster mode disabled): T1 node types.
12860	//
12861	//    * Redis (cluster mode enabled): T1 node types.
12862	AutomaticFailoverStatus *string `type:"string" enum:"PendingAutomaticFailoverStatus"`
12863
12864	// The primary cluster ID that is applied immediately (if --apply-immediately
12865	// was specified), or during the next maintenance window.
12866	PrimaryClusterId *string `type:"string"`
12867
12868	// The status of an online resharding operation.
12869	Resharding *ReshardingStatus `type:"structure"`
12870}
12871
12872// String returns the string representation
12873func (s ReplicationGroupPendingModifiedValues) String() string {
12874	return awsutil.Prettify(s)
12875}
12876
12877// GoString returns the string representation
12878func (s ReplicationGroupPendingModifiedValues) GoString() string {
12879	return s.String()
12880}
12881
12882// SetAutomaticFailoverStatus sets the AutomaticFailoverStatus field's value.
12883func (s *ReplicationGroupPendingModifiedValues) SetAutomaticFailoverStatus(v string) *ReplicationGroupPendingModifiedValues {
12884	s.AutomaticFailoverStatus = &v
12885	return s
12886}
12887
12888// SetPrimaryClusterId sets the PrimaryClusterId field's value.
12889func (s *ReplicationGroupPendingModifiedValues) SetPrimaryClusterId(v string) *ReplicationGroupPendingModifiedValues {
12890	s.PrimaryClusterId = &v
12891	return s
12892}
12893
12894// SetResharding sets the Resharding field's value.
12895func (s *ReplicationGroupPendingModifiedValues) SetResharding(v *ReshardingStatus) *ReplicationGroupPendingModifiedValues {
12896	s.Resharding = v
12897	return s
12898}
12899
12900// Represents the output of a PurchaseReservedCacheNodesOffering operation.
12901type ReservedCacheNode struct {
12902	_ struct{} `type:"structure"`
12903
12904	// The number of cache nodes that have been reserved.
12905	CacheNodeCount *int64 `type:"integer"`
12906
12907	// The cache node type for the reserved cache nodes.
12908	//
12909	// The following node types are supported by ElastiCache. Generally speaking,
12910	// the current generation types provide more memory and computational power
12911	// at lower cost when compared to their equivalent previous generation counterparts.
12912	//
12913	//    * General purpose: Current generation: M5 node types: cache.m5.large,
12914	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
12915	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
12916	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
12917	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
12918	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
12919	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
12920	//    cache.m3.2xlarge
12921	//
12922	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
12923	//    cache.c1.xlarge
12924	//
12925	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
12926	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
12927	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
12928	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
12929	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
12930	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
12931	//    cache.r3.8xlarge
12932	//
12933	// Additional node type info
12934	//
12935	//    * All current generation instance types are created in Amazon VPC by default.
12936	//
12937	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
12938	//
12939	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
12940	//
12941	//    * Redis configuration variables appendonly and appendfsync are not supported
12942	//    on Redis version 2.8.22 and later.
12943	CacheNodeType *string `type:"string"`
12944
12945	// The duration of the reservation in seconds.
12946	Duration *int64 `type:"integer"`
12947
12948	// The fixed price charged for this reserved cache node.
12949	FixedPrice *float64 `type:"double"`
12950
12951	// The offering type of this reserved cache node.
12952	OfferingType *string `type:"string"`
12953
12954	// The description of the reserved cache node.
12955	ProductDescription *string `type:"string"`
12956
12957	// The recurring price charged to run this reserved cache node.
12958	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
12959
12960	// The Amazon Resource Name (ARN) of the reserved cache node.
12961	//
12962	// Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582
12963	ReservationARN *string `type:"string"`
12964
12965	// The unique identifier for the reservation.
12966	ReservedCacheNodeId *string `type:"string"`
12967
12968	// The offering identifier.
12969	ReservedCacheNodesOfferingId *string `type:"string"`
12970
12971	// The time the reservation started.
12972	StartTime *time.Time `type:"timestamp"`
12973
12974	// The state of the reserved cache node.
12975	State *string `type:"string"`
12976
12977	// The hourly price charged for this reserved cache node.
12978	UsagePrice *float64 `type:"double"`
12979}
12980
12981// String returns the string representation
12982func (s ReservedCacheNode) String() string {
12983	return awsutil.Prettify(s)
12984}
12985
12986// GoString returns the string representation
12987func (s ReservedCacheNode) GoString() string {
12988	return s.String()
12989}
12990
12991// SetCacheNodeCount sets the CacheNodeCount field's value.
12992func (s *ReservedCacheNode) SetCacheNodeCount(v int64) *ReservedCacheNode {
12993	s.CacheNodeCount = &v
12994	return s
12995}
12996
12997// SetCacheNodeType sets the CacheNodeType field's value.
12998func (s *ReservedCacheNode) SetCacheNodeType(v string) *ReservedCacheNode {
12999	s.CacheNodeType = &v
13000	return s
13001}
13002
13003// SetDuration sets the Duration field's value.
13004func (s *ReservedCacheNode) SetDuration(v int64) *ReservedCacheNode {
13005	s.Duration = &v
13006	return s
13007}
13008
13009// SetFixedPrice sets the FixedPrice field's value.
13010func (s *ReservedCacheNode) SetFixedPrice(v float64) *ReservedCacheNode {
13011	s.FixedPrice = &v
13012	return s
13013}
13014
13015// SetOfferingType sets the OfferingType field's value.
13016func (s *ReservedCacheNode) SetOfferingType(v string) *ReservedCacheNode {
13017	s.OfferingType = &v
13018	return s
13019}
13020
13021// SetProductDescription sets the ProductDescription field's value.
13022func (s *ReservedCacheNode) SetProductDescription(v string) *ReservedCacheNode {
13023	s.ProductDescription = &v
13024	return s
13025}
13026
13027// SetRecurringCharges sets the RecurringCharges field's value.
13028func (s *ReservedCacheNode) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNode {
13029	s.RecurringCharges = v
13030	return s
13031}
13032
13033// SetReservationARN sets the ReservationARN field's value.
13034func (s *ReservedCacheNode) SetReservationARN(v string) *ReservedCacheNode {
13035	s.ReservationARN = &v
13036	return s
13037}
13038
13039// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
13040func (s *ReservedCacheNode) SetReservedCacheNodeId(v string) *ReservedCacheNode {
13041	s.ReservedCacheNodeId = &v
13042	return s
13043}
13044
13045// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13046func (s *ReservedCacheNode) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNode {
13047	s.ReservedCacheNodesOfferingId = &v
13048	return s
13049}
13050
13051// SetStartTime sets the StartTime field's value.
13052func (s *ReservedCacheNode) SetStartTime(v time.Time) *ReservedCacheNode {
13053	s.StartTime = &v
13054	return s
13055}
13056
13057// SetState sets the State field's value.
13058func (s *ReservedCacheNode) SetState(v string) *ReservedCacheNode {
13059	s.State = &v
13060	return s
13061}
13062
13063// SetUsagePrice sets the UsagePrice field's value.
13064func (s *ReservedCacheNode) SetUsagePrice(v float64) *ReservedCacheNode {
13065	s.UsagePrice = &v
13066	return s
13067}
13068
13069// Describes all of the attributes of a reserved cache node offering.
13070type ReservedCacheNodesOffering struct {
13071	_ struct{} `type:"structure"`
13072
13073	// The cache node type for the reserved cache node.
13074	//
13075	// The following node types are supported by ElastiCache. Generally speaking,
13076	// the current generation types provide more memory and computational power
13077	// at lower cost when compared to their equivalent previous generation counterparts.
13078	//
13079	//    * General purpose: Current generation: M5 node types: cache.m5.large,
13080	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
13081	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
13082	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
13083	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
13084	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
13085	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
13086	//    cache.m3.2xlarge
13087	//
13088	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
13089	//    cache.c1.xlarge
13090	//
13091	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
13092	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
13093	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
13094	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
13095	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
13096	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
13097	//    cache.r3.8xlarge
13098	//
13099	// Additional node type info
13100	//
13101	//    * All current generation instance types are created in Amazon VPC by default.
13102	//
13103	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
13104	//
13105	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
13106	//
13107	//    * Redis configuration variables appendonly and appendfsync are not supported
13108	//    on Redis version 2.8.22 and later.
13109	CacheNodeType *string `type:"string"`
13110
13111	// The duration of the offering. in seconds.
13112	Duration *int64 `type:"integer"`
13113
13114	// The fixed price charged for this offering.
13115	FixedPrice *float64 `type:"double"`
13116
13117	// The offering type.
13118	OfferingType *string `type:"string"`
13119
13120	// The cache engine used by the offering.
13121	ProductDescription *string `type:"string"`
13122
13123	// The recurring price charged to run this reserved cache node.
13124	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
13125
13126	// A unique identifier for the reserved cache node offering.
13127	ReservedCacheNodesOfferingId *string `type:"string"`
13128
13129	// The hourly price charged for this offering.
13130	UsagePrice *float64 `type:"double"`
13131}
13132
13133// String returns the string representation
13134func (s ReservedCacheNodesOffering) String() string {
13135	return awsutil.Prettify(s)
13136}
13137
13138// GoString returns the string representation
13139func (s ReservedCacheNodesOffering) GoString() string {
13140	return s.String()
13141}
13142
13143// SetCacheNodeType sets the CacheNodeType field's value.
13144func (s *ReservedCacheNodesOffering) SetCacheNodeType(v string) *ReservedCacheNodesOffering {
13145	s.CacheNodeType = &v
13146	return s
13147}
13148
13149// SetDuration sets the Duration field's value.
13150func (s *ReservedCacheNodesOffering) SetDuration(v int64) *ReservedCacheNodesOffering {
13151	s.Duration = &v
13152	return s
13153}
13154
13155// SetFixedPrice sets the FixedPrice field's value.
13156func (s *ReservedCacheNodesOffering) SetFixedPrice(v float64) *ReservedCacheNodesOffering {
13157	s.FixedPrice = &v
13158	return s
13159}
13160
13161// SetOfferingType sets the OfferingType field's value.
13162func (s *ReservedCacheNodesOffering) SetOfferingType(v string) *ReservedCacheNodesOffering {
13163	s.OfferingType = &v
13164	return s
13165}
13166
13167// SetProductDescription sets the ProductDescription field's value.
13168func (s *ReservedCacheNodesOffering) SetProductDescription(v string) *ReservedCacheNodesOffering {
13169	s.ProductDescription = &v
13170	return s
13171}
13172
13173// SetRecurringCharges sets the RecurringCharges field's value.
13174func (s *ReservedCacheNodesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNodesOffering {
13175	s.RecurringCharges = v
13176	return s
13177}
13178
13179// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13180func (s *ReservedCacheNodesOffering) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNodesOffering {
13181	s.ReservedCacheNodesOfferingId = &v
13182	return s
13183}
13184
13185// SetUsagePrice sets the UsagePrice field's value.
13186func (s *ReservedCacheNodesOffering) SetUsagePrice(v float64) *ReservedCacheNodesOffering {
13187	s.UsagePrice = &v
13188	return s
13189}
13190
13191// Represents the input of a ResetCacheParameterGroup operation.
13192type ResetCacheParameterGroupInput struct {
13193	_ struct{} `type:"structure"`
13194
13195	// The name of the cache parameter group to reset.
13196	//
13197	// CacheParameterGroupName is a required field
13198	CacheParameterGroupName *string `type:"string" required:"true"`
13199
13200	// An array of parameter names to reset to their default values. If ResetAllParameters
13201	// is true, do not use ParameterNameValues. If ResetAllParameters is false,
13202	// you must specify the name of at least one parameter to reset.
13203	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"`
13204
13205	// If true, all parameters in the cache parameter group are reset to their default
13206	// values. If false, only the parameters listed by ParameterNameValues are reset
13207	// to their default values.
13208	//
13209	// Valid values: true | false
13210	ResetAllParameters *bool `type:"boolean"`
13211}
13212
13213// String returns the string representation
13214func (s ResetCacheParameterGroupInput) String() string {
13215	return awsutil.Prettify(s)
13216}
13217
13218// GoString returns the string representation
13219func (s ResetCacheParameterGroupInput) GoString() string {
13220	return s.String()
13221}
13222
13223// Validate inspects the fields of the type to determine if they are valid.
13224func (s *ResetCacheParameterGroupInput) Validate() error {
13225	invalidParams := request.ErrInvalidParams{Context: "ResetCacheParameterGroupInput"}
13226	if s.CacheParameterGroupName == nil {
13227		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
13228	}
13229
13230	if invalidParams.Len() > 0 {
13231		return invalidParams
13232	}
13233	return nil
13234}
13235
13236// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13237func (s *ResetCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ResetCacheParameterGroupInput {
13238	s.CacheParameterGroupName = &v
13239	return s
13240}
13241
13242// SetParameterNameValues sets the ParameterNameValues field's value.
13243func (s *ResetCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ResetCacheParameterGroupInput {
13244	s.ParameterNameValues = v
13245	return s
13246}
13247
13248// SetResetAllParameters sets the ResetAllParameters field's value.
13249func (s *ResetCacheParameterGroupInput) SetResetAllParameters(v bool) *ResetCacheParameterGroupInput {
13250	s.ResetAllParameters = &v
13251	return s
13252}
13253
13254// A list of PreferredAvailabilityZones objects that specifies the configuration
13255// of a node group in the resharded cluster.
13256type ReshardingConfiguration struct {
13257	_ struct{} `type:"structure"`
13258
13259	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
13260	// for the node group these configuration values apply to.
13261	NodeGroupId *string `min:"1" type:"string"`
13262
13263	// A list of preferred availability zones for the nodes in this cluster.
13264	PreferredAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
13265}
13266
13267// String returns the string representation
13268func (s ReshardingConfiguration) String() string {
13269	return awsutil.Prettify(s)
13270}
13271
13272// GoString returns the string representation
13273func (s ReshardingConfiguration) GoString() string {
13274	return s.String()
13275}
13276
13277// Validate inspects the fields of the type to determine if they are valid.
13278func (s *ReshardingConfiguration) Validate() error {
13279	invalidParams := request.ErrInvalidParams{Context: "ReshardingConfiguration"}
13280	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
13281		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
13282	}
13283
13284	if invalidParams.Len() > 0 {
13285		return invalidParams
13286	}
13287	return nil
13288}
13289
13290// SetNodeGroupId sets the NodeGroupId field's value.
13291func (s *ReshardingConfiguration) SetNodeGroupId(v string) *ReshardingConfiguration {
13292	s.NodeGroupId = &v
13293	return s
13294}
13295
13296// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
13297func (s *ReshardingConfiguration) SetPreferredAvailabilityZones(v []*string) *ReshardingConfiguration {
13298	s.PreferredAvailabilityZones = v
13299	return s
13300}
13301
13302// The status of an online resharding operation.
13303type ReshardingStatus struct {
13304	_ struct{} `type:"structure"`
13305
13306	// Represents the progress of an online resharding operation.
13307	SlotMigration *SlotMigration `type:"structure"`
13308}
13309
13310// String returns the string representation
13311func (s ReshardingStatus) String() string {
13312	return awsutil.Prettify(s)
13313}
13314
13315// GoString returns the string representation
13316func (s ReshardingStatus) GoString() string {
13317	return s.String()
13318}
13319
13320// SetSlotMigration sets the SlotMigration field's value.
13321func (s *ReshardingStatus) SetSlotMigration(v *SlotMigration) *ReshardingStatus {
13322	s.SlotMigration = v
13323	return s
13324}
13325
13326// Represents the input of a RevokeCacheSecurityGroupIngress operation.
13327type RevokeCacheSecurityGroupIngressInput struct {
13328	_ struct{} `type:"structure"`
13329
13330	// The name of the cache security group to revoke ingress from.
13331	//
13332	// CacheSecurityGroupName is a required field
13333	CacheSecurityGroupName *string `type:"string" required:"true"`
13334
13335	// The name of the Amazon EC2 security group to revoke access from.
13336	//
13337	// EC2SecurityGroupName is a required field
13338	EC2SecurityGroupName *string `type:"string" required:"true"`
13339
13340	// The AWS account number of the Amazon EC2 security group owner. Note that
13341	// this is not the same thing as an AWS access key ID - you must provide a valid
13342	// AWS account number for this parameter.
13343	//
13344	// EC2SecurityGroupOwnerId is a required field
13345	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
13346}
13347
13348// String returns the string representation
13349func (s RevokeCacheSecurityGroupIngressInput) String() string {
13350	return awsutil.Prettify(s)
13351}
13352
13353// GoString returns the string representation
13354func (s RevokeCacheSecurityGroupIngressInput) GoString() string {
13355	return s.String()
13356}
13357
13358// Validate inspects the fields of the type to determine if they are valid.
13359func (s *RevokeCacheSecurityGroupIngressInput) Validate() error {
13360	invalidParams := request.ErrInvalidParams{Context: "RevokeCacheSecurityGroupIngressInput"}
13361	if s.CacheSecurityGroupName == nil {
13362		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
13363	}
13364	if s.EC2SecurityGroupName == nil {
13365		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
13366	}
13367	if s.EC2SecurityGroupOwnerId == nil {
13368		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
13369	}
13370
13371	if invalidParams.Len() > 0 {
13372		return invalidParams
13373	}
13374	return nil
13375}
13376
13377// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
13378func (s *RevokeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
13379	s.CacheSecurityGroupName = &v
13380	return s
13381}
13382
13383// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
13384func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
13385	s.EC2SecurityGroupName = &v
13386	return s
13387}
13388
13389// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
13390func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeCacheSecurityGroupIngressInput {
13391	s.EC2SecurityGroupOwnerId = &v
13392	return s
13393}
13394
13395type RevokeCacheSecurityGroupIngressOutput struct {
13396	_ struct{} `type:"structure"`
13397
13398	// Represents the output of one of the following operations:
13399	//
13400	//    * AuthorizeCacheSecurityGroupIngress
13401	//
13402	//    * CreateCacheSecurityGroup
13403	//
13404	//    * RevokeCacheSecurityGroupIngress
13405	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
13406}
13407
13408// String returns the string representation
13409func (s RevokeCacheSecurityGroupIngressOutput) String() string {
13410	return awsutil.Prettify(s)
13411}
13412
13413// GoString returns the string representation
13414func (s RevokeCacheSecurityGroupIngressOutput) GoString() string {
13415	return s.String()
13416}
13417
13418// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
13419func (s *RevokeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *RevokeCacheSecurityGroupIngressOutput {
13420	s.CacheSecurityGroup = v
13421	return s
13422}
13423
13424// Represents a single cache security group and its status.
13425type SecurityGroupMembership struct {
13426	_ struct{} `type:"structure"`
13427
13428	// The identifier of the cache security group.
13429	SecurityGroupId *string `type:"string"`
13430
13431	// The status of the cache security group membership. The status changes whenever
13432	// a cache security group is modified, or when the cache security groups assigned
13433	// to a cluster are modified.
13434	Status *string `type:"string"`
13435}
13436
13437// String returns the string representation
13438func (s SecurityGroupMembership) String() string {
13439	return awsutil.Prettify(s)
13440}
13441
13442// GoString returns the string representation
13443func (s SecurityGroupMembership) GoString() string {
13444	return s.String()
13445}
13446
13447// SetSecurityGroupId sets the SecurityGroupId field's value.
13448func (s *SecurityGroupMembership) SetSecurityGroupId(v string) *SecurityGroupMembership {
13449	s.SecurityGroupId = &v
13450	return s
13451}
13452
13453// SetStatus sets the Status field's value.
13454func (s *SecurityGroupMembership) SetStatus(v string) *SecurityGroupMembership {
13455	s.Status = &v
13456	return s
13457}
13458
13459// An update that you can apply to your Redis clusters.
13460type ServiceUpdate struct {
13461	_ struct{} `type:"structure"`
13462
13463	// Indicates whether the service update will be automatically applied once the
13464	// recommended apply-by date has expired.
13465	AutoUpdateAfterRecommendedApplyByDate *bool `type:"boolean"`
13466
13467	// The Redis engine to which the service update applies
13468	Engine *string `type:"string"`
13469
13470	// The Redis engine version to which the service update applies
13471	EngineVersion *string `type:"string"`
13472
13473	// The estimated length of time the service update will take
13474	EstimatedUpdateTime *string `type:"string"`
13475
13476	// Provides details of the service update
13477	ServiceUpdateDescription *string `type:"string"`
13478
13479	// The date after which the service update is no longer available
13480	ServiceUpdateEndDate *time.Time `type:"timestamp"`
13481
13482	// The unique ID of the service update
13483	ServiceUpdateName *string `type:"string"`
13484
13485	// The recommendend date to apply the service update in order to ensure compliance.
13486	// For information on compliance, see Self-Service Security Updates for Compliance
13487	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
13488	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
13489
13490	// The date when the service update is initially available
13491	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
13492
13493	// The severity of the service update
13494	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
13495
13496	// The status of the service update
13497	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
13498
13499	// Reflects the nature of the service update
13500	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
13501}
13502
13503// String returns the string representation
13504func (s ServiceUpdate) String() string {
13505	return awsutil.Prettify(s)
13506}
13507
13508// GoString returns the string representation
13509func (s ServiceUpdate) GoString() string {
13510	return s.String()
13511}
13512
13513// SetAutoUpdateAfterRecommendedApplyByDate sets the AutoUpdateAfterRecommendedApplyByDate field's value.
13514func (s *ServiceUpdate) SetAutoUpdateAfterRecommendedApplyByDate(v bool) *ServiceUpdate {
13515	s.AutoUpdateAfterRecommendedApplyByDate = &v
13516	return s
13517}
13518
13519// SetEngine sets the Engine field's value.
13520func (s *ServiceUpdate) SetEngine(v string) *ServiceUpdate {
13521	s.Engine = &v
13522	return s
13523}
13524
13525// SetEngineVersion sets the EngineVersion field's value.
13526func (s *ServiceUpdate) SetEngineVersion(v string) *ServiceUpdate {
13527	s.EngineVersion = &v
13528	return s
13529}
13530
13531// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
13532func (s *ServiceUpdate) SetEstimatedUpdateTime(v string) *ServiceUpdate {
13533	s.EstimatedUpdateTime = &v
13534	return s
13535}
13536
13537// SetServiceUpdateDescription sets the ServiceUpdateDescription field's value.
13538func (s *ServiceUpdate) SetServiceUpdateDescription(v string) *ServiceUpdate {
13539	s.ServiceUpdateDescription = &v
13540	return s
13541}
13542
13543// SetServiceUpdateEndDate sets the ServiceUpdateEndDate field's value.
13544func (s *ServiceUpdate) SetServiceUpdateEndDate(v time.Time) *ServiceUpdate {
13545	s.ServiceUpdateEndDate = &v
13546	return s
13547}
13548
13549// SetServiceUpdateName sets the ServiceUpdateName field's value.
13550func (s *ServiceUpdate) SetServiceUpdateName(v string) *ServiceUpdate {
13551	s.ServiceUpdateName = &v
13552	return s
13553}
13554
13555// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
13556func (s *ServiceUpdate) SetServiceUpdateRecommendedApplyByDate(v time.Time) *ServiceUpdate {
13557	s.ServiceUpdateRecommendedApplyByDate = &v
13558	return s
13559}
13560
13561// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
13562func (s *ServiceUpdate) SetServiceUpdateReleaseDate(v time.Time) *ServiceUpdate {
13563	s.ServiceUpdateReleaseDate = &v
13564	return s
13565}
13566
13567// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
13568func (s *ServiceUpdate) SetServiceUpdateSeverity(v string) *ServiceUpdate {
13569	s.ServiceUpdateSeverity = &v
13570	return s
13571}
13572
13573// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
13574func (s *ServiceUpdate) SetServiceUpdateStatus(v string) *ServiceUpdate {
13575	s.ServiceUpdateStatus = &v
13576	return s
13577}
13578
13579// SetServiceUpdateType sets the ServiceUpdateType field's value.
13580func (s *ServiceUpdate) SetServiceUpdateType(v string) *ServiceUpdate {
13581	s.ServiceUpdateType = &v
13582	return s
13583}
13584
13585// Represents the progress of an online resharding operation.
13586type SlotMigration struct {
13587	_ struct{} `type:"structure"`
13588
13589	// The percentage of the slot migration that is complete.
13590	ProgressPercentage *float64 `type:"double"`
13591}
13592
13593// String returns the string representation
13594func (s SlotMigration) String() string {
13595	return awsutil.Prettify(s)
13596}
13597
13598// GoString returns the string representation
13599func (s SlotMigration) GoString() string {
13600	return s.String()
13601}
13602
13603// SetProgressPercentage sets the ProgressPercentage field's value.
13604func (s *SlotMigration) SetProgressPercentage(v float64) *SlotMigration {
13605	s.ProgressPercentage = &v
13606	return s
13607}
13608
13609// Represents a copy of an entire Redis cluster as of the time when the snapshot
13610// was taken.
13611type Snapshot struct {
13612	_ struct{} `type:"structure"`
13613
13614	// This parameter is currently disabled.
13615	AutoMinorVersionUpgrade *bool `type:"boolean"`
13616
13617	// Indicates the status of Multi-AZ with automatic failover for the source Redis
13618	// replication group.
13619	//
13620	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
13621	// on:
13622	//
13623	//    * Redis versions earlier than 2.8.6.
13624	//
13625	//    * Redis (cluster mode disabled): T1 node types.
13626	//
13627	//    * Redis (cluster mode enabled): T1 node types.
13628	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
13629
13630	// The date and time when the source cluster was created.
13631	CacheClusterCreateTime *time.Time `type:"timestamp"`
13632
13633	// The user-supplied identifier of the source cluster.
13634	CacheClusterId *string `type:"string"`
13635
13636	// The name of the compute and memory capacity node type for the source cluster.
13637	//
13638	// The following node types are supported by ElastiCache. Generally speaking,
13639	// the current generation types provide more memory and computational power
13640	// at lower cost when compared to their equivalent previous generation counterparts.
13641	//
13642	//    * General purpose: Current generation: M5 node types: cache.m5.large,
13643	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
13644	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
13645	//    cache.m4.4xlarge, cache.m4.10xlarge T2 node types: cache.t2.micro, cache.t2.small,
13646	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
13647	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
13648	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
13649	//    cache.m3.2xlarge
13650	//
13651	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
13652	//    cache.c1.xlarge
13653	//
13654	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
13655	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
13656	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
13657	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
13658	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
13659	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
13660	//    cache.r3.8xlarge
13661	//
13662	// Additional node type info
13663	//
13664	//    * All current generation instance types are created in Amazon VPC by default.
13665	//
13666	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
13667	//
13668	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
13669	//
13670	//    * Redis configuration variables appendonly and appendfsync are not supported
13671	//    on Redis version 2.8.22 and later.
13672	CacheNodeType *string `type:"string"`
13673
13674	// The cache parameter group that is associated with the source cluster.
13675	CacheParameterGroupName *string `type:"string"`
13676
13677	// The name of the cache subnet group associated with the source cluster.
13678	CacheSubnetGroupName *string `type:"string"`
13679
13680	// The name of the cache engine (memcached or redis) used by the source cluster.
13681	Engine *string `type:"string"`
13682
13683	// The version of the cache engine version that is used by the source cluster.
13684	EngineVersion *string `type:"string"`
13685
13686	// A list of the cache nodes in the source cluster.
13687	NodeSnapshots []*NodeSnapshot `locationNameList:"NodeSnapshot" type:"list"`
13688
13689	// The number of cache nodes in the source cluster.
13690	//
13691	// For clusters running Redis, this value must be 1. For clusters running Memcached,
13692	// this value must be between 1 and 20.
13693	NumCacheNodes *int64 `type:"integer"`
13694
13695	// The number of node groups (shards) in this snapshot. When restoring from
13696	// a snapshot, the number of node groups (shards) in the snapshot and in the
13697	// restored replication group must be the same.
13698	NumNodeGroups *int64 `type:"integer"`
13699
13700	// The port number used by each cache nodes in the source cluster.
13701	Port *int64 `type:"integer"`
13702
13703	// The name of the Availability Zone in which the source cluster is located.
13704	PreferredAvailabilityZone *string `type:"string"`
13705
13706	// Specifies the weekly time range during which maintenance on the cluster is
13707	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
13708	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
13709	//
13710	// Valid values for ddd are:
13711	//
13712	//    * sun
13713	//
13714	//    * mon
13715	//
13716	//    * tue
13717	//
13718	//    * wed
13719	//
13720	//    * thu
13721	//
13722	//    * fri
13723	//
13724	//    * sat
13725	//
13726	// Example: sun:23:00-mon:01:30
13727	PreferredMaintenanceWindow *string `type:"string"`
13728
13729	// A description of the source replication group.
13730	ReplicationGroupDescription *string `type:"string"`
13731
13732	// The unique identifier of the source replication group.
13733	ReplicationGroupId *string `type:"string"`
13734
13735	// The name of a snapshot. For an automatic snapshot, the name is system-generated.
13736	// For a manual snapshot, this is the user-provided name.
13737	SnapshotName *string `type:"string"`
13738
13739	// For an automatic snapshot, the number of days for which ElastiCache retains
13740	// the snapshot before deleting it.
13741	//
13742	// For manual snapshots, this field reflects the SnapshotRetentionLimit for
13743	// the source cluster when the snapshot was created. This field is otherwise
13744	// ignored: Manual snapshots do not expire, and can only be deleted using the
13745	// DeleteSnapshot operation.
13746	//
13747	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
13748	// are turned off.
13749	SnapshotRetentionLimit *int64 `type:"integer"`
13750
13751	// Indicates whether the snapshot is from an automatic backup (automated) or
13752	// was created manually (manual).
13753	SnapshotSource *string `type:"string"`
13754
13755	// The status of the snapshot. Valid values: creating | available | restoring
13756	// | copying | deleting.
13757	SnapshotStatus *string `type:"string"`
13758
13759	// The daily time range during which ElastiCache takes daily snapshots of the
13760	// source cluster.
13761	SnapshotWindow *string `type:"string"`
13762
13763	// The Amazon Resource Name (ARN) for the topic used by the source cluster for
13764	// publishing notifications.
13765	TopicArn *string `type:"string"`
13766
13767	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
13768	// group for the source cluster.
13769	VpcId *string `type:"string"`
13770}
13771
13772// String returns the string representation
13773func (s Snapshot) String() string {
13774	return awsutil.Prettify(s)
13775}
13776
13777// GoString returns the string representation
13778func (s Snapshot) GoString() string {
13779	return s.String()
13780}
13781
13782// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
13783func (s *Snapshot) SetAutoMinorVersionUpgrade(v bool) *Snapshot {
13784	s.AutoMinorVersionUpgrade = &v
13785	return s
13786}
13787
13788// SetAutomaticFailover sets the AutomaticFailover field's value.
13789func (s *Snapshot) SetAutomaticFailover(v string) *Snapshot {
13790	s.AutomaticFailover = &v
13791	return s
13792}
13793
13794// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
13795func (s *Snapshot) SetCacheClusterCreateTime(v time.Time) *Snapshot {
13796	s.CacheClusterCreateTime = &v
13797	return s
13798}
13799
13800// SetCacheClusterId sets the CacheClusterId field's value.
13801func (s *Snapshot) SetCacheClusterId(v string) *Snapshot {
13802	s.CacheClusterId = &v
13803	return s
13804}
13805
13806// SetCacheNodeType sets the CacheNodeType field's value.
13807func (s *Snapshot) SetCacheNodeType(v string) *Snapshot {
13808	s.CacheNodeType = &v
13809	return s
13810}
13811
13812// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13813func (s *Snapshot) SetCacheParameterGroupName(v string) *Snapshot {
13814	s.CacheParameterGroupName = &v
13815	return s
13816}
13817
13818// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
13819func (s *Snapshot) SetCacheSubnetGroupName(v string) *Snapshot {
13820	s.CacheSubnetGroupName = &v
13821	return s
13822}
13823
13824// SetEngine sets the Engine field's value.
13825func (s *Snapshot) SetEngine(v string) *Snapshot {
13826	s.Engine = &v
13827	return s
13828}
13829
13830// SetEngineVersion sets the EngineVersion field's value.
13831func (s *Snapshot) SetEngineVersion(v string) *Snapshot {
13832	s.EngineVersion = &v
13833	return s
13834}
13835
13836// SetNodeSnapshots sets the NodeSnapshots field's value.
13837func (s *Snapshot) SetNodeSnapshots(v []*NodeSnapshot) *Snapshot {
13838	s.NodeSnapshots = v
13839	return s
13840}
13841
13842// SetNumCacheNodes sets the NumCacheNodes field's value.
13843func (s *Snapshot) SetNumCacheNodes(v int64) *Snapshot {
13844	s.NumCacheNodes = &v
13845	return s
13846}
13847
13848// SetNumNodeGroups sets the NumNodeGroups field's value.
13849func (s *Snapshot) SetNumNodeGroups(v int64) *Snapshot {
13850	s.NumNodeGroups = &v
13851	return s
13852}
13853
13854// SetPort sets the Port field's value.
13855func (s *Snapshot) SetPort(v int64) *Snapshot {
13856	s.Port = &v
13857	return s
13858}
13859
13860// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
13861func (s *Snapshot) SetPreferredAvailabilityZone(v string) *Snapshot {
13862	s.PreferredAvailabilityZone = &v
13863	return s
13864}
13865
13866// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
13867func (s *Snapshot) SetPreferredMaintenanceWindow(v string) *Snapshot {
13868	s.PreferredMaintenanceWindow = &v
13869	return s
13870}
13871
13872// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
13873func (s *Snapshot) SetReplicationGroupDescription(v string) *Snapshot {
13874	s.ReplicationGroupDescription = &v
13875	return s
13876}
13877
13878// SetReplicationGroupId sets the ReplicationGroupId field's value.
13879func (s *Snapshot) SetReplicationGroupId(v string) *Snapshot {
13880	s.ReplicationGroupId = &v
13881	return s
13882}
13883
13884// SetSnapshotName sets the SnapshotName field's value.
13885func (s *Snapshot) SetSnapshotName(v string) *Snapshot {
13886	s.SnapshotName = &v
13887	return s
13888}
13889
13890// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
13891func (s *Snapshot) SetSnapshotRetentionLimit(v int64) *Snapshot {
13892	s.SnapshotRetentionLimit = &v
13893	return s
13894}
13895
13896// SetSnapshotSource sets the SnapshotSource field's value.
13897func (s *Snapshot) SetSnapshotSource(v string) *Snapshot {
13898	s.SnapshotSource = &v
13899	return s
13900}
13901
13902// SetSnapshotStatus sets the SnapshotStatus field's value.
13903func (s *Snapshot) SetSnapshotStatus(v string) *Snapshot {
13904	s.SnapshotStatus = &v
13905	return s
13906}
13907
13908// SetSnapshotWindow sets the SnapshotWindow field's value.
13909func (s *Snapshot) SetSnapshotWindow(v string) *Snapshot {
13910	s.SnapshotWindow = &v
13911	return s
13912}
13913
13914// SetTopicArn sets the TopicArn field's value.
13915func (s *Snapshot) SetTopicArn(v string) *Snapshot {
13916	s.TopicArn = &v
13917	return s
13918}
13919
13920// SetVpcId sets the VpcId field's value.
13921func (s *Snapshot) SetVpcId(v string) *Snapshot {
13922	s.VpcId = &v
13923	return s
13924}
13925
13926// Represents the subnet associated with a cluster. This parameter refers to
13927// subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with
13928// ElastiCache.
13929type Subnet struct {
13930	_ struct{} `type:"structure"`
13931
13932	// The Availability Zone associated with the subnet.
13933	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`
13934
13935	// The unique identifier for the subnet.
13936	SubnetIdentifier *string `type:"string"`
13937}
13938
13939// String returns the string representation
13940func (s Subnet) String() string {
13941	return awsutil.Prettify(s)
13942}
13943
13944// GoString returns the string representation
13945func (s Subnet) GoString() string {
13946	return s.String()
13947}
13948
13949// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
13950func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
13951	s.SubnetAvailabilityZone = v
13952	return s
13953}
13954
13955// SetSubnetIdentifier sets the SubnetIdentifier field's value.
13956func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
13957	s.SubnetIdentifier = &v
13958	return s
13959}
13960
13961// A cost allocation Tag that can be added to an ElastiCache cluster or replication
13962// group. Tags are composed of a Key/Value pair. A tag with a null Value is
13963// permitted.
13964type Tag struct {
13965	_ struct{} `type:"structure"`
13966
13967	// The key for the tag. May not be null.
13968	Key *string `type:"string"`
13969
13970	// The tag's value. May be null.
13971	Value *string `type:"string"`
13972}
13973
13974// String returns the string representation
13975func (s Tag) String() string {
13976	return awsutil.Prettify(s)
13977}
13978
13979// GoString returns the string representation
13980func (s Tag) GoString() string {
13981	return s.String()
13982}
13983
13984// SetKey sets the Key field's value.
13985func (s *Tag) SetKey(v string) *Tag {
13986	s.Key = &v
13987	return s
13988}
13989
13990// SetValue sets the Value field's value.
13991func (s *Tag) SetValue(v string) *Tag {
13992	s.Value = &v
13993	return s
13994}
13995
13996// Represents the output from the AddTagsToResource, ListTagsForResource, and
13997// RemoveTagsFromResource operations.
13998type TagListMessage struct {
13999	_ struct{} `type:"structure"`
14000
14001	// A list of cost allocation tags as key-value pairs.
14002	TagList []*Tag `locationNameList:"Tag" type:"list"`
14003}
14004
14005// String returns the string representation
14006func (s TagListMessage) String() string {
14007	return awsutil.Prettify(s)
14008}
14009
14010// GoString returns the string representation
14011func (s TagListMessage) GoString() string {
14012	return s.String()
14013}
14014
14015// SetTagList sets the TagList field's value.
14016func (s *TagListMessage) SetTagList(v []*Tag) *TagListMessage {
14017	s.TagList = v
14018	return s
14019}
14020
14021type TestFailoverInput struct {
14022	_ struct{} `type:"structure"`
14023
14024	// The name of the node group (called shard in the console) in this replication
14025	// group on which automatic failover is to be tested. You may test automatic
14026	// failover on up to 5 node groups in any rolling 24-hour period.
14027	//
14028	// NodeGroupId is a required field
14029	NodeGroupId *string `min:"1" type:"string" required:"true"`
14030
14031	// The name of the replication group (console: cluster) whose automatic failover
14032	// is being tested by this operation.
14033	//
14034	// ReplicationGroupId is a required field
14035	ReplicationGroupId *string `type:"string" required:"true"`
14036}
14037
14038// String returns the string representation
14039func (s TestFailoverInput) String() string {
14040	return awsutil.Prettify(s)
14041}
14042
14043// GoString returns the string representation
14044func (s TestFailoverInput) GoString() string {
14045	return s.String()
14046}
14047
14048// Validate inspects the fields of the type to determine if they are valid.
14049func (s *TestFailoverInput) Validate() error {
14050	invalidParams := request.ErrInvalidParams{Context: "TestFailoverInput"}
14051	if s.NodeGroupId == nil {
14052		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
14053	}
14054	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
14055		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
14056	}
14057	if s.ReplicationGroupId == nil {
14058		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
14059	}
14060
14061	if invalidParams.Len() > 0 {
14062		return invalidParams
14063	}
14064	return nil
14065}
14066
14067// SetNodeGroupId sets the NodeGroupId field's value.
14068func (s *TestFailoverInput) SetNodeGroupId(v string) *TestFailoverInput {
14069	s.NodeGroupId = &v
14070	return s
14071}
14072
14073// SetReplicationGroupId sets the ReplicationGroupId field's value.
14074func (s *TestFailoverInput) SetReplicationGroupId(v string) *TestFailoverInput {
14075	s.ReplicationGroupId = &v
14076	return s
14077}
14078
14079type TestFailoverOutput struct {
14080	_ struct{} `type:"structure"`
14081
14082	// Contains all of the attributes of a specific Redis replication group.
14083	ReplicationGroup *ReplicationGroup `type:"structure"`
14084}
14085
14086// String returns the string representation
14087func (s TestFailoverOutput) String() string {
14088	return awsutil.Prettify(s)
14089}
14090
14091// GoString returns the string representation
14092func (s TestFailoverOutput) GoString() string {
14093	return s.String()
14094}
14095
14096// SetReplicationGroup sets the ReplicationGroup field's value.
14097func (s *TestFailoverOutput) SetReplicationGroup(v *ReplicationGroup) *TestFailoverOutput {
14098	s.ReplicationGroup = v
14099	return s
14100}
14101
14102// Filters update actions from the service updates that are in available status
14103// during the time range.
14104type TimeRangeFilter struct {
14105	_ struct{} `type:"structure"`
14106
14107	// The end time of the time range filter
14108	EndTime *time.Time `type:"timestamp"`
14109
14110	// The start time of the time range filter
14111	StartTime *time.Time `type:"timestamp"`
14112}
14113
14114// String returns the string representation
14115func (s TimeRangeFilter) String() string {
14116	return awsutil.Prettify(s)
14117}
14118
14119// GoString returns the string representation
14120func (s TimeRangeFilter) GoString() string {
14121	return s.String()
14122}
14123
14124// SetEndTime sets the EndTime field's value.
14125func (s *TimeRangeFilter) SetEndTime(v time.Time) *TimeRangeFilter {
14126	s.EndTime = &v
14127	return s
14128}
14129
14130// SetStartTime sets the StartTime field's value.
14131func (s *TimeRangeFilter) SetStartTime(v time.Time) *TimeRangeFilter {
14132	s.StartTime = &v
14133	return s
14134}
14135
14136// Update action that has failed to be processed for the corresponding apply/stop
14137// request
14138type UnprocessedUpdateAction struct {
14139	_ struct{} `type:"structure"`
14140
14141	// The error message that describes the reason the request was not processed
14142	ErrorMessage *string `type:"string"`
14143
14144	// The error type for requests that are not processed
14145	ErrorType *string `type:"string"`
14146
14147	// The replication group ID
14148	ReplicationGroupId *string `type:"string"`
14149
14150	// The unique ID of the service update
14151	ServiceUpdateName *string `type:"string"`
14152}
14153
14154// String returns the string representation
14155func (s UnprocessedUpdateAction) String() string {
14156	return awsutil.Prettify(s)
14157}
14158
14159// GoString returns the string representation
14160func (s UnprocessedUpdateAction) GoString() string {
14161	return s.String()
14162}
14163
14164// SetErrorMessage sets the ErrorMessage field's value.
14165func (s *UnprocessedUpdateAction) SetErrorMessage(v string) *UnprocessedUpdateAction {
14166	s.ErrorMessage = &v
14167	return s
14168}
14169
14170// SetErrorType sets the ErrorType field's value.
14171func (s *UnprocessedUpdateAction) SetErrorType(v string) *UnprocessedUpdateAction {
14172	s.ErrorType = &v
14173	return s
14174}
14175
14176// SetReplicationGroupId sets the ReplicationGroupId field's value.
14177func (s *UnprocessedUpdateAction) SetReplicationGroupId(v string) *UnprocessedUpdateAction {
14178	s.ReplicationGroupId = &v
14179	return s
14180}
14181
14182// SetServiceUpdateName sets the ServiceUpdateName field's value.
14183func (s *UnprocessedUpdateAction) SetServiceUpdateName(v string) *UnprocessedUpdateAction {
14184	s.ServiceUpdateName = &v
14185	return s
14186}
14187
14188// The status of the service update for a specific replication group
14189type UpdateAction struct {
14190	_ struct{} `type:"structure"`
14191
14192	// The estimated length of time for the update to complete
14193	EstimatedUpdateTime *string `type:"string"`
14194
14195	// The status of the service update on the node group
14196	NodeGroupUpdateStatus []*NodeGroupUpdateStatus `locationNameList:"NodeGroupUpdateStatus" type:"list"`
14197
14198	// The progress of the service update on the replication group
14199	NodesUpdated *string `type:"string"`
14200
14201	// The ID of the replication group
14202	ReplicationGroupId *string `type:"string"`
14203
14204	// The unique ID of the service update
14205	ServiceUpdateName *string `type:"string"`
14206
14207	// The recommended date to apply the service update to ensure compliance. For
14208	// information on compliance, see Self-Service Security Updates for Compliance
14209	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
14210	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
14211
14212	// The date the update is first available
14213	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
14214
14215	// The severity of the service update
14216	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
14217
14218	// The status of the service update
14219	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
14220
14221	// Reflects the nature of the service update
14222	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
14223
14224	// If yes, all nodes in the replication group have been updated by the recommended
14225	// apply-by date. If no, at least one node in the replication group have not
14226	// been updated by the recommended apply-by date. If N/A, the replication group
14227	// was created after the recommended apply-by date.
14228	SlaMet *string `type:"string" enum:"SlaMet"`
14229
14230	// The date that the service update is available to a replication group
14231	UpdateActionAvailableDate *time.Time `type:"timestamp"`
14232
14233	// The status of the update action
14234	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
14235
14236	// The date when the UpdateActionStatus was last modified
14237	UpdateActionStatusModifiedDate *time.Time `type:"timestamp"`
14238}
14239
14240// String returns the string representation
14241func (s UpdateAction) String() string {
14242	return awsutil.Prettify(s)
14243}
14244
14245// GoString returns the string representation
14246func (s UpdateAction) GoString() string {
14247	return s.String()
14248}
14249
14250// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
14251func (s *UpdateAction) SetEstimatedUpdateTime(v string) *UpdateAction {
14252	s.EstimatedUpdateTime = &v
14253	return s
14254}
14255
14256// SetNodeGroupUpdateStatus sets the NodeGroupUpdateStatus field's value.
14257func (s *UpdateAction) SetNodeGroupUpdateStatus(v []*NodeGroupUpdateStatus) *UpdateAction {
14258	s.NodeGroupUpdateStatus = v
14259	return s
14260}
14261
14262// SetNodesUpdated sets the NodesUpdated field's value.
14263func (s *UpdateAction) SetNodesUpdated(v string) *UpdateAction {
14264	s.NodesUpdated = &v
14265	return s
14266}
14267
14268// SetReplicationGroupId sets the ReplicationGroupId field's value.
14269func (s *UpdateAction) SetReplicationGroupId(v string) *UpdateAction {
14270	s.ReplicationGroupId = &v
14271	return s
14272}
14273
14274// SetServiceUpdateName sets the ServiceUpdateName field's value.
14275func (s *UpdateAction) SetServiceUpdateName(v string) *UpdateAction {
14276	s.ServiceUpdateName = &v
14277	return s
14278}
14279
14280// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
14281func (s *UpdateAction) SetServiceUpdateRecommendedApplyByDate(v time.Time) *UpdateAction {
14282	s.ServiceUpdateRecommendedApplyByDate = &v
14283	return s
14284}
14285
14286// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
14287func (s *UpdateAction) SetServiceUpdateReleaseDate(v time.Time) *UpdateAction {
14288	s.ServiceUpdateReleaseDate = &v
14289	return s
14290}
14291
14292// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
14293func (s *UpdateAction) SetServiceUpdateSeverity(v string) *UpdateAction {
14294	s.ServiceUpdateSeverity = &v
14295	return s
14296}
14297
14298// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
14299func (s *UpdateAction) SetServiceUpdateStatus(v string) *UpdateAction {
14300	s.ServiceUpdateStatus = &v
14301	return s
14302}
14303
14304// SetServiceUpdateType sets the ServiceUpdateType field's value.
14305func (s *UpdateAction) SetServiceUpdateType(v string) *UpdateAction {
14306	s.ServiceUpdateType = &v
14307	return s
14308}
14309
14310// SetSlaMet sets the SlaMet field's value.
14311func (s *UpdateAction) SetSlaMet(v string) *UpdateAction {
14312	s.SlaMet = &v
14313	return s
14314}
14315
14316// SetUpdateActionAvailableDate sets the UpdateActionAvailableDate field's value.
14317func (s *UpdateAction) SetUpdateActionAvailableDate(v time.Time) *UpdateAction {
14318	s.UpdateActionAvailableDate = &v
14319	return s
14320}
14321
14322// SetUpdateActionStatus sets the UpdateActionStatus field's value.
14323func (s *UpdateAction) SetUpdateActionStatus(v string) *UpdateAction {
14324	s.UpdateActionStatus = &v
14325	return s
14326}
14327
14328// SetUpdateActionStatusModifiedDate sets the UpdateActionStatusModifiedDate field's value.
14329func (s *UpdateAction) SetUpdateActionStatusModifiedDate(v time.Time) *UpdateAction {
14330	s.UpdateActionStatusModifiedDate = &v
14331	return s
14332}
14333
14334const (
14335	// AZModeSingleAz is a AZMode enum value
14336	AZModeSingleAz = "single-az"
14337
14338	// AZModeCrossAz is a AZMode enum value
14339	AZModeCrossAz = "cross-az"
14340)
14341
14342const (
14343	// AutomaticFailoverStatusEnabled is a AutomaticFailoverStatus enum value
14344	AutomaticFailoverStatusEnabled = "enabled"
14345
14346	// AutomaticFailoverStatusDisabled is a AutomaticFailoverStatus enum value
14347	AutomaticFailoverStatusDisabled = "disabled"
14348
14349	// AutomaticFailoverStatusEnabling is a AutomaticFailoverStatus enum value
14350	AutomaticFailoverStatusEnabling = "enabling"
14351
14352	// AutomaticFailoverStatusDisabling is a AutomaticFailoverStatus enum value
14353	AutomaticFailoverStatusDisabling = "disabling"
14354)
14355
14356const (
14357	// ChangeTypeImmediate is a ChangeType enum value
14358	ChangeTypeImmediate = "immediate"
14359
14360	// ChangeTypeRequiresReboot is a ChangeType enum value
14361	ChangeTypeRequiresReboot = "requires-reboot"
14362)
14363
14364const (
14365	// NodeUpdateInitiatedBySystem is a NodeUpdateInitiatedBy enum value
14366	NodeUpdateInitiatedBySystem = "system"
14367
14368	// NodeUpdateInitiatedByCustomer is a NodeUpdateInitiatedBy enum value
14369	NodeUpdateInitiatedByCustomer = "customer"
14370)
14371
14372const (
14373	// NodeUpdateStatusNotApplied is a NodeUpdateStatus enum value
14374	NodeUpdateStatusNotApplied = "not-applied"
14375
14376	// NodeUpdateStatusWaitingToStart is a NodeUpdateStatus enum value
14377	NodeUpdateStatusWaitingToStart = "waiting-to-start"
14378
14379	// NodeUpdateStatusInProgress is a NodeUpdateStatus enum value
14380	NodeUpdateStatusInProgress = "in-progress"
14381
14382	// NodeUpdateStatusStopping is a NodeUpdateStatus enum value
14383	NodeUpdateStatusStopping = "stopping"
14384
14385	// NodeUpdateStatusStopped is a NodeUpdateStatus enum value
14386	NodeUpdateStatusStopped = "stopped"
14387
14388	// NodeUpdateStatusComplete is a NodeUpdateStatus enum value
14389	NodeUpdateStatusComplete = "complete"
14390)
14391
14392const (
14393	// PendingAutomaticFailoverStatusEnabled is a PendingAutomaticFailoverStatus enum value
14394	PendingAutomaticFailoverStatusEnabled = "enabled"
14395
14396	// PendingAutomaticFailoverStatusDisabled is a PendingAutomaticFailoverStatus enum value
14397	PendingAutomaticFailoverStatusDisabled = "disabled"
14398)
14399
14400const (
14401	// ServiceUpdateSeverityCritical is a ServiceUpdateSeverity enum value
14402	ServiceUpdateSeverityCritical = "critical"
14403
14404	// ServiceUpdateSeverityImportant is a ServiceUpdateSeverity enum value
14405	ServiceUpdateSeverityImportant = "important"
14406
14407	// ServiceUpdateSeverityMedium is a ServiceUpdateSeverity enum value
14408	ServiceUpdateSeverityMedium = "medium"
14409
14410	// ServiceUpdateSeverityLow is a ServiceUpdateSeverity enum value
14411	ServiceUpdateSeverityLow = "low"
14412)
14413
14414const (
14415	// ServiceUpdateStatusAvailable is a ServiceUpdateStatus enum value
14416	ServiceUpdateStatusAvailable = "available"
14417
14418	// ServiceUpdateStatusCancelled is a ServiceUpdateStatus enum value
14419	ServiceUpdateStatusCancelled = "cancelled"
14420
14421	// ServiceUpdateStatusExpired is a ServiceUpdateStatus enum value
14422	ServiceUpdateStatusExpired = "expired"
14423)
14424
14425const (
14426	// ServiceUpdateTypeSecurityUpdate is a ServiceUpdateType enum value
14427	ServiceUpdateTypeSecurityUpdate = "security-update"
14428)
14429
14430const (
14431	// SlaMetYes is a SlaMet enum value
14432	SlaMetYes = "yes"
14433
14434	// SlaMetNo is a SlaMet enum value
14435	SlaMetNo = "no"
14436
14437	// SlaMetNA is a SlaMet enum value
14438	SlaMetNA = "n/a"
14439)
14440
14441const (
14442	// SourceTypeCacheCluster is a SourceType enum value
14443	SourceTypeCacheCluster = "cache-cluster"
14444
14445	// SourceTypeCacheParameterGroup is a SourceType enum value
14446	SourceTypeCacheParameterGroup = "cache-parameter-group"
14447
14448	// SourceTypeCacheSecurityGroup is a SourceType enum value
14449	SourceTypeCacheSecurityGroup = "cache-security-group"
14450
14451	// SourceTypeCacheSubnetGroup is a SourceType enum value
14452	SourceTypeCacheSubnetGroup = "cache-subnet-group"
14453
14454	// SourceTypeReplicationGroup is a SourceType enum value
14455	SourceTypeReplicationGroup = "replication-group"
14456)
14457
14458const (
14459	// UpdateActionStatusNotApplied is a UpdateActionStatus enum value
14460	UpdateActionStatusNotApplied = "not-applied"
14461
14462	// UpdateActionStatusWaitingToStart is a UpdateActionStatus enum value
14463	UpdateActionStatusWaitingToStart = "waiting-to-start"
14464
14465	// UpdateActionStatusInProgress is a UpdateActionStatus enum value
14466	UpdateActionStatusInProgress = "in-progress"
14467
14468	// UpdateActionStatusStopping is a UpdateActionStatus enum value
14469	UpdateActionStatusStopping = "stopping"
14470
14471	// UpdateActionStatusStopped is a UpdateActionStatus enum value
14472	UpdateActionStatusStopped = "stopped"
14473
14474	// UpdateActionStatusComplete is a UpdateActionStatus enum value
14475	UpdateActionStatusComplete = "complete"
14476)
14477