aws_sdk_elasticache/operation/modify_replication_group_shard_configuration/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::modify_replication_group_shard_configuration::_modify_replication_group_shard_configuration_output::ModifyReplicationGroupShardConfigurationOutputBuilder;
3
4pub use crate::operation::modify_replication_group_shard_configuration::_modify_replication_group_shard_configuration_input::ModifyReplicationGroupShardConfigurationInputBuilder;
5
6impl crate::operation::modify_replication_group_shard_configuration::builders::ModifyReplicationGroupShardConfigurationInputBuilder {
7 /// Sends a request with this input using the given client.
8 pub async fn send_with(
9 self,
10 client: &crate::Client,
11 ) -> ::std::result::Result<
12 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.modify_replication_group_shard_configuration();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `ModifyReplicationGroupShardConfiguration`.
24///
25/// <p>Modifies a replication group's shards (node groups) by allowing you to add shards, remove shards, or rebalance the keyspaces among existing shards.</p>
26#[derive(::std::clone::Clone, ::std::fmt::Debug)]
27pub struct ModifyReplicationGroupShardConfigurationFluentBuilder {
28 handle: ::std::sync::Arc<crate::client::Handle>,
29 inner: crate::operation::modify_replication_group_shard_configuration::builders::ModifyReplicationGroupShardConfigurationInputBuilder,
30 config_override: ::std::option::Option<crate::config::Builder>,
31}
32impl
33 crate::client::customize::internal::CustomizableSend<
34 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationOutput,
35 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationError,
36 > for ModifyReplicationGroupShardConfigurationFluentBuilder
37{
38 fn send(
39 self,
40 config_override: crate::config::Builder,
41 ) -> crate::client::customize::internal::BoxFuture<
42 crate::client::customize::internal::SendResult<
43 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationOutput,
44 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationError,
45 >,
46 > {
47 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
48 }
49}
50impl ModifyReplicationGroupShardConfigurationFluentBuilder {
51 /// Creates a new `ModifyReplicationGroupShardConfigurationFluentBuilder`.
52 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
53 Self {
54 handle,
55 inner: ::std::default::Default::default(),
56 config_override: ::std::option::Option::None,
57 }
58 }
59 /// Access the ModifyReplicationGroupShardConfiguration as a reference.
60 pub fn as_input(
61 &self,
62 ) -> &crate::operation::modify_replication_group_shard_configuration::builders::ModifyReplicationGroupShardConfigurationInputBuilder {
63 &self.inner
64 }
65 /// Sends the request and returns the response.
66 ///
67 /// If an error occurs, an `SdkError` will be returned with additional details that
68 /// can be matched against.
69 ///
70 /// By default, any retryable failures will be retried twice. Retry behavior
71 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
72 /// set when configuring the client.
73 pub async fn send(
74 self,
75 ) -> ::std::result::Result<
76 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationOutput,
77 ::aws_smithy_runtime_api::client::result::SdkError<
78 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationError,
79 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
80 >,
81 > {
82 let input = self
83 .inner
84 .build()
85 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
86 let runtime_plugins =
87 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfiguration::operation_runtime_plugins(
88 self.handle.runtime_plugins.clone(),
89 &self.handle.conf,
90 self.config_override,
91 );
92 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfiguration::orchestrate(&runtime_plugins, input)
93 .await
94 }
95
96 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
97 pub fn customize(
98 self,
99 ) -> crate::client::customize::CustomizableOperation<
100 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationOutput,
101 crate::operation::modify_replication_group_shard_configuration::ModifyReplicationGroupShardConfigurationError,
102 Self,
103 > {
104 crate::client::customize::CustomizableOperation::new(self)
105 }
106 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
107 self.set_config_override(::std::option::Option::Some(config_override.into()));
108 self
109 }
110
111 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
112 self.config_override = config_override;
113 self
114 }
115 /// <p>The name of the Valkey or Redis OSS (cluster mode enabled) cluster (replication group) on which the shards are to be configured.</p>
116 pub fn replication_group_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
117 self.inner = self.inner.replication_group_id(input.into());
118 self
119 }
120 /// <p>The name of the Valkey or Redis OSS (cluster mode enabled) cluster (replication group) on which the shards are to be configured.</p>
121 pub fn set_replication_group_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
122 self.inner = self.inner.set_replication_group_id(input);
123 self
124 }
125 /// <p>The name of the Valkey or Redis OSS (cluster mode enabled) cluster (replication group) on which the shards are to be configured.</p>
126 pub fn get_replication_group_id(&self) -> &::std::option::Option<::std::string::String> {
127 self.inner.get_replication_group_id()
128 }
129 /// <p>The number of node groups (shards) that results from the modification of the shard configuration.</p>
130 pub fn node_group_count(mut self, input: i32) -> Self {
131 self.inner = self.inner.node_group_count(input);
132 self
133 }
134 /// <p>The number of node groups (shards) that results from the modification of the shard configuration.</p>
135 pub fn set_node_group_count(mut self, input: ::std::option::Option<i32>) -> Self {
136 self.inner = self.inner.set_node_group_count(input);
137 self
138 }
139 /// <p>The number of node groups (shards) that results from the modification of the shard configuration.</p>
140 pub fn get_node_group_count(&self) -> &::std::option::Option<i32> {
141 self.inner.get_node_group_count()
142 }
143 /// <p>Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value for this parameter is <code>true</code>.</p>
144 /// <p>Value: true</p>
145 pub fn apply_immediately(mut self, input: bool) -> Self {
146 self.inner = self.inner.apply_immediately(input);
147 self
148 }
149 /// <p>Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value for this parameter is <code>true</code>.</p>
150 /// <p>Value: true</p>
151 pub fn set_apply_immediately(mut self, input: ::std::option::Option<bool>) -> Self {
152 self.inner = self.inner.set_apply_immediately(input);
153 self
154 }
155 /// <p>Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value for this parameter is <code>true</code>.</p>
156 /// <p>Value: true</p>
157 pub fn get_apply_immediately(&self) -> &::std::option::Option<bool> {
158 self.inner.get_apply_immediately()
159 }
160 ///
161 /// Appends an item to `ReshardingConfiguration`.
162 ///
163 /// To override the contents of this collection use [`set_resharding_configuration`](Self::set_resharding_configuration).
164 ///
165 /// <p>Specifies the preferred availability zones for each node group in the cluster. If the value of <code>NodeGroupCount</code> is greater than the current number of node groups (shards), you can use this parameter to specify the preferred availability zones of the cluster's shards. If you omit this parameter ElastiCache selects availability zones for you.</p>
166 /// <p>You can specify this parameter only if the value of <code>NodeGroupCount</code> is greater than the current number of node groups (shards).</p>
167 pub fn resharding_configuration(mut self, input: crate::types::ReshardingConfiguration) -> Self {
168 self.inner = self.inner.resharding_configuration(input);
169 self
170 }
171 /// <p>Specifies the preferred availability zones for each node group in the cluster. If the value of <code>NodeGroupCount</code> is greater than the current number of node groups (shards), you can use this parameter to specify the preferred availability zones of the cluster's shards. If you omit this parameter ElastiCache selects availability zones for you.</p>
172 /// <p>You can specify this parameter only if the value of <code>NodeGroupCount</code> is greater than the current number of node groups (shards).</p>
173 pub fn set_resharding_configuration(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ReshardingConfiguration>>) -> Self {
174 self.inner = self.inner.set_resharding_configuration(input);
175 self
176 }
177 /// <p>Specifies the preferred availability zones for each node group in the cluster. If the value of <code>NodeGroupCount</code> is greater than the current number of node groups (shards), you can use this parameter to specify the preferred availability zones of the cluster's shards. If you omit this parameter ElastiCache selects availability zones for you.</p>
178 /// <p>You can specify this parameter only if the value of <code>NodeGroupCount</code> is greater than the current number of node groups (shards).</p>
179 pub fn get_resharding_configuration(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ReshardingConfiguration>> {
180 self.inner.get_resharding_configuration()
181 }
182 ///
183 /// Appends an item to `NodeGroupsToRemove`.
184 ///
185 /// To override the contents of this collection use [`set_node_groups_to_remove`](Self::set_node_groups_to_remove).
186 ///
187 /// <p>If the value of <code>NodeGroupCount</code> is less than the current number of node groups (shards), then either <code>NodeGroupsToRemove</code> or <code>NodeGroupsToRetain</code> is required. <code>NodeGroupsToRemove</code> is a list of <code>NodeGroupId</code>s to remove from the cluster.</p>
188 /// <p>ElastiCache will attempt to remove all node groups listed by <code>NodeGroupsToRemove</code> from the cluster.</p>
189 pub fn node_groups_to_remove(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
190 self.inner = self.inner.node_groups_to_remove(input.into());
191 self
192 }
193 /// <p>If the value of <code>NodeGroupCount</code> is less than the current number of node groups (shards), then either <code>NodeGroupsToRemove</code> or <code>NodeGroupsToRetain</code> is required. <code>NodeGroupsToRemove</code> is a list of <code>NodeGroupId</code>s to remove from the cluster.</p>
194 /// <p>ElastiCache will attempt to remove all node groups listed by <code>NodeGroupsToRemove</code> from the cluster.</p>
195 pub fn set_node_groups_to_remove(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
196 self.inner = self.inner.set_node_groups_to_remove(input);
197 self
198 }
199 /// <p>If the value of <code>NodeGroupCount</code> is less than the current number of node groups (shards), then either <code>NodeGroupsToRemove</code> or <code>NodeGroupsToRetain</code> is required. <code>NodeGroupsToRemove</code> is a list of <code>NodeGroupId</code>s to remove from the cluster.</p>
200 /// <p>ElastiCache will attempt to remove all node groups listed by <code>NodeGroupsToRemove</code> from the cluster.</p>
201 pub fn get_node_groups_to_remove(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
202 self.inner.get_node_groups_to_remove()
203 }
204 ///
205 /// Appends an item to `NodeGroupsToRetain`.
206 ///
207 /// To override the contents of this collection use [`set_node_groups_to_retain`](Self::set_node_groups_to_retain).
208 ///
209 /// <p>If the value of <code>NodeGroupCount</code> is less than the current number of node groups (shards), then either <code>NodeGroupsToRemove</code> or <code>NodeGroupsToRetain</code> is required. <code>NodeGroupsToRetain</code> is a list of <code>NodeGroupId</code>s to retain in the cluster.</p>
210 /// <p>ElastiCache will attempt to remove all node groups except those listed by <code>NodeGroupsToRetain</code> from the cluster.</p>
211 pub fn node_groups_to_retain(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
212 self.inner = self.inner.node_groups_to_retain(input.into());
213 self
214 }
215 /// <p>If the value of <code>NodeGroupCount</code> is less than the current number of node groups (shards), then either <code>NodeGroupsToRemove</code> or <code>NodeGroupsToRetain</code> is required. <code>NodeGroupsToRetain</code> is a list of <code>NodeGroupId</code>s to retain in the cluster.</p>
216 /// <p>ElastiCache will attempt to remove all node groups except those listed by <code>NodeGroupsToRetain</code> from the cluster.</p>
217 pub fn set_node_groups_to_retain(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
218 self.inner = self.inner.set_node_groups_to_retain(input);
219 self
220 }
221 /// <p>If the value of <code>NodeGroupCount</code> is less than the current number of node groups (shards), then either <code>NodeGroupsToRemove</code> or <code>NodeGroupsToRetain</code> is required. <code>NodeGroupsToRetain</code> is a list of <code>NodeGroupId</code>s to retain in the cluster.</p>
222 /// <p>ElastiCache will attempt to remove all node groups except those listed by <code>NodeGroupsToRetain</code> from the cluster.</p>
223 pub fn get_node_groups_to_retain(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
224 self.inner.get_node_groups_to_retain()
225 }
226}