aws_sdk_appconfig/operation/create_extension/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_extension::_create_extension_output::CreateExtensionOutputBuilder;
3
4pub use crate::operation::create_extension::_create_extension_input::CreateExtensionInputBuilder;
5
6impl crate::operation::create_extension::builders::CreateExtensionInputBuilder {
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::create_extension::CreateExtensionOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_extension::CreateExtensionError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_extension();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateExtension`.
24///
25/// <p>Creates an AppConfig extension. An extension augments your ability to inject logic or behavior at different points during the AppConfig workflow of creating or deploying a configuration.</p>
26/// <p>You can create your own extensions or use the Amazon Web Services authored extensions provided by AppConfig. For an AppConfig extension that uses Lambda, you must create a Lambda function to perform any computation and processing defined in the extension. If you plan to create custom versions of the Amazon Web Services authored notification extensions, you only need to specify an Amazon Resource Name (ARN) in the <code>Uri</code> field for the new extension version.</p>
27/// <ul>
28/// <li>
29/// <p>For a custom EventBridge notification extension, enter the ARN of the EventBridge default events in the <code>Uri</code> field.</p></li>
30/// <li>
31/// <p>For a custom Amazon SNS notification extension, enter the ARN of an Amazon SNS topic in the <code>Uri</code> field.</p></li>
32/// <li>
33/// <p>For a custom Amazon SQS notification extension, enter the ARN of an Amazon SQS message queue in the <code>Uri</code> field.</p></li>
34/// </ul>
35/// <p>For more information about extensions, see <a href="https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions.html">Extending workflows</a> in the <i>AppConfig User Guide</i>.</p>
36#[derive(::std::clone::Clone, ::std::fmt::Debug)]
37pub struct CreateExtensionFluentBuilder {
38    handle: ::std::sync::Arc<crate::client::Handle>,
39    inner: crate::operation::create_extension::builders::CreateExtensionInputBuilder,
40    config_override: ::std::option::Option<crate::config::Builder>,
41}
42impl
43    crate::client::customize::internal::CustomizableSend<
44        crate::operation::create_extension::CreateExtensionOutput,
45        crate::operation::create_extension::CreateExtensionError,
46    > for CreateExtensionFluentBuilder
47{
48    fn send(
49        self,
50        config_override: crate::config::Builder,
51    ) -> crate::client::customize::internal::BoxFuture<
52        crate::client::customize::internal::SendResult<
53            crate::operation::create_extension::CreateExtensionOutput,
54            crate::operation::create_extension::CreateExtensionError,
55        >,
56    > {
57        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
58    }
59}
60impl CreateExtensionFluentBuilder {
61    /// Creates a new `CreateExtensionFluentBuilder`.
62    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
63        Self {
64            handle,
65            inner: ::std::default::Default::default(),
66            config_override: ::std::option::Option::None,
67        }
68    }
69    /// Access the CreateExtension as a reference.
70    pub fn as_input(&self) -> &crate::operation::create_extension::builders::CreateExtensionInputBuilder {
71        &self.inner
72    }
73    /// Sends the request and returns the response.
74    ///
75    /// If an error occurs, an `SdkError` will be returned with additional details that
76    /// can be matched against.
77    ///
78    /// By default, any retryable failures will be retried twice. Retry behavior
79    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
80    /// set when configuring the client.
81    pub async fn send(
82        self,
83    ) -> ::std::result::Result<
84        crate::operation::create_extension::CreateExtensionOutput,
85        ::aws_smithy_runtime_api::client::result::SdkError<
86            crate::operation::create_extension::CreateExtensionError,
87            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
88        >,
89    > {
90        let input = self
91            .inner
92            .build()
93            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
94        let runtime_plugins = crate::operation::create_extension::CreateExtension::operation_runtime_plugins(
95            self.handle.runtime_plugins.clone(),
96            &self.handle.conf,
97            self.config_override,
98        );
99        crate::operation::create_extension::CreateExtension::orchestrate(&runtime_plugins, input).await
100    }
101
102    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
103    pub fn customize(
104        self,
105    ) -> crate::client::customize::CustomizableOperation<
106        crate::operation::create_extension::CreateExtensionOutput,
107        crate::operation::create_extension::CreateExtensionError,
108        Self,
109    > {
110        crate::client::customize::CustomizableOperation::new(self)
111    }
112    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
113        self.set_config_override(::std::option::Option::Some(config_override.into()));
114        self
115    }
116
117    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
118        self.config_override = config_override;
119        self
120    }
121    /// <p>A name for the extension. Each extension name in your account must be unique. Extension versions use the same name.</p>
122    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
123        self.inner = self.inner.name(input.into());
124        self
125    }
126    /// <p>A name for the extension. Each extension name in your account must be unique. Extension versions use the same name.</p>
127    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
128        self.inner = self.inner.set_name(input);
129        self
130    }
131    /// <p>A name for the extension. Each extension name in your account must be unique. Extension versions use the same name.</p>
132    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
133        self.inner.get_name()
134    }
135    /// <p>Information about the extension.</p>
136    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
137        self.inner = self.inner.description(input.into());
138        self
139    }
140    /// <p>Information about the extension.</p>
141    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
142        self.inner = self.inner.set_description(input);
143        self
144    }
145    /// <p>Information about the extension.</p>
146    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
147        self.inner.get_description()
148    }
149    ///
150    /// Adds a key-value pair to `Actions`.
151    ///
152    /// To override the contents of this collection use [`set_actions`](Self::set_actions).
153    ///
154    /// <p>The actions defined in the extension.</p>
155    pub fn actions(mut self, k: crate::types::ActionPoint, v: ::std::vec::Vec<crate::types::Action>) -> Self {
156        self.inner = self.inner.actions(k, v);
157        self
158    }
159    /// <p>The actions defined in the extension.</p>
160    pub fn set_actions(
161        mut self,
162        input: ::std::option::Option<::std::collections::HashMap<crate::types::ActionPoint, ::std::vec::Vec<crate::types::Action>>>,
163    ) -> Self {
164        self.inner = self.inner.set_actions(input);
165        self
166    }
167    /// <p>The actions defined in the extension.</p>
168    pub fn get_actions(
169        &self,
170    ) -> &::std::option::Option<::std::collections::HashMap<crate::types::ActionPoint, ::std::vec::Vec<crate::types::Action>>> {
171        self.inner.get_actions()
172    }
173    ///
174    /// Adds a key-value pair to `Parameters`.
175    ///
176    /// To override the contents of this collection use [`set_parameters`](Self::set_parameters).
177    ///
178    /// <p>The parameters accepted by the extension. You specify parameter values when you associate the extension to an AppConfig resource by using the <code>CreateExtensionAssociation</code> API action. For Lambda extension actions, these parameters are included in the Lambda request object.</p>
179    pub fn parameters(mut self, k: impl ::std::convert::Into<::std::string::String>, v: crate::types::Parameter) -> Self {
180        self.inner = self.inner.parameters(k.into(), v);
181        self
182    }
183    /// <p>The parameters accepted by the extension. You specify parameter values when you associate the extension to an AppConfig resource by using the <code>CreateExtensionAssociation</code> API action. For Lambda extension actions, these parameters are included in the Lambda request object.</p>
184    pub fn set_parameters(
185        mut self,
186        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::Parameter>>,
187    ) -> Self {
188        self.inner = self.inner.set_parameters(input);
189        self
190    }
191    /// <p>The parameters accepted by the extension. You specify parameter values when you associate the extension to an AppConfig resource by using the <code>CreateExtensionAssociation</code> API action. For Lambda extension actions, these parameters are included in the Lambda request object.</p>
192    pub fn get_parameters(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::Parameter>> {
193        self.inner.get_parameters()
194    }
195    ///
196    /// Adds a key-value pair to `Tags`.
197    ///
198    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
199    ///
200    /// <p>Adds one or more tags for the specified extension. Tags are metadata that help you categorize resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define.</p>
201    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
202        self.inner = self.inner.tags(k.into(), v.into());
203        self
204    }
205    /// <p>Adds one or more tags for the specified extension. Tags are metadata that help you categorize resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define.</p>
206    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
207        self.inner = self.inner.set_tags(input);
208        self
209    }
210    /// <p>Adds one or more tags for the specified extension. Tags are metadata that help you categorize resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define.</p>
211    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
212        self.inner.get_tags()
213    }
214    /// <p>You can omit this field when you create an extension. When you create a new version, specify the most recent current version number. For example, you create version 3, enter 2 for this field.</p>
215    pub fn latest_version_number(mut self, input: i32) -> Self {
216        self.inner = self.inner.latest_version_number(input);
217        self
218    }
219    /// <p>You can omit this field when you create an extension. When you create a new version, specify the most recent current version number. For example, you create version 3, enter 2 for this field.</p>
220    pub fn set_latest_version_number(mut self, input: ::std::option::Option<i32>) -> Self {
221        self.inner = self.inner.set_latest_version_number(input);
222        self
223    }
224    /// <p>You can omit this field when you create an extension. When you create a new version, specify the most recent current version number. For example, you create version 3, enter 2 for this field.</p>
225    pub fn get_latest_version_number(&self) -> &::std::option::Option<i32> {
226        self.inner.get_latest_version_number()
227    }
228}