aws_sdk_emrserverless/operation/create_application/
_create_application_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateApplicationInput {
6    /// <p>The name of the application.</p>
7    pub name: ::std::option::Option<::std::string::String>,
8    /// <p>The Amazon EMR release associated with the application.</p>
9    pub release_label: ::std::option::Option<::std::string::String>,
10    /// <p>The type of application you want to start, such as Spark or Hive.</p>
11    pub r#type: ::std::option::Option<::std::string::String>,
12    /// <p>The client idempotency token of the application to create. Its value must be unique for each request.</p>
13    pub client_token: ::std::option::Option<::std::string::String>,
14    /// <p>The capacity to initialize when the application is created.</p>
15    pub initial_capacity: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::InitialCapacityConfig>>,
16    /// <p>The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.</p>
17    pub maximum_capacity: ::std::option::Option<crate::types::MaximumAllowedResources>,
18    /// <p>The tags assigned to the application.</p>
19    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
20    /// <p>The configuration for an application to automatically start on job submission.</p>
21    pub auto_start_configuration: ::std::option::Option<crate::types::AutoStartConfig>,
22    /// <p>The configuration for an application to automatically stop after a certain amount of time being idle.</p>
23    pub auto_stop_configuration: ::std::option::Option<crate::types::AutoStopConfig>,
24    /// <p>The network configuration for customer VPC connectivity.</p>
25    pub network_configuration: ::std::option::Option<crate::types::NetworkConfiguration>,
26    /// <p>The CPU architecture of an application.</p>
27    pub architecture: ::std::option::Option<crate::types::Architecture>,
28    /// <p>The image configuration for all worker types. You can either set this parameter or <code>imageConfiguration</code> for each worker type in <code>workerTypeSpecifications</code>.</p>
29    pub image_configuration: ::std::option::Option<crate::types::ImageConfigurationInput>,
30    /// <p>The key-value pairs that specify worker type to <code>WorkerTypeSpecificationInput</code>. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include <code>Driver</code> and <code>Executor</code> for Spark applications and <code>HiveDriver</code> and <code>TezTask</code> for Hive applications. You can either set image details in this parameter for each worker type, or in <code>imageConfiguration</code> for all worker types.</p>
31    pub worker_type_specifications:
32        ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::WorkerTypeSpecificationInput>>,
33    /// <p>The <a href="https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html">Configuration</a> specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.</p>
34    pub runtime_configuration: ::std::option::Option<::std::vec::Vec<crate::types::Configuration>>,
35    /// <p>The configuration setting for monitoring.</p>
36    pub monitoring_configuration: ::std::option::Option<crate::types::MonitoringConfiguration>,
37    /// <p>The interactive configuration object that enables the interactive use cases to use when running an application.</p>
38    pub interactive_configuration: ::std::option::Option<crate::types::InteractiveConfiguration>,
39    /// <p>The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.</p>
40    pub scheduler_configuration: ::std::option::Option<crate::types::SchedulerConfiguration>,
41    /// <p>The IAM Identity Center Configuration accepts the Identity Center instance parameter required to enable trusted identity propagation. This configuration allows identity propagation between integrated services and the Identity Center instance.</p>
42    pub identity_center_configuration: ::std::option::Option<crate::types::IdentityCenterConfigurationInput>,
43    /// <p>The configuration object that enables job level cost allocation.</p>
44    pub job_level_cost_allocation_configuration: ::std::option::Option<crate::types::JobLevelCostAllocationConfiguration>,
45}
46impl CreateApplicationInput {
47    /// <p>The name of the application.</p>
48    pub fn name(&self) -> ::std::option::Option<&str> {
49        self.name.as_deref()
50    }
51    /// <p>The Amazon EMR release associated with the application.</p>
52    pub fn release_label(&self) -> ::std::option::Option<&str> {
53        self.release_label.as_deref()
54    }
55    /// <p>The type of application you want to start, such as Spark or Hive.</p>
56    pub fn r#type(&self) -> ::std::option::Option<&str> {
57        self.r#type.as_deref()
58    }
59    /// <p>The client idempotency token of the application to create. Its value must be unique for each request.</p>
60    pub fn client_token(&self) -> ::std::option::Option<&str> {
61        self.client_token.as_deref()
62    }
63    /// <p>The capacity to initialize when the application is created.</p>
64    pub fn initial_capacity(
65        &self,
66    ) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, crate::types::InitialCapacityConfig>> {
67        self.initial_capacity.as_ref()
68    }
69    /// <p>The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.</p>
70    pub fn maximum_capacity(&self) -> ::std::option::Option<&crate::types::MaximumAllowedResources> {
71        self.maximum_capacity.as_ref()
72    }
73    /// <p>The tags assigned to the application.</p>
74    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
75        self.tags.as_ref()
76    }
77    /// <p>The configuration for an application to automatically start on job submission.</p>
78    pub fn auto_start_configuration(&self) -> ::std::option::Option<&crate::types::AutoStartConfig> {
79        self.auto_start_configuration.as_ref()
80    }
81    /// <p>The configuration for an application to automatically stop after a certain amount of time being idle.</p>
82    pub fn auto_stop_configuration(&self) -> ::std::option::Option<&crate::types::AutoStopConfig> {
83        self.auto_stop_configuration.as_ref()
84    }
85    /// <p>The network configuration for customer VPC connectivity.</p>
86    pub fn network_configuration(&self) -> ::std::option::Option<&crate::types::NetworkConfiguration> {
87        self.network_configuration.as_ref()
88    }
89    /// <p>The CPU architecture of an application.</p>
90    pub fn architecture(&self) -> ::std::option::Option<&crate::types::Architecture> {
91        self.architecture.as_ref()
92    }
93    /// <p>The image configuration for all worker types. You can either set this parameter or <code>imageConfiguration</code> for each worker type in <code>workerTypeSpecifications</code>.</p>
94    pub fn image_configuration(&self) -> ::std::option::Option<&crate::types::ImageConfigurationInput> {
95        self.image_configuration.as_ref()
96    }
97    /// <p>The key-value pairs that specify worker type to <code>WorkerTypeSpecificationInput</code>. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include <code>Driver</code> and <code>Executor</code> for Spark applications and <code>HiveDriver</code> and <code>TezTask</code> for Hive applications. You can either set image details in this parameter for each worker type, or in <code>imageConfiguration</code> for all worker types.</p>
98    pub fn worker_type_specifications(
99        &self,
100    ) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, crate::types::WorkerTypeSpecificationInput>> {
101        self.worker_type_specifications.as_ref()
102    }
103    /// <p>The <a href="https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html">Configuration</a> specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.</p>
104    ///
105    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.runtime_configuration.is_none()`.
106    pub fn runtime_configuration(&self) -> &[crate::types::Configuration] {
107        self.runtime_configuration.as_deref().unwrap_or_default()
108    }
109    /// <p>The configuration setting for monitoring.</p>
110    pub fn monitoring_configuration(&self) -> ::std::option::Option<&crate::types::MonitoringConfiguration> {
111        self.monitoring_configuration.as_ref()
112    }
113    /// <p>The interactive configuration object that enables the interactive use cases to use when running an application.</p>
114    pub fn interactive_configuration(&self) -> ::std::option::Option<&crate::types::InteractiveConfiguration> {
115        self.interactive_configuration.as_ref()
116    }
117    /// <p>The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.</p>
118    pub fn scheduler_configuration(&self) -> ::std::option::Option<&crate::types::SchedulerConfiguration> {
119        self.scheduler_configuration.as_ref()
120    }
121    /// <p>The IAM Identity Center Configuration accepts the Identity Center instance parameter required to enable trusted identity propagation. This configuration allows identity propagation between integrated services and the Identity Center instance.</p>
122    pub fn identity_center_configuration(&self) -> ::std::option::Option<&crate::types::IdentityCenterConfigurationInput> {
123        self.identity_center_configuration.as_ref()
124    }
125    /// <p>The configuration object that enables job level cost allocation.</p>
126    pub fn job_level_cost_allocation_configuration(&self) -> ::std::option::Option<&crate::types::JobLevelCostAllocationConfiguration> {
127        self.job_level_cost_allocation_configuration.as_ref()
128    }
129}
130impl CreateApplicationInput {
131    /// Creates a new builder-style object to manufacture [`CreateApplicationInput`](crate::operation::create_application::CreateApplicationInput).
132    pub fn builder() -> crate::operation::create_application::builders::CreateApplicationInputBuilder {
133        crate::operation::create_application::builders::CreateApplicationInputBuilder::default()
134    }
135}
136
137/// A builder for [`CreateApplicationInput`](crate::operation::create_application::CreateApplicationInput).
138#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
139#[non_exhaustive]
140pub struct CreateApplicationInputBuilder {
141    pub(crate) name: ::std::option::Option<::std::string::String>,
142    pub(crate) release_label: ::std::option::Option<::std::string::String>,
143    pub(crate) r#type: ::std::option::Option<::std::string::String>,
144    pub(crate) client_token: ::std::option::Option<::std::string::String>,
145    pub(crate) initial_capacity: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::InitialCapacityConfig>>,
146    pub(crate) maximum_capacity: ::std::option::Option<crate::types::MaximumAllowedResources>,
147    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
148    pub(crate) auto_start_configuration: ::std::option::Option<crate::types::AutoStartConfig>,
149    pub(crate) auto_stop_configuration: ::std::option::Option<crate::types::AutoStopConfig>,
150    pub(crate) network_configuration: ::std::option::Option<crate::types::NetworkConfiguration>,
151    pub(crate) architecture: ::std::option::Option<crate::types::Architecture>,
152    pub(crate) image_configuration: ::std::option::Option<crate::types::ImageConfigurationInput>,
153    pub(crate) worker_type_specifications:
154        ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::WorkerTypeSpecificationInput>>,
155    pub(crate) runtime_configuration: ::std::option::Option<::std::vec::Vec<crate::types::Configuration>>,
156    pub(crate) monitoring_configuration: ::std::option::Option<crate::types::MonitoringConfiguration>,
157    pub(crate) interactive_configuration: ::std::option::Option<crate::types::InteractiveConfiguration>,
158    pub(crate) scheduler_configuration: ::std::option::Option<crate::types::SchedulerConfiguration>,
159    pub(crate) identity_center_configuration: ::std::option::Option<crate::types::IdentityCenterConfigurationInput>,
160    pub(crate) job_level_cost_allocation_configuration: ::std::option::Option<crate::types::JobLevelCostAllocationConfiguration>,
161}
162impl CreateApplicationInputBuilder {
163    /// <p>The name of the application.</p>
164    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
165        self.name = ::std::option::Option::Some(input.into());
166        self
167    }
168    /// <p>The name of the application.</p>
169    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
170        self.name = input;
171        self
172    }
173    /// <p>The name of the application.</p>
174    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
175        &self.name
176    }
177    /// <p>The Amazon EMR release associated with the application.</p>
178    /// This field is required.
179    pub fn release_label(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
180        self.release_label = ::std::option::Option::Some(input.into());
181        self
182    }
183    /// <p>The Amazon EMR release associated with the application.</p>
184    pub fn set_release_label(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
185        self.release_label = input;
186        self
187    }
188    /// <p>The Amazon EMR release associated with the application.</p>
189    pub fn get_release_label(&self) -> &::std::option::Option<::std::string::String> {
190        &self.release_label
191    }
192    /// <p>The type of application you want to start, such as Spark or Hive.</p>
193    /// This field is required.
194    pub fn r#type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
195        self.r#type = ::std::option::Option::Some(input.into());
196        self
197    }
198    /// <p>The type of application you want to start, such as Spark or Hive.</p>
199    pub fn set_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
200        self.r#type = input;
201        self
202    }
203    /// <p>The type of application you want to start, such as Spark or Hive.</p>
204    pub fn get_type(&self) -> &::std::option::Option<::std::string::String> {
205        &self.r#type
206    }
207    /// <p>The client idempotency token of the application to create. Its value must be unique for each request.</p>
208    /// This field is required.
209    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
210        self.client_token = ::std::option::Option::Some(input.into());
211        self
212    }
213    /// <p>The client idempotency token of the application to create. Its value must be unique for each request.</p>
214    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
215        self.client_token = input;
216        self
217    }
218    /// <p>The client idempotency token of the application to create. Its value must be unique for each request.</p>
219    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
220        &self.client_token
221    }
222    /// Adds a key-value pair to `initial_capacity`.
223    ///
224    /// To override the contents of this collection use [`set_initial_capacity`](Self::set_initial_capacity).
225    ///
226    /// <p>The capacity to initialize when the application is created.</p>
227    pub fn initial_capacity(mut self, k: impl ::std::convert::Into<::std::string::String>, v: crate::types::InitialCapacityConfig) -> Self {
228        let mut hash_map = self.initial_capacity.unwrap_or_default();
229        hash_map.insert(k.into(), v);
230        self.initial_capacity = ::std::option::Option::Some(hash_map);
231        self
232    }
233    /// <p>The capacity to initialize when the application is created.</p>
234    pub fn set_initial_capacity(
235        mut self,
236        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::InitialCapacityConfig>>,
237    ) -> Self {
238        self.initial_capacity = input;
239        self
240    }
241    /// <p>The capacity to initialize when the application is created.</p>
242    pub fn get_initial_capacity(
243        &self,
244    ) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::InitialCapacityConfig>> {
245        &self.initial_capacity
246    }
247    /// <p>The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.</p>
248    pub fn maximum_capacity(mut self, input: crate::types::MaximumAllowedResources) -> Self {
249        self.maximum_capacity = ::std::option::Option::Some(input);
250        self
251    }
252    /// <p>The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.</p>
253    pub fn set_maximum_capacity(mut self, input: ::std::option::Option<crate::types::MaximumAllowedResources>) -> Self {
254        self.maximum_capacity = input;
255        self
256    }
257    /// <p>The maximum capacity to allocate when the application is created. This is cumulative across all workers at any given point in time, not just when an application is created. No new resources will be created once any one of the defined limits is hit.</p>
258    pub fn get_maximum_capacity(&self) -> &::std::option::Option<crate::types::MaximumAllowedResources> {
259        &self.maximum_capacity
260    }
261    /// Adds a key-value pair to `tags`.
262    ///
263    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
264    ///
265    /// <p>The tags assigned to the application.</p>
266    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
267        let mut hash_map = self.tags.unwrap_or_default();
268        hash_map.insert(k.into(), v.into());
269        self.tags = ::std::option::Option::Some(hash_map);
270        self
271    }
272    /// <p>The tags assigned to the application.</p>
273    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
274        self.tags = input;
275        self
276    }
277    /// <p>The tags assigned to the application.</p>
278    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
279        &self.tags
280    }
281    /// <p>The configuration for an application to automatically start on job submission.</p>
282    pub fn auto_start_configuration(mut self, input: crate::types::AutoStartConfig) -> Self {
283        self.auto_start_configuration = ::std::option::Option::Some(input);
284        self
285    }
286    /// <p>The configuration for an application to automatically start on job submission.</p>
287    pub fn set_auto_start_configuration(mut self, input: ::std::option::Option<crate::types::AutoStartConfig>) -> Self {
288        self.auto_start_configuration = input;
289        self
290    }
291    /// <p>The configuration for an application to automatically start on job submission.</p>
292    pub fn get_auto_start_configuration(&self) -> &::std::option::Option<crate::types::AutoStartConfig> {
293        &self.auto_start_configuration
294    }
295    /// <p>The configuration for an application to automatically stop after a certain amount of time being idle.</p>
296    pub fn auto_stop_configuration(mut self, input: crate::types::AutoStopConfig) -> Self {
297        self.auto_stop_configuration = ::std::option::Option::Some(input);
298        self
299    }
300    /// <p>The configuration for an application to automatically stop after a certain amount of time being idle.</p>
301    pub fn set_auto_stop_configuration(mut self, input: ::std::option::Option<crate::types::AutoStopConfig>) -> Self {
302        self.auto_stop_configuration = input;
303        self
304    }
305    /// <p>The configuration for an application to automatically stop after a certain amount of time being idle.</p>
306    pub fn get_auto_stop_configuration(&self) -> &::std::option::Option<crate::types::AutoStopConfig> {
307        &self.auto_stop_configuration
308    }
309    /// <p>The network configuration for customer VPC connectivity.</p>
310    pub fn network_configuration(mut self, input: crate::types::NetworkConfiguration) -> Self {
311        self.network_configuration = ::std::option::Option::Some(input);
312        self
313    }
314    /// <p>The network configuration for customer VPC connectivity.</p>
315    pub fn set_network_configuration(mut self, input: ::std::option::Option<crate::types::NetworkConfiguration>) -> Self {
316        self.network_configuration = input;
317        self
318    }
319    /// <p>The network configuration for customer VPC connectivity.</p>
320    pub fn get_network_configuration(&self) -> &::std::option::Option<crate::types::NetworkConfiguration> {
321        &self.network_configuration
322    }
323    /// <p>The CPU architecture of an application.</p>
324    pub fn architecture(mut self, input: crate::types::Architecture) -> Self {
325        self.architecture = ::std::option::Option::Some(input);
326        self
327    }
328    /// <p>The CPU architecture of an application.</p>
329    pub fn set_architecture(mut self, input: ::std::option::Option<crate::types::Architecture>) -> Self {
330        self.architecture = input;
331        self
332    }
333    /// <p>The CPU architecture of an application.</p>
334    pub fn get_architecture(&self) -> &::std::option::Option<crate::types::Architecture> {
335        &self.architecture
336    }
337    /// <p>The image configuration for all worker types. You can either set this parameter or <code>imageConfiguration</code> for each worker type in <code>workerTypeSpecifications</code>.</p>
338    pub fn image_configuration(mut self, input: crate::types::ImageConfigurationInput) -> Self {
339        self.image_configuration = ::std::option::Option::Some(input);
340        self
341    }
342    /// <p>The image configuration for all worker types. You can either set this parameter or <code>imageConfiguration</code> for each worker type in <code>workerTypeSpecifications</code>.</p>
343    pub fn set_image_configuration(mut self, input: ::std::option::Option<crate::types::ImageConfigurationInput>) -> Self {
344        self.image_configuration = input;
345        self
346    }
347    /// <p>The image configuration for all worker types. You can either set this parameter or <code>imageConfiguration</code> for each worker type in <code>workerTypeSpecifications</code>.</p>
348    pub fn get_image_configuration(&self) -> &::std::option::Option<crate::types::ImageConfigurationInput> {
349        &self.image_configuration
350    }
351    /// Adds a key-value pair to `worker_type_specifications`.
352    ///
353    /// To override the contents of this collection use [`set_worker_type_specifications`](Self::set_worker_type_specifications).
354    ///
355    /// <p>The key-value pairs that specify worker type to <code>WorkerTypeSpecificationInput</code>. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include <code>Driver</code> and <code>Executor</code> for Spark applications and <code>HiveDriver</code> and <code>TezTask</code> for Hive applications. You can either set image details in this parameter for each worker type, or in <code>imageConfiguration</code> for all worker types.</p>
356    pub fn worker_type_specifications(
357        mut self,
358        k: impl ::std::convert::Into<::std::string::String>,
359        v: crate::types::WorkerTypeSpecificationInput,
360    ) -> Self {
361        let mut hash_map = self.worker_type_specifications.unwrap_or_default();
362        hash_map.insert(k.into(), v);
363        self.worker_type_specifications = ::std::option::Option::Some(hash_map);
364        self
365    }
366    /// <p>The key-value pairs that specify worker type to <code>WorkerTypeSpecificationInput</code>. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include <code>Driver</code> and <code>Executor</code> for Spark applications and <code>HiveDriver</code> and <code>TezTask</code> for Hive applications. You can either set image details in this parameter for each worker type, or in <code>imageConfiguration</code> for all worker types.</p>
367    pub fn set_worker_type_specifications(
368        mut self,
369        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::WorkerTypeSpecificationInput>>,
370    ) -> Self {
371        self.worker_type_specifications = input;
372        self
373    }
374    /// <p>The key-value pairs that specify worker type to <code>WorkerTypeSpecificationInput</code>. This parameter must contain all valid worker types for a Spark or Hive application. Valid worker types include <code>Driver</code> and <code>Executor</code> for Spark applications and <code>HiveDriver</code> and <code>TezTask</code> for Hive applications. You can either set image details in this parameter for each worker type, or in <code>imageConfiguration</code> for all worker types.</p>
375    pub fn get_worker_type_specifications(
376        &self,
377    ) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::WorkerTypeSpecificationInput>> {
378        &self.worker_type_specifications
379    }
380    /// Appends an item to `runtime_configuration`.
381    ///
382    /// To override the contents of this collection use [`set_runtime_configuration`](Self::set_runtime_configuration).
383    ///
384    /// <p>The <a href="https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html">Configuration</a> specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.</p>
385    pub fn runtime_configuration(mut self, input: crate::types::Configuration) -> Self {
386        let mut v = self.runtime_configuration.unwrap_or_default();
387        v.push(input);
388        self.runtime_configuration = ::std::option::Option::Some(v);
389        self
390    }
391    /// <p>The <a href="https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html">Configuration</a> specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.</p>
392    pub fn set_runtime_configuration(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Configuration>>) -> Self {
393        self.runtime_configuration = input;
394        self
395    }
396    /// <p>The <a href="https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html">Configuration</a> specifications to use when creating an application. Each configuration consists of a classification and properties. This configuration is applied to all the job runs submitted under the application.</p>
397    pub fn get_runtime_configuration(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Configuration>> {
398        &self.runtime_configuration
399    }
400    /// <p>The configuration setting for monitoring.</p>
401    pub fn monitoring_configuration(mut self, input: crate::types::MonitoringConfiguration) -> Self {
402        self.monitoring_configuration = ::std::option::Option::Some(input);
403        self
404    }
405    /// <p>The configuration setting for monitoring.</p>
406    pub fn set_monitoring_configuration(mut self, input: ::std::option::Option<crate::types::MonitoringConfiguration>) -> Self {
407        self.monitoring_configuration = input;
408        self
409    }
410    /// <p>The configuration setting for monitoring.</p>
411    pub fn get_monitoring_configuration(&self) -> &::std::option::Option<crate::types::MonitoringConfiguration> {
412        &self.monitoring_configuration
413    }
414    /// <p>The interactive configuration object that enables the interactive use cases to use when running an application.</p>
415    pub fn interactive_configuration(mut self, input: crate::types::InteractiveConfiguration) -> Self {
416        self.interactive_configuration = ::std::option::Option::Some(input);
417        self
418    }
419    /// <p>The interactive configuration object that enables the interactive use cases to use when running an application.</p>
420    pub fn set_interactive_configuration(mut self, input: ::std::option::Option<crate::types::InteractiveConfiguration>) -> Self {
421        self.interactive_configuration = input;
422        self
423    }
424    /// <p>The interactive configuration object that enables the interactive use cases to use when running an application.</p>
425    pub fn get_interactive_configuration(&self) -> &::std::option::Option<crate::types::InteractiveConfiguration> {
426        &self.interactive_configuration
427    }
428    /// <p>The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.</p>
429    pub fn scheduler_configuration(mut self, input: crate::types::SchedulerConfiguration) -> Self {
430        self.scheduler_configuration = ::std::option::Option::Some(input);
431        self
432    }
433    /// <p>The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.</p>
434    pub fn set_scheduler_configuration(mut self, input: ::std::option::Option<crate::types::SchedulerConfiguration>) -> Self {
435        self.scheduler_configuration = input;
436        self
437    }
438    /// <p>The scheduler configuration for batch and streaming jobs running on this application. Supported with release labels emr-7.0.0 and above.</p>
439    pub fn get_scheduler_configuration(&self) -> &::std::option::Option<crate::types::SchedulerConfiguration> {
440        &self.scheduler_configuration
441    }
442    /// <p>The IAM Identity Center Configuration accepts the Identity Center instance parameter required to enable trusted identity propagation. This configuration allows identity propagation between integrated services and the Identity Center instance.</p>
443    pub fn identity_center_configuration(mut self, input: crate::types::IdentityCenterConfigurationInput) -> Self {
444        self.identity_center_configuration = ::std::option::Option::Some(input);
445        self
446    }
447    /// <p>The IAM Identity Center Configuration accepts the Identity Center instance parameter required to enable trusted identity propagation. This configuration allows identity propagation between integrated services and the Identity Center instance.</p>
448    pub fn set_identity_center_configuration(mut self, input: ::std::option::Option<crate::types::IdentityCenterConfigurationInput>) -> Self {
449        self.identity_center_configuration = input;
450        self
451    }
452    /// <p>The IAM Identity Center Configuration accepts the Identity Center instance parameter required to enable trusted identity propagation. This configuration allows identity propagation between integrated services and the Identity Center instance.</p>
453    pub fn get_identity_center_configuration(&self) -> &::std::option::Option<crate::types::IdentityCenterConfigurationInput> {
454        &self.identity_center_configuration
455    }
456    /// <p>The configuration object that enables job level cost allocation.</p>
457    pub fn job_level_cost_allocation_configuration(mut self, input: crate::types::JobLevelCostAllocationConfiguration) -> Self {
458        self.job_level_cost_allocation_configuration = ::std::option::Option::Some(input);
459        self
460    }
461    /// <p>The configuration object that enables job level cost allocation.</p>
462    pub fn set_job_level_cost_allocation_configuration(
463        mut self,
464        input: ::std::option::Option<crate::types::JobLevelCostAllocationConfiguration>,
465    ) -> Self {
466        self.job_level_cost_allocation_configuration = input;
467        self
468    }
469    /// <p>The configuration object that enables job level cost allocation.</p>
470    pub fn get_job_level_cost_allocation_configuration(&self) -> &::std::option::Option<crate::types::JobLevelCostAllocationConfiguration> {
471        &self.job_level_cost_allocation_configuration
472    }
473    /// Consumes the builder and constructs a [`CreateApplicationInput`](crate::operation::create_application::CreateApplicationInput).
474    pub fn build(
475        self,
476    ) -> ::std::result::Result<crate::operation::create_application::CreateApplicationInput, ::aws_smithy_types::error::operation::BuildError> {
477        ::std::result::Result::Ok(crate::operation::create_application::CreateApplicationInput {
478            name: self.name,
479            release_label: self.release_label,
480            r#type: self.r#type,
481            client_token: self.client_token,
482            initial_capacity: self.initial_capacity,
483            maximum_capacity: self.maximum_capacity,
484            tags: self.tags,
485            auto_start_configuration: self.auto_start_configuration,
486            auto_stop_configuration: self.auto_stop_configuration,
487            network_configuration: self.network_configuration,
488            architecture: self.architecture,
489            image_configuration: self.image_configuration,
490            worker_type_specifications: self.worker_type_specifications,
491            runtime_configuration: self.runtime_configuration,
492            monitoring_configuration: self.monitoring_configuration,
493            interactive_configuration: self.interactive_configuration,
494            scheduler_configuration: self.scheduler_configuration,
495            identity_center_configuration: self.identity_center_configuration,
496            job_level_cost_allocation_configuration: self.job_level_cost_allocation_configuration,
497        })
498    }
499}