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