aws_sdk_redshift/operation/modify_cluster/_modify_cluster_input.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p></p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
6pub struct ModifyClusterInput {
7 /// <p>The unique identifier of the cluster to be modified.</p>
8 /// <p>Example: <code>examplecluster</code></p>
9 pub cluster_identifier: ::std::option::Option<::std::string::String>,
10 /// <p>The new cluster type.</p>
11 /// <p>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 <code>DescribeResize</code> to track the progress of the resize request.</p>
12 /// <p>Valid Values: <code> multi-node | single-node </code></p>
13 pub cluster_type: ::std::option::Option<::std::string::String>,
14 /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
15 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
16 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>rg.large</code> | <code>rg.xlarge</code> | <code>rg.4xlarge</code> | <code>rg.12xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
17 pub node_type: ::std::option::Option<::std::string::String>,
18 /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
19 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
20 /// <p>Valid Values: Integer greater than <code>0</code>.</p>
21 pub number_of_nodes: ::std::option::Option<i32>,
22 /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
23 /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
24 /// <p>Constraints:</p>
25 /// <ul>
26 /// <li>
27 /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
28 /// <li>
29 /// <p>First character must be a letter</p></li>
30 /// <li>
31 /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
32 /// </ul>
33 pub cluster_security_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
34 /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
35 pub vpc_security_group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
36 /// <p>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 <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
37 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
38 /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
39 /// <p>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.</p>
40 /// </note>
41 /// <p>Default: Uses existing setting.</p>
42 /// <p>Constraints:</p>
43 /// <ul>
44 /// <li>
45 /// <p>Must be between 8 and 64 characters in length.</p></li>
46 /// <li>
47 /// <p>Must contain at least one uppercase letter.</p></li>
48 /// <li>
49 /// <p>Must contain at least one lowercase letter.</p></li>
50 /// <li>
51 /// <p>Must contain one number.</p></li>
52 /// <li>
53 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
54 /// </ul>
55 pub master_user_password: ::std::option::Option<::std::string::String>,
56 /// <p>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 <code>RebootCluster</code>.</p>
57 /// <p>Default: Uses existing setting.</p>
58 /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
59 pub cluster_parameter_group_name: ::std::option::Option<::std::string::String>,
60 /// <p>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 <code>CreateClusterSnapshot</code>.</p>
61 /// <p>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.</p>
62 /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
63 /// <p>Default: Uses existing setting.</p>
64 /// <p>Constraints: Must be a value from 0 to 35.</p>
65 pub automated_snapshot_retention_period: ::std::option::Option<i32>,
66 /// <p>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.</p>
67 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
68 /// <p>The default value is -1.</p>
69 pub manual_snapshot_retention_period: ::std::option::Option<i32>,
70 /// <p>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.</p>
71 /// <p>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.</p>
72 /// <p>Default: Uses existing setting.</p>
73 /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
74 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
75 /// <p>Constraints: Must be at least 30 minutes.</p>
76 pub preferred_maintenance_window: ::std::option::Option<::std::string::String>,
77 /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
78 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
79 /// <p>Example: <code>1.0</code></p>
80 pub cluster_version: ::std::option::Option<::std::string::String>,
81 /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
82 /// <p>Default: <code>false</code></p>
83 pub allow_version_upgrade: ::std::option::Option<bool>,
84 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
85 pub hsm_client_certificate_identifier: ::std::option::Option<::std::string::String>,
86 /// <p>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.</p>
87 pub hsm_configuration_identifier: ::std::option::Option<::std::string::String>,
88 /// <p>The new identifier for the cluster.</p>
89 /// <p>Constraints:</p>
90 /// <ul>
91 /// <li>
92 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
93 /// <li>
94 /// <p>Alphabetic characters must be lowercase.</p></li>
95 /// <li>
96 /// <p>First character must be a letter.</p></li>
97 /// <li>
98 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
99 /// <li>
100 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
101 /// </ul>
102 /// <p>Example: <code>examplecluster</code></p>
103 pub new_cluster_identifier: ::std::option::Option<::std::string::String>,
104 /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
105 /// <p>Default: false</p>
106 pub publicly_accessible: ::std::option::Option<bool>,
107 /// <p>The Elastic IP (EIP) address for the cluster.</p>
108 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
109 pub elastic_ip: ::std::option::Option<::std::string::String>,
110 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
111 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
112 /// <p>Default: false</p>
113 pub enhanced_vpc_routing: ::std::option::Option<bool>,
114 /// <p>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 <code>PendingModifiedValues</code> 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.</p>
115 pub maintenance_track_name: ::std::option::Option<::std::string::String>,
116 /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
117 /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
118 pub encrypted: ::std::option::Option<bool>,
119 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
120 pub kms_key_id: ::std::option::Option<::std::string::String>,
121 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
122 pub availability_zone_relocation: ::std::option::Option<bool>,
123 /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
124 pub availability_zone: ::std::option::Option<::std::string::String>,
125 /// <p>The option to change the port of an Amazon Redshift cluster.</p>
126 /// <p>Valid Values:</p>
127 /// <ul>
128 /// <li>
129 /// <p>For clusters with RG or RA3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with RG or RA3 nodes, it isn't required that you change the port to these ranges.)</p></li>
130 /// <li>
131 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
132 /// </ul>
133 pub port: ::std::option::Option<i32>,
134 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
135 pub manage_master_password: ::std::option::Option<bool>,
136 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
137 pub master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
138 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
139 pub ip_address_type: ::std::option::Option<::std::string::String>,
140 /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
141 pub multi_az: ::std::option::Option<bool>,
142 /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
143 /// <p>Default: false</p>
144 pub extra_compute_for_automatic_optimization: ::std::option::Option<bool>,
145}
146impl ModifyClusterInput {
147 /// <p>The unique identifier of the cluster to be modified.</p>
148 /// <p>Example: <code>examplecluster</code></p>
149 pub fn cluster_identifier(&self) -> ::std::option::Option<&str> {
150 self.cluster_identifier.as_deref()
151 }
152 /// <p>The new cluster type.</p>
153 /// <p>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 <code>DescribeResize</code> to track the progress of the resize request.</p>
154 /// <p>Valid Values: <code> multi-node | single-node </code></p>
155 pub fn cluster_type(&self) -> ::std::option::Option<&str> {
156 self.cluster_type.as_deref()
157 }
158 /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
159 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
160 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>rg.large</code> | <code>rg.xlarge</code> | <code>rg.4xlarge</code> | <code>rg.12xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
161 pub fn node_type(&self) -> ::std::option::Option<&str> {
162 self.node_type.as_deref()
163 }
164 /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
165 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
166 /// <p>Valid Values: Integer greater than <code>0</code>.</p>
167 pub fn number_of_nodes(&self) -> ::std::option::Option<i32> {
168 self.number_of_nodes
169 }
170 /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
171 /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
172 /// <p>Constraints:</p>
173 /// <ul>
174 /// <li>
175 /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
176 /// <li>
177 /// <p>First character must be a letter</p></li>
178 /// <li>
179 /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
180 /// </ul>
181 ///
182 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.cluster_security_groups.is_none()`.
183 pub fn cluster_security_groups(&self) -> &[::std::string::String] {
184 self.cluster_security_groups.as_deref().unwrap_or_default()
185 }
186 /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
187 ///
188 /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.vpc_security_group_ids.is_none()`.
189 pub fn vpc_security_group_ids(&self) -> &[::std::string::String] {
190 self.vpc_security_group_ids.as_deref().unwrap_or_default()
191 }
192 /// <p>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 <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
193 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
194 /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
195 /// <p>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.</p>
196 /// </note>
197 /// <p>Default: Uses existing setting.</p>
198 /// <p>Constraints:</p>
199 /// <ul>
200 /// <li>
201 /// <p>Must be between 8 and 64 characters in length.</p></li>
202 /// <li>
203 /// <p>Must contain at least one uppercase letter.</p></li>
204 /// <li>
205 /// <p>Must contain at least one lowercase letter.</p></li>
206 /// <li>
207 /// <p>Must contain one number.</p></li>
208 /// <li>
209 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
210 /// </ul>
211 pub fn master_user_password(&self) -> ::std::option::Option<&str> {
212 self.master_user_password.as_deref()
213 }
214 /// <p>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 <code>RebootCluster</code>.</p>
215 /// <p>Default: Uses existing setting.</p>
216 /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
217 pub fn cluster_parameter_group_name(&self) -> ::std::option::Option<&str> {
218 self.cluster_parameter_group_name.as_deref()
219 }
220 /// <p>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 <code>CreateClusterSnapshot</code>.</p>
221 /// <p>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.</p>
222 /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
223 /// <p>Default: Uses existing setting.</p>
224 /// <p>Constraints: Must be a value from 0 to 35.</p>
225 pub fn automated_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
226 self.automated_snapshot_retention_period
227 }
228 /// <p>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.</p>
229 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
230 /// <p>The default value is -1.</p>
231 pub fn manual_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
232 self.manual_snapshot_retention_period
233 }
234 /// <p>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.</p>
235 /// <p>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.</p>
236 /// <p>Default: Uses existing setting.</p>
237 /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
238 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
239 /// <p>Constraints: Must be at least 30 minutes.</p>
240 pub fn preferred_maintenance_window(&self) -> ::std::option::Option<&str> {
241 self.preferred_maintenance_window.as_deref()
242 }
243 /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
244 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
245 /// <p>Example: <code>1.0</code></p>
246 pub fn cluster_version(&self) -> ::std::option::Option<&str> {
247 self.cluster_version.as_deref()
248 }
249 /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
250 /// <p>Default: <code>false</code></p>
251 pub fn allow_version_upgrade(&self) -> ::std::option::Option<bool> {
252 self.allow_version_upgrade
253 }
254 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
255 pub fn hsm_client_certificate_identifier(&self) -> ::std::option::Option<&str> {
256 self.hsm_client_certificate_identifier.as_deref()
257 }
258 /// <p>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.</p>
259 pub fn hsm_configuration_identifier(&self) -> ::std::option::Option<&str> {
260 self.hsm_configuration_identifier.as_deref()
261 }
262 /// <p>The new identifier for the cluster.</p>
263 /// <p>Constraints:</p>
264 /// <ul>
265 /// <li>
266 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
267 /// <li>
268 /// <p>Alphabetic characters must be lowercase.</p></li>
269 /// <li>
270 /// <p>First character must be a letter.</p></li>
271 /// <li>
272 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
273 /// <li>
274 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
275 /// </ul>
276 /// <p>Example: <code>examplecluster</code></p>
277 pub fn new_cluster_identifier(&self) -> ::std::option::Option<&str> {
278 self.new_cluster_identifier.as_deref()
279 }
280 /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
281 /// <p>Default: false</p>
282 pub fn publicly_accessible(&self) -> ::std::option::Option<bool> {
283 self.publicly_accessible
284 }
285 /// <p>The Elastic IP (EIP) address for the cluster.</p>
286 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
287 pub fn elastic_ip(&self) -> ::std::option::Option<&str> {
288 self.elastic_ip.as_deref()
289 }
290 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
291 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
292 /// <p>Default: false</p>
293 pub fn enhanced_vpc_routing(&self) -> ::std::option::Option<bool> {
294 self.enhanced_vpc_routing
295 }
296 /// <p>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 <code>PendingModifiedValues</code> 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.</p>
297 pub fn maintenance_track_name(&self) -> ::std::option::Option<&str> {
298 self.maintenance_track_name.as_deref()
299 }
300 /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
301 /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
302 pub fn encrypted(&self) -> ::std::option::Option<bool> {
303 self.encrypted
304 }
305 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
306 pub fn kms_key_id(&self) -> ::std::option::Option<&str> {
307 self.kms_key_id.as_deref()
308 }
309 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
310 pub fn availability_zone_relocation(&self) -> ::std::option::Option<bool> {
311 self.availability_zone_relocation
312 }
313 /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
314 pub fn availability_zone(&self) -> ::std::option::Option<&str> {
315 self.availability_zone.as_deref()
316 }
317 /// <p>The option to change the port of an Amazon Redshift cluster.</p>
318 /// <p>Valid Values:</p>
319 /// <ul>
320 /// <li>
321 /// <p>For clusters with RG or RA3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with RG or RA3 nodes, it isn't required that you change the port to these ranges.)</p></li>
322 /// <li>
323 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
324 /// </ul>
325 pub fn port(&self) -> ::std::option::Option<i32> {
326 self.port
327 }
328 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
329 pub fn manage_master_password(&self) -> ::std::option::Option<bool> {
330 self.manage_master_password
331 }
332 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
333 pub fn master_password_secret_kms_key_id(&self) -> ::std::option::Option<&str> {
334 self.master_password_secret_kms_key_id.as_deref()
335 }
336 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
337 pub fn ip_address_type(&self) -> ::std::option::Option<&str> {
338 self.ip_address_type.as_deref()
339 }
340 /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
341 pub fn multi_az(&self) -> ::std::option::Option<bool> {
342 self.multi_az
343 }
344 /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
345 /// <p>Default: false</p>
346 pub fn extra_compute_for_automatic_optimization(&self) -> ::std::option::Option<bool> {
347 self.extra_compute_for_automatic_optimization
348 }
349}
350impl ::std::fmt::Debug for ModifyClusterInput {
351 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
352 let mut formatter = f.debug_struct("ModifyClusterInput");
353 formatter.field("cluster_identifier", &self.cluster_identifier);
354 formatter.field("cluster_type", &self.cluster_type);
355 formatter.field("node_type", &self.node_type);
356 formatter.field("number_of_nodes", &self.number_of_nodes);
357 formatter.field("cluster_security_groups", &self.cluster_security_groups);
358 formatter.field("vpc_security_group_ids", &self.vpc_security_group_ids);
359 formatter.field("master_user_password", &"*** Sensitive Data Redacted ***");
360 formatter.field("cluster_parameter_group_name", &self.cluster_parameter_group_name);
361 formatter.field("automated_snapshot_retention_period", &self.automated_snapshot_retention_period);
362 formatter.field("manual_snapshot_retention_period", &self.manual_snapshot_retention_period);
363 formatter.field("preferred_maintenance_window", &self.preferred_maintenance_window);
364 formatter.field("cluster_version", &self.cluster_version);
365 formatter.field("allow_version_upgrade", &self.allow_version_upgrade);
366 formatter.field("hsm_client_certificate_identifier", &self.hsm_client_certificate_identifier);
367 formatter.field("hsm_configuration_identifier", &self.hsm_configuration_identifier);
368 formatter.field("new_cluster_identifier", &self.new_cluster_identifier);
369 formatter.field("publicly_accessible", &self.publicly_accessible);
370 formatter.field("elastic_ip", &self.elastic_ip);
371 formatter.field("enhanced_vpc_routing", &self.enhanced_vpc_routing);
372 formatter.field("maintenance_track_name", &self.maintenance_track_name);
373 formatter.field("encrypted", &self.encrypted);
374 formatter.field("kms_key_id", &self.kms_key_id);
375 formatter.field("availability_zone_relocation", &self.availability_zone_relocation);
376 formatter.field("availability_zone", &self.availability_zone);
377 formatter.field("port", &self.port);
378 formatter.field("manage_master_password", &self.manage_master_password);
379 formatter.field("master_password_secret_kms_key_id", &self.master_password_secret_kms_key_id);
380 formatter.field("ip_address_type", &self.ip_address_type);
381 formatter.field("multi_az", &self.multi_az);
382 formatter.field("extra_compute_for_automatic_optimization", &self.extra_compute_for_automatic_optimization);
383 formatter.finish()
384 }
385}
386impl ModifyClusterInput {
387 /// Creates a new builder-style object to manufacture [`ModifyClusterInput`](crate::operation::modify_cluster::ModifyClusterInput).
388 pub fn builder() -> crate::operation::modify_cluster::builders::ModifyClusterInputBuilder {
389 crate::operation::modify_cluster::builders::ModifyClusterInputBuilder::default()
390 }
391}
392
393/// A builder for [`ModifyClusterInput`](crate::operation::modify_cluster::ModifyClusterInput).
394#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
395#[non_exhaustive]
396pub struct ModifyClusterInputBuilder {
397 pub(crate) cluster_identifier: ::std::option::Option<::std::string::String>,
398 pub(crate) cluster_type: ::std::option::Option<::std::string::String>,
399 pub(crate) node_type: ::std::option::Option<::std::string::String>,
400 pub(crate) number_of_nodes: ::std::option::Option<i32>,
401 pub(crate) cluster_security_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
402 pub(crate) vpc_security_group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
403 pub(crate) master_user_password: ::std::option::Option<::std::string::String>,
404 pub(crate) cluster_parameter_group_name: ::std::option::Option<::std::string::String>,
405 pub(crate) automated_snapshot_retention_period: ::std::option::Option<i32>,
406 pub(crate) manual_snapshot_retention_period: ::std::option::Option<i32>,
407 pub(crate) preferred_maintenance_window: ::std::option::Option<::std::string::String>,
408 pub(crate) cluster_version: ::std::option::Option<::std::string::String>,
409 pub(crate) allow_version_upgrade: ::std::option::Option<bool>,
410 pub(crate) hsm_client_certificate_identifier: ::std::option::Option<::std::string::String>,
411 pub(crate) hsm_configuration_identifier: ::std::option::Option<::std::string::String>,
412 pub(crate) new_cluster_identifier: ::std::option::Option<::std::string::String>,
413 pub(crate) publicly_accessible: ::std::option::Option<bool>,
414 pub(crate) elastic_ip: ::std::option::Option<::std::string::String>,
415 pub(crate) enhanced_vpc_routing: ::std::option::Option<bool>,
416 pub(crate) maintenance_track_name: ::std::option::Option<::std::string::String>,
417 pub(crate) encrypted: ::std::option::Option<bool>,
418 pub(crate) kms_key_id: ::std::option::Option<::std::string::String>,
419 pub(crate) availability_zone_relocation: ::std::option::Option<bool>,
420 pub(crate) availability_zone: ::std::option::Option<::std::string::String>,
421 pub(crate) port: ::std::option::Option<i32>,
422 pub(crate) manage_master_password: ::std::option::Option<bool>,
423 pub(crate) master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
424 pub(crate) ip_address_type: ::std::option::Option<::std::string::String>,
425 pub(crate) multi_az: ::std::option::Option<bool>,
426 pub(crate) extra_compute_for_automatic_optimization: ::std::option::Option<bool>,
427}
428impl ModifyClusterInputBuilder {
429 /// <p>The unique identifier of the cluster to be modified.</p>
430 /// <p>Example: <code>examplecluster</code></p>
431 /// This field is required.
432 pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
433 self.cluster_identifier = ::std::option::Option::Some(input.into());
434 self
435 }
436 /// <p>The unique identifier of the cluster to be modified.</p>
437 /// <p>Example: <code>examplecluster</code></p>
438 pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
439 self.cluster_identifier = input;
440 self
441 }
442 /// <p>The unique identifier of the cluster to be modified.</p>
443 /// <p>Example: <code>examplecluster</code></p>
444 pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
445 &self.cluster_identifier
446 }
447 /// <p>The new cluster type.</p>
448 /// <p>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 <code>DescribeResize</code> to track the progress of the resize request.</p>
449 /// <p>Valid Values: <code> multi-node | single-node </code></p>
450 pub fn cluster_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
451 self.cluster_type = ::std::option::Option::Some(input.into());
452 self
453 }
454 /// <p>The new cluster type.</p>
455 /// <p>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 <code>DescribeResize</code> to track the progress of the resize request.</p>
456 /// <p>Valid Values: <code> multi-node | single-node </code></p>
457 pub fn set_cluster_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
458 self.cluster_type = input;
459 self
460 }
461 /// <p>The new cluster type.</p>
462 /// <p>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 <code>DescribeResize</code> to track the progress of the resize request.</p>
463 /// <p>Valid Values: <code> multi-node | single-node </code></p>
464 pub fn get_cluster_type(&self) -> &::std::option::Option<::std::string::String> {
465 &self.cluster_type
466 }
467 /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
468 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
469 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>rg.large</code> | <code>rg.xlarge</code> | <code>rg.4xlarge</code> | <code>rg.12xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
470 pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
471 self.node_type = ::std::option::Option::Some(input.into());
472 self
473 }
474 /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
475 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
476 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>rg.large</code> | <code>rg.xlarge</code> | <code>rg.4xlarge</code> | <code>rg.12xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
477 pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
478 self.node_type = input;
479 self
480 }
481 /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
482 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
483 /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>rg.large</code> | <code>rg.xlarge</code> | <code>rg.4xlarge</code> | <code>rg.12xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
484 pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
485 &self.node_type
486 }
487 /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
488 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
489 /// <p>Valid Values: Integer greater than <code>0</code>.</p>
490 pub fn number_of_nodes(mut self, input: i32) -> Self {
491 self.number_of_nodes = ::std::option::Option::Some(input);
492 self
493 }
494 /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
495 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
496 /// <p>Valid Values: Integer greater than <code>0</code>.</p>
497 pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
498 self.number_of_nodes = input;
499 self
500 }
501 /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
502 /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
503 /// <p>Valid Values: Integer greater than <code>0</code>.</p>
504 pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
505 &self.number_of_nodes
506 }
507 /// Appends an item to `cluster_security_groups`.
508 ///
509 /// To override the contents of this collection use [`set_cluster_security_groups`](Self::set_cluster_security_groups).
510 ///
511 /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
512 /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
513 /// <p>Constraints:</p>
514 /// <ul>
515 /// <li>
516 /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
517 /// <li>
518 /// <p>First character must be a letter</p></li>
519 /// <li>
520 /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
521 /// </ul>
522 pub fn cluster_security_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
523 let mut v = self.cluster_security_groups.unwrap_or_default();
524 v.push(input.into());
525 self.cluster_security_groups = ::std::option::Option::Some(v);
526 self
527 }
528 /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
529 /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
530 /// <p>Constraints:</p>
531 /// <ul>
532 /// <li>
533 /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
534 /// <li>
535 /// <p>First character must be a letter</p></li>
536 /// <li>
537 /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
538 /// </ul>
539 pub fn set_cluster_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
540 self.cluster_security_groups = input;
541 self
542 }
543 /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
544 /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
545 /// <p>Constraints:</p>
546 /// <ul>
547 /// <li>
548 /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
549 /// <li>
550 /// <p>First character must be a letter</p></li>
551 /// <li>
552 /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
553 /// </ul>
554 pub fn get_cluster_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
555 &self.cluster_security_groups
556 }
557 /// Appends an item to `vpc_security_group_ids`.
558 ///
559 /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
560 ///
561 /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
562 pub fn vpc_security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
563 let mut v = self.vpc_security_group_ids.unwrap_or_default();
564 v.push(input.into());
565 self.vpc_security_group_ids = ::std::option::Option::Some(v);
566 self
567 }
568 /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
569 pub fn set_vpc_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
570 self.vpc_security_group_ids = input;
571 self
572 }
573 /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
574 pub fn get_vpc_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
575 &self.vpc_security_group_ids
576 }
577 /// <p>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 <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
578 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
579 /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
580 /// <p>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.</p>
581 /// </note>
582 /// <p>Default: Uses existing setting.</p>
583 /// <p>Constraints:</p>
584 /// <ul>
585 /// <li>
586 /// <p>Must be between 8 and 64 characters in length.</p></li>
587 /// <li>
588 /// <p>Must contain at least one uppercase letter.</p></li>
589 /// <li>
590 /// <p>Must contain at least one lowercase letter.</p></li>
591 /// <li>
592 /// <p>Must contain one number.</p></li>
593 /// <li>
594 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
595 /// </ul>
596 pub fn master_user_password(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
597 self.master_user_password = ::std::option::Option::Some(input.into());
598 self
599 }
600 /// <p>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 <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
601 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
602 /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
603 /// <p>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.</p>
604 /// </note>
605 /// <p>Default: Uses existing setting.</p>
606 /// <p>Constraints:</p>
607 /// <ul>
608 /// <li>
609 /// <p>Must be between 8 and 64 characters in length.</p></li>
610 /// <li>
611 /// <p>Must contain at least one uppercase letter.</p></li>
612 /// <li>
613 /// <p>Must contain at least one lowercase letter.</p></li>
614 /// <li>
615 /// <p>Must contain one number.</p></li>
616 /// <li>
617 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
618 /// </ul>
619 pub fn set_master_user_password(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
620 self.master_user_password = input;
621 self
622 }
623 /// <p>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 <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
624 /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
625 /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
626 /// <p>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.</p>
627 /// </note>
628 /// <p>Default: Uses existing setting.</p>
629 /// <p>Constraints:</p>
630 /// <ul>
631 /// <li>
632 /// <p>Must be between 8 and 64 characters in length.</p></li>
633 /// <li>
634 /// <p>Must contain at least one uppercase letter.</p></li>
635 /// <li>
636 /// <p>Must contain at least one lowercase letter.</p></li>
637 /// <li>
638 /// <p>Must contain one number.</p></li>
639 /// <li>
640 /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
641 /// </ul>
642 pub fn get_master_user_password(&self) -> &::std::option::Option<::std::string::String> {
643 &self.master_user_password
644 }
645 /// <p>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 <code>RebootCluster</code>.</p>
646 /// <p>Default: Uses existing setting.</p>
647 /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
648 pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
649 self.cluster_parameter_group_name = ::std::option::Option::Some(input.into());
650 self
651 }
652 /// <p>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 <code>RebootCluster</code>.</p>
653 /// <p>Default: Uses existing setting.</p>
654 /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
655 pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
656 self.cluster_parameter_group_name = input;
657 self
658 }
659 /// <p>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 <code>RebootCluster</code>.</p>
660 /// <p>Default: Uses existing setting.</p>
661 /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
662 pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
663 &self.cluster_parameter_group_name
664 }
665 /// <p>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 <code>CreateClusterSnapshot</code>.</p>
666 /// <p>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.</p>
667 /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
668 /// <p>Default: Uses existing setting.</p>
669 /// <p>Constraints: Must be a value from 0 to 35.</p>
670 pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
671 self.automated_snapshot_retention_period = ::std::option::Option::Some(input);
672 self
673 }
674 /// <p>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 <code>CreateClusterSnapshot</code>.</p>
675 /// <p>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.</p>
676 /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
677 /// <p>Default: Uses existing setting.</p>
678 /// <p>Constraints: Must be a value from 0 to 35.</p>
679 pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
680 self.automated_snapshot_retention_period = input;
681 self
682 }
683 /// <p>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 <code>CreateClusterSnapshot</code>.</p>
684 /// <p>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.</p>
685 /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
686 /// <p>Default: Uses existing setting.</p>
687 /// <p>Constraints: Must be a value from 0 to 35.</p>
688 pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
689 &self.automated_snapshot_retention_period
690 }
691 /// <p>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.</p>
692 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
693 /// <p>The default value is -1.</p>
694 pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
695 self.manual_snapshot_retention_period = ::std::option::Option::Some(input);
696 self
697 }
698 /// <p>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.</p>
699 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
700 /// <p>The default value is -1.</p>
701 pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
702 self.manual_snapshot_retention_period = input;
703 self
704 }
705 /// <p>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.</p>
706 /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
707 /// <p>The default value is -1.</p>
708 pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
709 &self.manual_snapshot_retention_period
710 }
711 /// <p>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.</p>
712 /// <p>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.</p>
713 /// <p>Default: Uses existing setting.</p>
714 /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
715 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
716 /// <p>Constraints: Must be at least 30 minutes.</p>
717 pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
718 self.preferred_maintenance_window = ::std::option::Option::Some(input.into());
719 self
720 }
721 /// <p>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.</p>
722 /// <p>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.</p>
723 /// <p>Default: Uses existing setting.</p>
724 /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
725 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
726 /// <p>Constraints: Must be at least 30 minutes.</p>
727 pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
728 self.preferred_maintenance_window = input;
729 self
730 }
731 /// <p>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.</p>
732 /// <p>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.</p>
733 /// <p>Default: Uses existing setting.</p>
734 /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
735 /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
736 /// <p>Constraints: Must be at least 30 minutes.</p>
737 pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
738 &self.preferred_maintenance_window
739 }
740 /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
741 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
742 /// <p>Example: <code>1.0</code></p>
743 pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
744 self.cluster_version = ::std::option::Option::Some(input.into());
745 self
746 }
747 /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
748 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
749 /// <p>Example: <code>1.0</code></p>
750 pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
751 self.cluster_version = input;
752 self
753 }
754 /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
755 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
756 /// <p>Example: <code>1.0</code></p>
757 pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
758 &self.cluster_version
759 }
760 /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
761 /// <p>Default: <code>false</code></p>
762 pub fn allow_version_upgrade(mut self, input: bool) -> Self {
763 self.allow_version_upgrade = ::std::option::Option::Some(input);
764 self
765 }
766 /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
767 /// <p>Default: <code>false</code></p>
768 pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
769 self.allow_version_upgrade = input;
770 self
771 }
772 /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
773 /// <p>Default: <code>false</code></p>
774 pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
775 &self.allow_version_upgrade
776 }
777 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
778 pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
779 self.hsm_client_certificate_identifier = ::std::option::Option::Some(input.into());
780 self
781 }
782 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
783 pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
784 self.hsm_client_certificate_identifier = input;
785 self
786 }
787 /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
788 pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
789 &self.hsm_client_certificate_identifier
790 }
791 /// <p>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.</p>
792 pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
793 self.hsm_configuration_identifier = ::std::option::Option::Some(input.into());
794 self
795 }
796 /// <p>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.</p>
797 pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
798 self.hsm_configuration_identifier = input;
799 self
800 }
801 /// <p>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.</p>
802 pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
803 &self.hsm_configuration_identifier
804 }
805 /// <p>The new identifier for the cluster.</p>
806 /// <p>Constraints:</p>
807 /// <ul>
808 /// <li>
809 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
810 /// <li>
811 /// <p>Alphabetic characters must be lowercase.</p></li>
812 /// <li>
813 /// <p>First character must be a letter.</p></li>
814 /// <li>
815 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
816 /// <li>
817 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
818 /// </ul>
819 /// <p>Example: <code>examplecluster</code></p>
820 pub fn new_cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
821 self.new_cluster_identifier = ::std::option::Option::Some(input.into());
822 self
823 }
824 /// <p>The new identifier for the cluster.</p>
825 /// <p>Constraints:</p>
826 /// <ul>
827 /// <li>
828 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
829 /// <li>
830 /// <p>Alphabetic characters must be lowercase.</p></li>
831 /// <li>
832 /// <p>First character must be a letter.</p></li>
833 /// <li>
834 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
835 /// <li>
836 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
837 /// </ul>
838 /// <p>Example: <code>examplecluster</code></p>
839 pub fn set_new_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
840 self.new_cluster_identifier = input;
841 self
842 }
843 /// <p>The new identifier for the cluster.</p>
844 /// <p>Constraints:</p>
845 /// <ul>
846 /// <li>
847 /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
848 /// <li>
849 /// <p>Alphabetic characters must be lowercase.</p></li>
850 /// <li>
851 /// <p>First character must be a letter.</p></li>
852 /// <li>
853 /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
854 /// <li>
855 /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
856 /// </ul>
857 /// <p>Example: <code>examplecluster</code></p>
858 pub fn get_new_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
859 &self.new_cluster_identifier
860 }
861 /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
862 /// <p>Default: false</p>
863 pub fn publicly_accessible(mut self, input: bool) -> Self {
864 self.publicly_accessible = ::std::option::Option::Some(input);
865 self
866 }
867 /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
868 /// <p>Default: false</p>
869 pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
870 self.publicly_accessible = input;
871 self
872 }
873 /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
874 /// <p>Default: false</p>
875 pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
876 &self.publicly_accessible
877 }
878 /// <p>The Elastic IP (EIP) address for the cluster.</p>
879 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
880 pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
881 self.elastic_ip = ::std::option::Option::Some(input.into());
882 self
883 }
884 /// <p>The Elastic IP (EIP) address for the cluster.</p>
885 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
886 pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
887 self.elastic_ip = input;
888 self
889 }
890 /// <p>The Elastic IP (EIP) address for the cluster.</p>
891 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
892 pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
893 &self.elastic_ip
894 }
895 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
896 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
897 /// <p>Default: false</p>
898 pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
899 self.enhanced_vpc_routing = ::std::option::Option::Some(input);
900 self
901 }
902 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
903 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
904 /// <p>Default: false</p>
905 pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
906 self.enhanced_vpc_routing = input;
907 self
908 }
909 /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
910 /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
911 /// <p>Default: false</p>
912 pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
913 &self.enhanced_vpc_routing
914 }
915 /// <p>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 <code>PendingModifiedValues</code> 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.</p>
916 pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
917 self.maintenance_track_name = ::std::option::Option::Some(input.into());
918 self
919 }
920 /// <p>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 <code>PendingModifiedValues</code> 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.</p>
921 pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
922 self.maintenance_track_name = input;
923 self
924 }
925 /// <p>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 <code>PendingModifiedValues</code> 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.</p>
926 pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
927 &self.maintenance_track_name
928 }
929 /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
930 /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
931 pub fn encrypted(mut self, input: bool) -> Self {
932 self.encrypted = ::std::option::Option::Some(input);
933 self
934 }
935 /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
936 /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
937 pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
938 self.encrypted = input;
939 self
940 }
941 /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
942 /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
943 pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
944 &self.encrypted
945 }
946 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
947 pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
948 self.kms_key_id = ::std::option::Option::Some(input.into());
949 self
950 }
951 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
952 pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
953 self.kms_key_id = input;
954 self
955 }
956 /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
957 pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
958 &self.kms_key_id
959 }
960 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
961 pub fn availability_zone_relocation(mut self, input: bool) -> Self {
962 self.availability_zone_relocation = ::std::option::Option::Some(input);
963 self
964 }
965 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
966 pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
967 self.availability_zone_relocation = input;
968 self
969 }
970 /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
971 pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
972 &self.availability_zone_relocation
973 }
974 /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
975 pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
976 self.availability_zone = ::std::option::Option::Some(input.into());
977 self
978 }
979 /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
980 pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
981 self.availability_zone = input;
982 self
983 }
984 /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
985 pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
986 &self.availability_zone
987 }
988 /// <p>The option to change the port of an Amazon Redshift cluster.</p>
989 /// <p>Valid Values:</p>
990 /// <ul>
991 /// <li>
992 /// <p>For clusters with RG or RA3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with RG or RA3 nodes, it isn't required that you change the port to these ranges.)</p></li>
993 /// <li>
994 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
995 /// </ul>
996 pub fn port(mut self, input: i32) -> Self {
997 self.port = ::std::option::Option::Some(input);
998 self
999 }
1000 /// <p>The option to change the port of an Amazon Redshift cluster.</p>
1001 /// <p>Valid Values:</p>
1002 /// <ul>
1003 /// <li>
1004 /// <p>For clusters with RG or RA3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with RG or RA3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1005 /// <li>
1006 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1007 /// </ul>
1008 pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
1009 self.port = input;
1010 self
1011 }
1012 /// <p>The option to change the port of an Amazon Redshift cluster.</p>
1013 /// <p>Valid Values:</p>
1014 /// <ul>
1015 /// <li>
1016 /// <p>For clusters with RG or RA3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with RG or RA3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1017 /// <li>
1018 /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1019 /// </ul>
1020 pub fn get_port(&self) -> &::std::option::Option<i32> {
1021 &self.port
1022 }
1023 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1024 pub fn manage_master_password(mut self, input: bool) -> Self {
1025 self.manage_master_password = ::std::option::Option::Some(input);
1026 self
1027 }
1028 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1029 pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
1030 self.manage_master_password = input;
1031 self
1032 }
1033 /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1034 pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
1035 &self.manage_master_password
1036 }
1037 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1038 pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1039 self.master_password_secret_kms_key_id = ::std::option::Option::Some(input.into());
1040 self
1041 }
1042 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1043 pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1044 self.master_password_secret_kms_key_id = input;
1045 self
1046 }
1047 /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1048 pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1049 &self.master_password_secret_kms_key_id
1050 }
1051 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1052 pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1053 self.ip_address_type = ::std::option::Option::Some(input.into());
1054 self
1055 }
1056 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1057 pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1058 self.ip_address_type = input;
1059 self
1060 }
1061 /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1062 pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
1063 &self.ip_address_type
1064 }
1065 /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
1066 pub fn multi_az(mut self, input: bool) -> Self {
1067 self.multi_az = ::std::option::Option::Some(input);
1068 self
1069 }
1070 /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
1071 pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
1072 self.multi_az = input;
1073 self
1074 }
1075 /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
1076 pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
1077 &self.multi_az
1078 }
1079 /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
1080 /// <p>Default: false</p>
1081 pub fn extra_compute_for_automatic_optimization(mut self, input: bool) -> Self {
1082 self.extra_compute_for_automatic_optimization = ::std::option::Option::Some(input);
1083 self
1084 }
1085 /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
1086 /// <p>Default: false</p>
1087 pub fn set_extra_compute_for_automatic_optimization(mut self, input: ::std::option::Option<bool>) -> Self {
1088 self.extra_compute_for_automatic_optimization = input;
1089 self
1090 }
1091 /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
1092 /// <p>Default: false</p>
1093 pub fn get_extra_compute_for_automatic_optimization(&self) -> &::std::option::Option<bool> {
1094 &self.extra_compute_for_automatic_optimization
1095 }
1096 /// Consumes the builder and constructs a [`ModifyClusterInput`](crate::operation::modify_cluster::ModifyClusterInput).
1097 pub fn build(
1098 self,
1099 ) -> ::std::result::Result<crate::operation::modify_cluster::ModifyClusterInput, ::aws_smithy_types::error::operation::BuildError> {
1100 ::std::result::Result::Ok(crate::operation::modify_cluster::ModifyClusterInput {
1101 cluster_identifier: self.cluster_identifier,
1102 cluster_type: self.cluster_type,
1103 node_type: self.node_type,
1104 number_of_nodes: self.number_of_nodes,
1105 cluster_security_groups: self.cluster_security_groups,
1106 vpc_security_group_ids: self.vpc_security_group_ids,
1107 master_user_password: self.master_user_password,
1108 cluster_parameter_group_name: self.cluster_parameter_group_name,
1109 automated_snapshot_retention_period: self.automated_snapshot_retention_period,
1110 manual_snapshot_retention_period: self.manual_snapshot_retention_period,
1111 preferred_maintenance_window: self.preferred_maintenance_window,
1112 cluster_version: self.cluster_version,
1113 allow_version_upgrade: self.allow_version_upgrade,
1114 hsm_client_certificate_identifier: self.hsm_client_certificate_identifier,
1115 hsm_configuration_identifier: self.hsm_configuration_identifier,
1116 new_cluster_identifier: self.new_cluster_identifier,
1117 publicly_accessible: self.publicly_accessible,
1118 elastic_ip: self.elastic_ip,
1119 enhanced_vpc_routing: self.enhanced_vpc_routing,
1120 maintenance_track_name: self.maintenance_track_name,
1121 encrypted: self.encrypted,
1122 kms_key_id: self.kms_key_id,
1123 availability_zone_relocation: self.availability_zone_relocation,
1124 availability_zone: self.availability_zone,
1125 port: self.port,
1126 manage_master_password: self.manage_master_password,
1127 master_password_secret_kms_key_id: self.master_password_secret_kms_key_id,
1128 ip_address_type: self.ip_address_type,
1129 multi_az: self.multi_az,
1130 extra_compute_for_automatic_optimization: self.extra_compute_for_automatic_optimization,
1131 })
1132 }
1133}
1134impl ::std::fmt::Debug for ModifyClusterInputBuilder {
1135 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1136 let mut formatter = f.debug_struct("ModifyClusterInputBuilder");
1137 formatter.field("cluster_identifier", &self.cluster_identifier);
1138 formatter.field("cluster_type", &self.cluster_type);
1139 formatter.field("node_type", &self.node_type);
1140 formatter.field("number_of_nodes", &self.number_of_nodes);
1141 formatter.field("cluster_security_groups", &self.cluster_security_groups);
1142 formatter.field("vpc_security_group_ids", &self.vpc_security_group_ids);
1143 formatter.field("master_user_password", &"*** Sensitive Data Redacted ***");
1144 formatter.field("cluster_parameter_group_name", &self.cluster_parameter_group_name);
1145 formatter.field("automated_snapshot_retention_period", &self.automated_snapshot_retention_period);
1146 formatter.field("manual_snapshot_retention_period", &self.manual_snapshot_retention_period);
1147 formatter.field("preferred_maintenance_window", &self.preferred_maintenance_window);
1148 formatter.field("cluster_version", &self.cluster_version);
1149 formatter.field("allow_version_upgrade", &self.allow_version_upgrade);
1150 formatter.field("hsm_client_certificate_identifier", &self.hsm_client_certificate_identifier);
1151 formatter.field("hsm_configuration_identifier", &self.hsm_configuration_identifier);
1152 formatter.field("new_cluster_identifier", &self.new_cluster_identifier);
1153 formatter.field("publicly_accessible", &self.publicly_accessible);
1154 formatter.field("elastic_ip", &self.elastic_ip);
1155 formatter.field("enhanced_vpc_routing", &self.enhanced_vpc_routing);
1156 formatter.field("maintenance_track_name", &self.maintenance_track_name);
1157 formatter.field("encrypted", &self.encrypted);
1158 formatter.field("kms_key_id", &self.kms_key_id);
1159 formatter.field("availability_zone_relocation", &self.availability_zone_relocation);
1160 formatter.field("availability_zone", &self.availability_zone);
1161 formatter.field("port", &self.port);
1162 formatter.field("manage_master_password", &self.manage_master_password);
1163 formatter.field("master_password_secret_kms_key_id", &self.master_password_secret_kms_key_id);
1164 formatter.field("ip_address_type", &self.ip_address_type);
1165 formatter.field("multi_az", &self.multi_az);
1166 formatter.field("extra_compute_for_automatic_optimization", &self.extra_compute_for_automatic_optimization);
1167 formatter.finish()
1168 }
1169}