// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. package elasticache import ( "context" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/internal/awsutil" ) // Represents the input of a ModifyCacheCluster operation. type ModifyCacheClusterInput struct { _ struct{} `type:"structure"` // Specifies whether the new nodes in this Memcached cluster are all created // in a single Availability Zone or created across multiple Availability Zones. // // Valid values: single-az | cross-az. // // This option is only supported for Memcached clusters. // // You cannot specify single-az if the Memcached cluster already has cache nodes // in different Availability Zones. If cross-az is specified, existing Memcached // nodes remain in their current Availability Zone. // // Only newly created nodes are located in different Availability Zones. AZMode AZMode `type:"string" enum:"true"` // If true, this parameter causes the modifications in this request and any // pending modifications to be applied, asynchronously and as soon as possible, // regardless of the PreferredMaintenanceWindow setting for the cluster. // // If false, changes to the cluster are applied on the next maintenance reboot, // or the next failure reboot, whichever occurs first. // // If you perform a ModifyCacheCluster before a pending modification is applied, // the pending modification is replaced by the newer modification. // // Valid values: true | false // // Default: false ApplyImmediately *bool `type:"boolean"` // Reserved parameter. The password used to access a password protected server. // This parameter must be specified with the auth-token-update parameter. Password // constraints: // // * Must be only printable ASCII characters // // * Must be at least 16 characters and no more than 128 characters in length // // * Cannot contain any of the following characters: '/', '"', or '@', '%' // // For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH). AuthToken *string `type:"string"` // Specifies the strategy to use to update the AUTH token. This parameter must // be specified with the auth-token parameter. Possible values: // // * Rotate // // * Set // // For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html) AuthTokenUpdateStrategy AuthTokenUpdateStrategyType `type:"string" enum:"true"` // This parameter is currently disabled. AutoMinorVersionUpgrade *bool `type:"boolean"` // The cluster identifier. This value is stored as a lowercase string. // // CacheClusterId is a required field CacheClusterId *string `type:"string" required:"true"` // A list of cache node IDs to be removed. A node ID is a numeric identifier // (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less // than the existing number of cache nodes. The number of cache node IDs supplied // in this parameter must match the difference between the existing number of // cache nodes in the cluster or pending cache nodes, whichever is greater, // and the value of NumCacheNodes in the request. // // For example: If you have 3 active cache nodes, 7 pending cache nodes, and // the number of cache nodes in this ModifyCacheCluster call is 5, you must // list 2 (7 - 5) cache node IDs to remove. CacheNodeIdsToRemove []string `locationNameList:"CacheNodeId" type:"list"` // A valid cache node type that you want to scale this cluster up to. CacheNodeType *string `type:"string"` // The name of the cache parameter group to apply to this cluster. This change // is asynchronously applied as soon as possible for parameters when the ApplyImmediately // parameter is specified as true for this request. CacheParameterGroupName *string `type:"string"` // A list of cache security group names to authorize on this cluster. This change // is asynchronously applied as soon as possible. // // You can use this parameter only with clusters that are created outside of // an Amazon Virtual Private Cloud (Amazon VPC). // // Constraints: Must contain no more than 255 alphanumeric characters. Must // not be "Default". CacheSecurityGroupNames []string `locationNameList:"CacheSecurityGroupName" type:"list"` // The upgraded version of the cache engine to be run on the cache nodes. // // Important: You can upgrade to a newer engine version (see Selecting a Cache // Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)), // but you cannot downgrade to an earlier engine version. If you want to use // an earlier engine version, you must delete the existing cluster and create // it anew with the earlier engine version. EngineVersion *string `type:"string"` // The list of Availability Zones where the new Memcached cache nodes are created. // // This parameter is only valid when NumCacheNodes in the request is greater // than the sum of the number of active cache nodes and the number of cache // nodes pending creation (which may be zero). The number of Availability Zones // supplied in this list must match the cache nodes being added in this request. // // This option is only supported on Memcached clusters. // // Scenarios: // // * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify // NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones // for the two new nodes. // // * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from // the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6 // ((3 + 2) + 1) and optionally specify an Availability Zone for the new // node. // // * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3 // to cancel all pending operations. // // The Availability Zone placement of nodes pending creation cannot be modified. // If you wish to cancel any nodes pending creation, add 0 nodes by setting // NumCacheNodes to the number of current nodes. // // If cross-az is specified, existing Memcached nodes remain in their current // Availability Zone. Only newly created nodes can be located in different Availability // Zones. For guidance on how to move existing Memcached nodes to different // Availability Zones, see the Availability Zone Considerations section of Cache // Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html). // // Impact of new add/remove requests upon pending requests // // * Scenario-1 Pending Action: Delete New Request: Delete Result: The new // delete, pending or immediate, replaces the pending delete. // // * Scenario-2 Pending Action: Delete New Request: Create Result: The new // create, pending or immediate, replaces the pending delete. // // * Scenario-3 Pending Action: Create New Request: Delete Result: The new // delete, pending or immediate, replaces the pending create. // // * Scenario-4 Pending Action: Create New Request: Create Result: The new // create is added to the pending create. Important: If the new create request // is Apply Immediately - Yes, all creates are performed immediately. If // the new create request is Apply Immediately - No, all creates are pending. NewAvailabilityZones []string `locationNameList:"PreferredAvailabilityZone" type:"list"` // The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications // are sent. // // The Amazon SNS topic owner must be same as the cluster owner. NotificationTopicArn *string `type:"string"` // The status of the Amazon SNS notification topic. Notifications are sent only // if the status is active. // // Valid values: active | inactive NotificationTopicStatus *string `type:"string"` // The number of cache nodes that the cluster should have. If the value for // NumCacheNodes is greater than the sum of the number of current cache nodes // and the number of cache nodes pending creation (which may be zero), more // nodes are added. If the value is less than the number of existing cache nodes, // nodes are removed. If the value is equal to the number of current cache nodes, // any pending add or remove requests are canceled. // // If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter // to provide the IDs of the specific cache nodes to remove. // // For clusters running Redis, this value must be 1. For clusters running Memcached, // this value must be between 1 and 20. // // Adding or removing Memcached cache nodes can be applied immediately or as // a pending operation (see ApplyImmediately). // // A pending operation to modify the number of cache nodes in a cluster during // its maintenance window, whether by adding or removing nodes in accordance // with the scale out architecture, is not queued. The customer's latest request // to add or remove nodes to the cluster overrides any previous pending operations // to modify the number of cache nodes in the cluster. For example, a request // to remove 2 nodes would override a previous pending operation to remove 3 // nodes. Similarly, a request to add 2 nodes would override a previous pending // operation to remove 3 nodes and vice versa. As Memcached cache nodes may // now be provisioned in different Availability Zones with flexible cache node // placement, a request to add nodes does not automatically override a previous // pending operation to add nodes. The customer can modify the previous pending // operation to add more nodes or explicitly cancel the pending request and // retry the new request. To cancel pending operations to modify the number // of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes // equal to the number of cache nodes currently in the cluster. NumCacheNodes *int64 `type:"integer"` // Specifies the weekly time range during which maintenance on the cluster is // performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi // (24H Clock UTC). The minimum maintenance window is a 60 minute period. // // Valid values for ddd are: // // * sun // // * mon // // * tue // // * wed // // * thu // // * fri // // * sat // // Example: sun:23:00-mon:01:30 PreferredMaintenanceWindow *string `type:"string"` // Specifies the VPC Security Groups associated with the cluster. // // This parameter can be used only with clusters that are created in an Amazon // Virtual Private Cloud (Amazon VPC). SecurityGroupIds []string `locationNameList:"SecurityGroupId" type:"list"` // The number of days for which ElastiCache retains automatic cluster snapshots // before deleting them. For example, if you set SnapshotRetentionLimit to 5, // a snapshot that was taken today is retained for 5 days before being deleted. // // If the value of SnapshotRetentionLimit is set to zero (0), backups are turned // off. SnapshotRetentionLimit *int64 `type:"integer"` // The daily time range (in UTC) during which ElastiCache begins taking a daily // snapshot of your cluster. SnapshotWindow *string `type:"string"` } // String returns the string representation func (s ModifyCacheClusterInput) String() string { return awsutil.Prettify(s) } // Validate inspects the fields of the type to determine if they are valid. func (s *ModifyCacheClusterInput) Validate() error { invalidParams := aws.ErrInvalidParams{Context: "ModifyCacheClusterInput"} if s.CacheClusterId == nil { invalidParams.Add(aws.NewErrParamRequired("CacheClusterId")) } if invalidParams.Len() > 0 { return invalidParams } return nil } type ModifyCacheClusterOutput struct { _ struct{} `type:"structure"` // Contains all of the attributes of a specific cluster. CacheCluster *CacheCluster `type:"structure"` } // String returns the string representation func (s ModifyCacheClusterOutput) String() string { return awsutil.Prettify(s) } const opModifyCacheCluster = "ModifyCacheCluster" // ModifyCacheClusterRequest returns a request value for making API operation for // Amazon ElastiCache. // // Modifies the settings for a cluster. You can use this operation to change // one or more cluster configuration parameters by specifying the parameters // and the new values. // // // Example sending a request using ModifyCacheClusterRequest. // req := client.ModifyCacheClusterRequest(params) // resp, err := req.Send(context.TODO()) // if err == nil { // fmt.Println(resp) // } // // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster func (c *Client) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) ModifyCacheClusterRequest { op := &aws.Operation{ Name: opModifyCacheCluster, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &ModifyCacheClusterInput{} } req := c.newRequest(op, input, &ModifyCacheClusterOutput{}) return ModifyCacheClusterRequest{Request: req, Input: input, Copy: c.ModifyCacheClusterRequest} } // ModifyCacheClusterRequest is the request type for the // ModifyCacheCluster API operation. type ModifyCacheClusterRequest struct { *aws.Request Input *ModifyCacheClusterInput Copy func(*ModifyCacheClusterInput) ModifyCacheClusterRequest } // Send marshals and sends the ModifyCacheCluster API request. func (r ModifyCacheClusterRequest) Send(ctx context.Context) (*ModifyCacheClusterResponse, error) { r.Request.SetContext(ctx) err := r.Request.Send() if err != nil { return nil, err } resp := &ModifyCacheClusterResponse{ ModifyCacheClusterOutput: r.Request.Data.(*ModifyCacheClusterOutput), response: &aws.Response{Request: r.Request}, } return resp, nil } // ModifyCacheClusterResponse is the response type for the // ModifyCacheCluster API operation. type ModifyCacheClusterResponse struct { *ModifyCacheClusterOutput response *aws.Response } // SDKResponseMetdata returns the response metadata for the // ModifyCacheCluster request. func (r *ModifyCacheClusterResponse) SDKResponseMetdata() *aws.Response { return r.response }