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}