/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.redshift.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.AmazonWebServiceRequest; /** *

* * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class ModifyClusterRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable { /** *

* The unique identifier of the cluster to be modified. *

*

* Example: examplecluster *

*/ private String clusterIdentifier; /** *

* The new cluster type. *

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon * Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the * old cluster is deleted and your connection is switched to the new cluster. You can use DescribeResize to * track the progress of the resize request. *

*

* Valid Values: multi-node | single-node *

*/ private String clusterType; /** *

* The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge *

*/ private String nodeType; /** *

* The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. *

*/ private Integer numberOfNodes; /** *

* A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon * as possible. *

*

* Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked * from the cluster. *

*

* Constraints: *

* */ private com.amazonaws.internal.SdkInternalList clusterSecurityGroups; /** *

* A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is * asynchronously applied as soon as possible. *

*/ private com.amazonaws.internal.SdkInternalList vpcSecurityGroupIds; /** *

* The new password for the cluster admin user. This change is asynchronously applied as soon as possible. Between * the time of the request and the completion of the request, the MasterUserPassword element exists in * the PendingModifiedValues element of the operation response. *

* *

* Operations never return the password, so this operation provides a way to regain access to the admin user account * for a cluster if the password is lost. *

*
*

* Default: Uses existing setting. *

*

* Constraints: *

* */ private String masterUserPassword; /** *

* The name of the cluster parameter group to apply to this cluster. This change is applied only after the cluster * is rebooted. To reboot a cluster use RebootCluster. *

*

* Default: Uses existing setting. *

*

* Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster * version. *

*/ private String clusterParameterGroupName; /** *

* The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. * Even if automated snapshots are disabled, you can still create manual snapshots when you want with * CreateClusterSnapshot. *

*

* If you decrease the automated snapshot retention period from its current value, existing automated snapshots that * fall outside of the new retention period will be immediately deleted. *

*

* You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days. *

*

* Default: Uses existing setting. *

*

* Constraints: Must be a value from 0 to 35. *

*/ private Integer automatedSnapshotRetentionPeriod; /** *

* The default for number of days that a newly created manual snapshot is retained. If the value is -1, the manual * snapshot is retained indefinitely. This value doesn't retroactively change the retention periods of existing * manual snapshots. *

*

* The value must be either -1 or an integer between 1 and 3,653. *

*

* The default value is -1. *

*/ private Integer manualSnapshotRetentionPeriod; /** *

* The weekly time range (in UTC) during which system maintenance can occur, if necessary. If system maintenance is * necessary during the window, it may result in an outage. *

*

* This maintenance window change is made immediately. If the new maintenance window indicates the current time, * there must be at least 120 minutes between the current time and end of the window in order to ensure that pending * changes are applied. *

*

* Default: Uses existing setting. *

*

* Format: ddd:hh24:mi-ddd:hh24:mi, for example wed:07:30-wed:08:00. *

*

* Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun *

*

* Constraints: Must be at least 30 minutes. *

*/ private String preferredMaintenanceWindow; /** *

* The new version number of the Amazon Redshift engine to upgrade to. *

*

* For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter * group in the cluster parameter group family for the new version must be specified. The new cluster parameter * group can be the default for that cluster parameter group family. For more information about parameters and * parameter groups, go to Amazon Redshift * Parameter Groups in the Amazon Redshift Cluster Management Guide. *

*

* Example: 1.0 *

*/ private String clusterVersion; /** *

* If true, major version upgrades will be applied automatically to the cluster during the maintenance * window. *

*

* Default: false *

*/ private Boolean allowVersionUpgrade; /** *

* Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption * keys stored in an HSM. *

*/ private String hsmClientCertificateIdentifier; /** *

* Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to * retrieve and store keys in an HSM. *

*/ private String hsmConfigurationIdentifier; /** *

* The new identifier for the cluster. *

*

* Constraints: *

* *

* Example: examplecluster *

*/ private String newClusterIdentifier; /** *

* If true, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be * publicly available. *

*/ private Boolean publiclyAccessible; /** *

* The Elastic IP (EIP) address for the cluster. *

*

* Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For * more information about provisioning clusters in EC2-VPC, go to Supported * Platforms to Launch Your Cluster in the Amazon Redshift Cluster Management Guide. *

*/ private String elasticIp; /** *

* An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster * that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the * Amazon Redshift Cluster Management Guide. *

*

* If this option is true, enhanced VPC routing is enabled. *

*

* Default: false *

*/ private Boolean enhancedVpcRouting; /** *

* The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The * new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. * When the maintenance track changes, the cluster is switched to the latest cluster release available for the * maintenance track. At this point, the maintenance track name is applied. *

*/ private String maintenanceTrackName; /** *

* Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the * KmsKeyId parameter, we encrypt the cluster with the provided KmsKeyId. If you don't * provide a KmsKeyId, we encrypt with the default key. *

*

* If the value is not encrypted (false), then the cluster is decrypted. *

*/ private Boolean encrypted; /** *

* The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the * cluster. *

*/ private String kmsKeyId; /** *

* The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster * modification is complete. *

*/ private Boolean availabilityZoneRelocation; /** *

* The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone. *

*/ private String availabilityZone; /** *

* The option to change the port of an Amazon Redshift cluster. *

*/ private Integer port; /** *

* The unique identifier of the cluster to be modified. *

*

* Example: examplecluster *

* * @param clusterIdentifier * The unique identifier of the cluster to be modified.

*

* Example: examplecluster */ public void setClusterIdentifier(String clusterIdentifier) { this.clusterIdentifier = clusterIdentifier; } /** *

* The unique identifier of the cluster to be modified. *

*

* Example: examplecluster *

* * @return The unique identifier of the cluster to be modified.

*

* Example: examplecluster */ public String getClusterIdentifier() { return this.clusterIdentifier; } /** *

* The unique identifier of the cluster to be modified. *

*

* Example: examplecluster *

* * @param clusterIdentifier * The unique identifier of the cluster to be modified.

*

* Example: examplecluster * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyClusterRequest withClusterIdentifier(String clusterIdentifier) { setClusterIdentifier(clusterIdentifier); return this; } /** *

* The new cluster type. *

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon * Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the * old cluster is deleted and your connection is switched to the new cluster. You can use DescribeResize to * track the progress of the resize request. *

*

* Valid Values: multi-node | single-node *

* * @param clusterType * The new cluster type.

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After * Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a * period while the old cluster is deleted and your connection is switched to the new cluster. You can use * DescribeResize to track the progress of the resize request. *

*

* Valid Values: multi-node | single-node */ public void setClusterType(String clusterType) { this.clusterType = clusterType; } /** *

* The new cluster type. *

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon * Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the * old cluster is deleted and your connection is switched to the new cluster. You can use DescribeResize to * track the progress of the resize request. *

*

* Valid Values: multi-node | single-node *

* * @return The new cluster type.

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After * Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a * period while the old cluster is deleted and your connection is switched to the new cluster. You can use * DescribeResize to track the progress of the resize request. *

*

* Valid Values: multi-node | single-node */ public String getClusterType() { return this.clusterType; } /** *

* The new cluster type. *

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon * Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the * old cluster is deleted and your connection is switched to the new cluster. You can use DescribeResize to * track the progress of the resize request. *

*

* Valid Values: multi-node | single-node *

* * @param clusterType * The new cluster type.

*

* When you submit your cluster resize request, your existing cluster goes into a read-only mode. After * Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a * period while the old cluster is deleted and your connection is switched to the new cluster. You can use * DescribeResize to track the progress of the resize request. *

*

* Valid Values: multi-node | single-node * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyClusterRequest withClusterType(String clusterType) { setClusterType(clusterType); return this; } /** *

* The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge *

* * @param nodeType * The new node type of the cluster. If you specify a new node type, you must also specify the number of * nodes parameter.

*

* For more information about resizing clusters, go to Resizing Clusters in * Amazon Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge */ public void setNodeType(String nodeType) { this.nodeType = nodeType; } /** *

* The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge *

* * @return The new node type of the cluster. If you specify a new node type, you must also specify the number of * nodes parameter.

*

* For more information about resizing clusters, go to Resizing Clusters in * Amazon Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge */ public String getNodeType() { return this.nodeType; } /** *

* The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge *

* * @param nodeType * The new node type of the cluster. If you specify a new node type, you must also specify the number of * nodes parameter.

*

* For more information about resizing clusters, go to Resizing Clusters in * Amazon Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | * dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | * ra3.4xlarge | ra3.16xlarge * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyClusterRequest withNodeType(String nodeType) { setNodeType(nodeType); return this; } /** *

* The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. *

* * @param numberOfNodes * The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the * node type parameter.

*

* For more information about resizing clusters, go to Resizing Clusters in * Amazon Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. */ public void setNumberOfNodes(Integer numberOfNodes) { this.numberOfNodes = numberOfNodes; } /** *

* The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. *

* * @return The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the * node type parameter.

*

* For more information about resizing clusters, go to Resizing Clusters in * Amazon Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. */ public Integer getNumberOfNodes() { return this.numberOfNodes; } /** *

* The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type * parameter. *

*

* For more information about resizing clusters, go to Resizing Clusters in Amazon * Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. *

* * @param numberOfNodes * The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the * node type parameter.

*

* For more information about resizing clusters, go to Resizing Clusters in * Amazon Redshift in the Amazon Redshift Cluster Management Guide. *

*

* Valid Values: Integer greater than 0. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyClusterRequest withNumberOfNodes(Integer numberOfNodes) { setNumberOfNodes(numberOfNodes); return this; } /** *

* A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon * as possible. *

*

* Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked * from the cluster. *

*

* Constraints: *

* * * @return A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied * as soon as possible.

*

* Security groups currently associated with the cluster, and not in the list of groups to apply, will be * revoked from the cluster. *

*

* Constraints: *

*