aws_sdk_glue/operation/create_job/
_create_job_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)]
5pub struct CreateJobInput {
6    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
7    pub name: ::std::option::Option<::std::string::String>,
8    /// <p>A mode that describes how a job was created. Valid values are:</p>
9    /// <ul>
10    /// <li>
11    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
12    /// <li>
13    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
14    /// <li>
15    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
16    /// </ul>
17    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
18    pub job_mode: ::std::option::Option<crate::types::JobMode>,
19    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
20    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
21    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
22    pub job_run_queuing_enabled: ::std::option::Option<bool>,
23    /// <p>Description of the job being defined.</p>
24    pub description: ::std::option::Option<::std::string::String>,
25    /// <p>This field is reserved for future use.</p>
26    pub log_uri: ::std::option::Option<::std::string::String>,
27    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
28    pub role: ::std::option::Option<::std::string::String>,
29    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
30    pub execution_property: ::std::option::Option<crate::types::ExecutionProperty>,
31    /// <p>The <code>JobCommand</code> that runs this job.</p>
32    pub command: ::std::option::Option<crate::types::JobCommand>,
33    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
34    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
35    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
36    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
37    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
38    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
39    pub default_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
40    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
41    pub non_overridable_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
42    /// <p>The connections used for this job.</p>
43    pub connections: ::std::option::Option<crate::types::ConnectionsList>,
44    /// <p>The maximum number of times to retry this job if it fails.</p>
45    pub max_retries: ::std::option::Option<i32>,
46    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
47    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
48    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
49    pub allocated_capacity: ::std::option::Option<i32>,
50    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
51    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
52    /// <p>When the value is left blank, the timeout is defaulted to 2880 minutes.</p>
53    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
54    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
55    pub timeout: ::std::option::Option<i32>,
56    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
57    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
58    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
59    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
60    /// <ul>
61    /// <li>
62    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
63    /// <li>
64    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
65    /// </ul>
66    pub max_capacity: ::std::option::Option<f64>,
67    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
68    pub security_configuration: ::std::option::Option<::std::string::String>,
69    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
70    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
71    /// <p>Specifies configuration properties of a job notification.</p>
72    pub notification_property: ::std::option::Option<crate::types::NotificationProperty>,
73    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
74    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
75    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
76    /// <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>
77    pub glue_version: ::std::option::Option<::std::string::String>,
78    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
79    pub number_of_workers: ::std::option::Option<i32>,
80    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
81    /// <ul>
82    /// <li>
83    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
84    /// <li>
85    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
86    /// <li>
87    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), Europe (Spain), Europe (Stockholm), and South America (São Paulo).</p></li>
88    /// <li>
89    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p></li>
90    /// <li>
91    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
92    /// <li>
93    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
94    /// </ul>
95    pub worker_type: ::std::option::Option<crate::types::WorkerType>,
96    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
97    pub code_gen_configuration_nodes:
98        ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>>,
99    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
100    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
101    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
102    pub execution_class: ::std::option::Option<crate::types::ExecutionClass>,
103    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
104    pub source_control_details: ::std::option::Option<crate::types::SourceControlDetails>,
105    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
106    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
107    pub maintenance_window: ::std::option::Option<::std::string::String>,
108}
109impl CreateJobInput {
110    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
111    pub fn name(&self) -> ::std::option::Option<&str> {
112        self.name.as_deref()
113    }
114    /// <p>A mode that describes how a job was created. Valid values are:</p>
115    /// <ul>
116    /// <li>
117    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
118    /// <li>
119    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
120    /// <li>
121    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
122    /// </ul>
123    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
124    pub fn job_mode(&self) -> ::std::option::Option<&crate::types::JobMode> {
125        self.job_mode.as_ref()
126    }
127    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
128    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
129    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
130    pub fn job_run_queuing_enabled(&self) -> ::std::option::Option<bool> {
131        self.job_run_queuing_enabled
132    }
133    /// <p>Description of the job being defined.</p>
134    pub fn description(&self) -> ::std::option::Option<&str> {
135        self.description.as_deref()
136    }
137    /// <p>This field is reserved for future use.</p>
138    pub fn log_uri(&self) -> ::std::option::Option<&str> {
139        self.log_uri.as_deref()
140    }
141    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
142    pub fn role(&self) -> ::std::option::Option<&str> {
143        self.role.as_deref()
144    }
145    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
146    pub fn execution_property(&self) -> ::std::option::Option<&crate::types::ExecutionProperty> {
147        self.execution_property.as_ref()
148    }
149    /// <p>The <code>JobCommand</code> that runs this job.</p>
150    pub fn command(&self) -> ::std::option::Option<&crate::types::JobCommand> {
151        self.command.as_ref()
152    }
153    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
154    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
155    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
156    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
157    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
158    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
159    pub fn default_arguments(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
160        self.default_arguments.as_ref()
161    }
162    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
163    pub fn non_overridable_arguments(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
164        self.non_overridable_arguments.as_ref()
165    }
166    /// <p>The connections used for this job.</p>
167    pub fn connections(&self) -> ::std::option::Option<&crate::types::ConnectionsList> {
168        self.connections.as_ref()
169    }
170    /// <p>The maximum number of times to retry this job if it fails.</p>
171    pub fn max_retries(&self) -> ::std::option::Option<i32> {
172        self.max_retries
173    }
174    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
175    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
176    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
177    pub fn allocated_capacity(&self) -> ::std::option::Option<i32> {
178        self.allocated_capacity
179    }
180    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
181    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
182    /// <p>When the value is left blank, the timeout is defaulted to 2880 minutes.</p>
183    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
184    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
185    pub fn timeout(&self) -> ::std::option::Option<i32> {
186        self.timeout
187    }
188    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
189    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
190    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
191    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
192    /// <ul>
193    /// <li>
194    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
195    /// <li>
196    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
197    /// </ul>
198    pub fn max_capacity(&self) -> ::std::option::Option<f64> {
199        self.max_capacity
200    }
201    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
202    pub fn security_configuration(&self) -> ::std::option::Option<&str> {
203        self.security_configuration.as_deref()
204    }
205    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
206    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
207        self.tags.as_ref()
208    }
209    /// <p>Specifies configuration properties of a job notification.</p>
210    pub fn notification_property(&self) -> ::std::option::Option<&crate::types::NotificationProperty> {
211        self.notification_property.as_ref()
212    }
213    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
214    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
215    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
216    /// <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>
217    pub fn glue_version(&self) -> ::std::option::Option<&str> {
218        self.glue_version.as_deref()
219    }
220    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
221    pub fn number_of_workers(&self) -> ::std::option::Option<i32> {
222        self.number_of_workers
223    }
224    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
225    /// <ul>
226    /// <li>
227    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
228    /// <li>
229    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
230    /// <li>
231    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), Europe (Spain), Europe (Stockholm), and South America (São Paulo).</p></li>
232    /// <li>
233    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p></li>
234    /// <li>
235    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
236    /// <li>
237    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
238    /// </ul>
239    pub fn worker_type(&self) -> ::std::option::Option<&crate::types::WorkerType> {
240        self.worker_type.as_ref()
241    }
242    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
243    pub fn code_gen_configuration_nodes(
244        &self,
245    ) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>> {
246        self.code_gen_configuration_nodes.as_ref()
247    }
248    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
249    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
250    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
251    pub fn execution_class(&self) -> ::std::option::Option<&crate::types::ExecutionClass> {
252        self.execution_class.as_ref()
253    }
254    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
255    pub fn source_control_details(&self) -> ::std::option::Option<&crate::types::SourceControlDetails> {
256        self.source_control_details.as_ref()
257    }
258    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
259    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
260    pub fn maintenance_window(&self) -> ::std::option::Option<&str> {
261        self.maintenance_window.as_deref()
262    }
263}
264impl ::std::fmt::Debug for CreateJobInput {
265    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
266        let mut formatter = f.debug_struct("CreateJobInput");
267        formatter.field("name", &self.name);
268        formatter.field("job_mode", &self.job_mode);
269        formatter.field("job_run_queuing_enabled", &self.job_run_queuing_enabled);
270        formatter.field("description", &self.description);
271        formatter.field("log_uri", &self.log_uri);
272        formatter.field("role", &self.role);
273        formatter.field("execution_property", &self.execution_property);
274        formatter.field("command", &self.command);
275        formatter.field("default_arguments", &self.default_arguments);
276        formatter.field("non_overridable_arguments", &self.non_overridable_arguments);
277        formatter.field("connections", &self.connections);
278        formatter.field("max_retries", &self.max_retries);
279        formatter.field("allocated_capacity", &self.allocated_capacity);
280        formatter.field("timeout", &self.timeout);
281        formatter.field("max_capacity", &self.max_capacity);
282        formatter.field("security_configuration", &self.security_configuration);
283        formatter.field("tags", &self.tags);
284        formatter.field("notification_property", &self.notification_property);
285        formatter.field("glue_version", &self.glue_version);
286        formatter.field("number_of_workers", &self.number_of_workers);
287        formatter.field("worker_type", &self.worker_type);
288        formatter.field("code_gen_configuration_nodes", &"*** Sensitive Data Redacted ***");
289        formatter.field("execution_class", &self.execution_class);
290        formatter.field("source_control_details", &self.source_control_details);
291        formatter.field("maintenance_window", &self.maintenance_window);
292        formatter.finish()
293    }
294}
295impl CreateJobInput {
296    /// Creates a new builder-style object to manufacture [`CreateJobInput`](crate::operation::create_job::CreateJobInput).
297    pub fn builder() -> crate::operation::create_job::builders::CreateJobInputBuilder {
298        crate::operation::create_job::builders::CreateJobInputBuilder::default()
299    }
300}
301
302/// A builder for [`CreateJobInput`](crate::operation::create_job::CreateJobInput).
303#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
304#[non_exhaustive]
305pub struct CreateJobInputBuilder {
306    pub(crate) name: ::std::option::Option<::std::string::String>,
307    pub(crate) job_mode: ::std::option::Option<crate::types::JobMode>,
308    pub(crate) job_run_queuing_enabled: ::std::option::Option<bool>,
309    pub(crate) description: ::std::option::Option<::std::string::String>,
310    pub(crate) log_uri: ::std::option::Option<::std::string::String>,
311    pub(crate) role: ::std::option::Option<::std::string::String>,
312    pub(crate) execution_property: ::std::option::Option<crate::types::ExecutionProperty>,
313    pub(crate) command: ::std::option::Option<crate::types::JobCommand>,
314    pub(crate) default_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
315    pub(crate) non_overridable_arguments: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
316    pub(crate) connections: ::std::option::Option<crate::types::ConnectionsList>,
317    pub(crate) max_retries: ::std::option::Option<i32>,
318    pub(crate) allocated_capacity: ::std::option::Option<i32>,
319    pub(crate) timeout: ::std::option::Option<i32>,
320    pub(crate) max_capacity: ::std::option::Option<f64>,
321    pub(crate) security_configuration: ::std::option::Option<::std::string::String>,
322    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
323    pub(crate) notification_property: ::std::option::Option<crate::types::NotificationProperty>,
324    pub(crate) glue_version: ::std::option::Option<::std::string::String>,
325    pub(crate) number_of_workers: ::std::option::Option<i32>,
326    pub(crate) worker_type: ::std::option::Option<crate::types::WorkerType>,
327    pub(crate) code_gen_configuration_nodes:
328        ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>>,
329    pub(crate) execution_class: ::std::option::Option<crate::types::ExecutionClass>,
330    pub(crate) source_control_details: ::std::option::Option<crate::types::SourceControlDetails>,
331    pub(crate) maintenance_window: ::std::option::Option<::std::string::String>,
332}
333impl CreateJobInputBuilder {
334    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
335    /// This field is required.
336    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
337        self.name = ::std::option::Option::Some(input.into());
338        self
339    }
340    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
341    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
342        self.name = input;
343        self
344    }
345    /// <p>The name you assign to this job definition. It must be unique in your account.</p>
346    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
347        &self.name
348    }
349    /// <p>A mode that describes how a job was created. Valid values are:</p>
350    /// <ul>
351    /// <li>
352    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
353    /// <li>
354    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
355    /// <li>
356    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
357    /// </ul>
358    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
359    pub fn job_mode(mut self, input: crate::types::JobMode) -> Self {
360        self.job_mode = ::std::option::Option::Some(input);
361        self
362    }
363    /// <p>A mode that describes how a job was created. Valid values are:</p>
364    /// <ul>
365    /// <li>
366    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
367    /// <li>
368    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
369    /// <li>
370    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
371    /// </ul>
372    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
373    pub fn set_job_mode(mut self, input: ::std::option::Option<crate::types::JobMode>) -> Self {
374        self.job_mode = input;
375        self
376    }
377    /// <p>A mode that describes how a job was created. Valid values are:</p>
378    /// <ul>
379    /// <li>
380    /// <p><code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p></li>
381    /// <li>
382    /// <p><code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p></li>
383    /// <li>
384    /// <p><code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p></li>
385    /// </ul>
386    /// <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>
387    pub fn get_job_mode(&self) -> &::std::option::Option<crate::types::JobMode> {
388        &self.job_mode
389    }
390    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
391    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
392    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
393    pub fn job_run_queuing_enabled(mut self, input: bool) -> Self {
394        self.job_run_queuing_enabled = ::std::option::Option::Some(input);
395        self
396    }
397    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
398    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
399    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
400    pub fn set_job_run_queuing_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
401        self.job_run_queuing_enabled = input;
402        self
403    }
404    /// <p>Specifies whether job run queuing is enabled for the job runs for this job.</p>
405    /// <p>A value of true means job run queuing is enabled for the job runs. If false or not populated, the job runs will not be considered for queueing.</p>
406    /// <p>If this field does not match the value set in the job run, then the value from the job run field will be used.</p>
407    pub fn get_job_run_queuing_enabled(&self) -> &::std::option::Option<bool> {
408        &self.job_run_queuing_enabled
409    }
410    /// <p>Description of the job being defined.</p>
411    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
412        self.description = ::std::option::Option::Some(input.into());
413        self
414    }
415    /// <p>Description of the job being defined.</p>
416    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
417        self.description = input;
418        self
419    }
420    /// <p>Description of the job being defined.</p>
421    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
422        &self.description
423    }
424    /// <p>This field is reserved for future use.</p>
425    pub fn log_uri(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
426        self.log_uri = ::std::option::Option::Some(input.into());
427        self
428    }
429    /// <p>This field is reserved for future use.</p>
430    pub fn set_log_uri(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
431        self.log_uri = input;
432        self
433    }
434    /// <p>This field is reserved for future use.</p>
435    pub fn get_log_uri(&self) -> &::std::option::Option<::std::string::String> {
436        &self.log_uri
437    }
438    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
439    /// This field is required.
440    pub fn role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
441        self.role = ::std::option::Option::Some(input.into());
442        self
443    }
444    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
445    pub fn set_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
446        self.role = input;
447        self
448    }
449    /// <p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>
450    pub fn get_role(&self) -> &::std::option::Option<::std::string::String> {
451        &self.role
452    }
453    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
454    pub fn execution_property(mut self, input: crate::types::ExecutionProperty) -> Self {
455        self.execution_property = ::std::option::Option::Some(input);
456        self
457    }
458    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
459    pub fn set_execution_property(mut self, input: ::std::option::Option<crate::types::ExecutionProperty>) -> Self {
460        self.execution_property = input;
461        self
462    }
463    /// <p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>
464    pub fn get_execution_property(&self) -> &::std::option::Option<crate::types::ExecutionProperty> {
465        &self.execution_property
466    }
467    /// <p>The <code>JobCommand</code> that runs this job.</p>
468    /// This field is required.
469    pub fn command(mut self, input: crate::types::JobCommand) -> Self {
470        self.command = ::std::option::Option::Some(input);
471        self
472    }
473    /// <p>The <code>JobCommand</code> that runs this job.</p>
474    pub fn set_command(mut self, input: ::std::option::Option<crate::types::JobCommand>) -> Self {
475        self.command = input;
476        self
477    }
478    /// <p>The <code>JobCommand</code> that runs this job.</p>
479    pub fn get_command(&self) -> &::std::option::Option<crate::types::JobCommand> {
480        &self.command
481    }
482    /// Adds a key-value pair to `default_arguments`.
483    ///
484    /// To override the contents of this collection use [`set_default_arguments`](Self::set_default_arguments).
485    ///
486    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
487    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
488    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
489    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
490    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
491    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
492    pub fn default_arguments(
493        mut self,
494        k: impl ::std::convert::Into<::std::string::String>,
495        v: impl ::std::convert::Into<::std::string::String>,
496    ) -> Self {
497        let mut hash_map = self.default_arguments.unwrap_or_default();
498        hash_map.insert(k.into(), v.into());
499        self.default_arguments = ::std::option::Option::Some(hash_map);
500        self
501    }
502    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
503    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
504    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
505    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
506    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
507    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
508    pub fn set_default_arguments(
509        mut self,
510        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
511    ) -> Self {
512        self.default_arguments = input;
513        self
514    }
515    /// <p>The default arguments for every run of this job, specified as name-value pairs.</p>
516    /// <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p>
517    /// <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job.</p>
518    /// <p>For information about how to specify and consume your own Job arguments, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html">Calling Glue APIs in Python</a> topic in the developer guide.</p>
519    /// <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href="https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html">Special Parameters Used by Glue</a> topic in the developer guide.</p>
520    /// <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href="https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html">Using job parameters in Ray jobs</a> in the developer guide.</p>
521    pub fn get_default_arguments(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
522        &self.default_arguments
523    }
524    /// Adds a key-value pair to `non_overridable_arguments`.
525    ///
526    /// To override the contents of this collection use [`set_non_overridable_arguments`](Self::set_non_overridable_arguments).
527    ///
528    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
529    pub fn non_overridable_arguments(
530        mut self,
531        k: impl ::std::convert::Into<::std::string::String>,
532        v: impl ::std::convert::Into<::std::string::String>,
533    ) -> Self {
534        let mut hash_map = self.non_overridable_arguments.unwrap_or_default();
535        hash_map.insert(k.into(), v.into());
536        self.non_overridable_arguments = ::std::option::Option::Some(hash_map);
537        self
538    }
539    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
540    pub fn set_non_overridable_arguments(
541        mut self,
542        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
543    ) -> Self {
544        self.non_overridable_arguments = input;
545        self
546    }
547    /// <p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>
548    pub fn get_non_overridable_arguments(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
549        &self.non_overridable_arguments
550    }
551    /// <p>The connections used for this job.</p>
552    pub fn connections(mut self, input: crate::types::ConnectionsList) -> Self {
553        self.connections = ::std::option::Option::Some(input);
554        self
555    }
556    /// <p>The connections used for this job.</p>
557    pub fn set_connections(mut self, input: ::std::option::Option<crate::types::ConnectionsList>) -> Self {
558        self.connections = input;
559        self
560    }
561    /// <p>The connections used for this job.</p>
562    pub fn get_connections(&self) -> &::std::option::Option<crate::types::ConnectionsList> {
563        &self.connections
564    }
565    /// <p>The maximum number of times to retry this job if it fails.</p>
566    pub fn max_retries(mut self, input: i32) -> Self {
567        self.max_retries = ::std::option::Option::Some(input);
568        self
569    }
570    /// <p>The maximum number of times to retry this job if it fails.</p>
571    pub fn set_max_retries(mut self, input: ::std::option::Option<i32>) -> Self {
572        self.max_retries = input;
573        self
574    }
575    /// <p>The maximum number of times to retry this job if it fails.</p>
576    pub fn get_max_retries(&self) -> &::std::option::Option<i32> {
577        &self.max_retries
578    }
579    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
580    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
581    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
582    pub fn allocated_capacity(mut self, input: i32) -> Self {
583        self.allocated_capacity = ::std::option::Option::Some(input);
584        self
585    }
586    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
587    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
588    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
589    pub fn set_allocated_capacity(mut self, input: ::std::option::Option<i32>) -> Self {
590        self.allocated_capacity = input;
591        self
592    }
593    /// <p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p>
594    /// <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/">Glue pricing page</a>.</p>
595    #[deprecated(note = "This property is deprecated, use MaxCapacity instead.")]
596    pub fn get_allocated_capacity(&self) -> &::std::option::Option<i32> {
597        &self.allocated_capacity
598    }
599    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
600    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
601    /// <p>When the value is left blank, the timeout is defaulted to 2880 minutes.</p>
602    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
603    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
604    pub fn timeout(mut self, input: i32) -> Self {
605        self.timeout = ::std::option::Option::Some(input);
606        self
607    }
608    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
609    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
610    /// <p>When the value is left blank, the timeout is defaulted to 2880 minutes.</p>
611    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
612    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
613    pub fn set_timeout(mut self, input: ::std::option::Option<i32>) -> Self {
614        self.timeout = input;
615        self
616    }
617    /// <p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status.</p>
618    /// <p>Jobs must have timeout values less than 7 days or 10080 minutes. Otherwise, the jobs will throw an exception.</p>
619    /// <p>When the value is left blank, the timeout is defaulted to 2880 minutes.</p>
620    /// <p>Any existing Glue jobs that had a timeout value greater than 7 days will be defaulted to 7 days. For instance if you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p>
621    /// <p>For streaming jobs, if you have set up a maintenance window, it will be restarted during the maintenance window after 7 days.</p>
622    pub fn get_timeout(&self) -> &::std::option::Option<i32> {
623        &self.timeout
624    }
625    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
626    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
627    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
628    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
629    /// <ul>
630    /// <li>
631    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
632    /// <li>
633    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
634    /// </ul>
635    pub fn max_capacity(mut self, input: f64) -> Self {
636        self.max_capacity = ::std::option::Option::Some(input);
637        self
638    }
639    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
640    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
641    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
642    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
643    /// <ul>
644    /// <li>
645    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
646    /// <li>
647    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
648    /// </ul>
649    pub fn set_max_capacity(mut self, input: ::std::option::Option<f64>) -> Self {
650        self.max_capacity = input;
651        self
652    }
653    /// <p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href="https://aws.amazon.com/glue/pricing/"> Glue pricing page</a>.</p>
654    /// <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p>
655    /// <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p>
656    /// <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p>
657    /// <ul>
658    /// <li>
659    /// <p>When you specify a Python shell job (<code>JobCommand.Name</code>="pythonshell"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p></li>
660    /// <li>
661    /// <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>="glueetl") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>="gluestreaming"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p></li>
662    /// </ul>
663    pub fn get_max_capacity(&self) -> &::std::option::Option<f64> {
664        &self.max_capacity
665    }
666    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
667    pub fn security_configuration(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
668        self.security_configuration = ::std::option::Option::Some(input.into());
669        self
670    }
671    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
672    pub fn set_security_configuration(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
673        self.security_configuration = input;
674        self
675    }
676    /// <p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>
677    pub fn get_security_configuration(&self) -> &::std::option::Option<::std::string::String> {
678        &self.security_configuration
679    }
680    /// Adds a key-value pair to `tags`.
681    ///
682    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
683    ///
684    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
685    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
686        let mut hash_map = self.tags.unwrap_or_default();
687        hash_map.insert(k.into(), v.into());
688        self.tags = ::std::option::Option::Some(hash_map);
689        self
690    }
691    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
692    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
693        self.tags = input;
694        self
695    }
696    /// <p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href="https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html">Amazon Web Services Tags in Glue</a> in the developer guide.</p>
697    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
698        &self.tags
699    }
700    /// <p>Specifies configuration properties of a job notification.</p>
701    pub fn notification_property(mut self, input: crate::types::NotificationProperty) -> Self {
702        self.notification_property = ::std::option::Option::Some(input);
703        self
704    }
705    /// <p>Specifies configuration properties of a job notification.</p>
706    pub fn set_notification_property(mut self, input: ::std::option::Option<crate::types::NotificationProperty>) -> Self {
707        self.notification_property = input;
708        self
709    }
710    /// <p>Specifies configuration properties of a job notification.</p>
711    pub fn get_notification_property(&self) -> &::std::option::Option<crate::types::NotificationProperty> {
712        &self.notification_property
713    }
714    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
715    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
716    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
717    /// <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>
718    pub fn glue_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
719        self.glue_version = ::std::option::Option::Some(input.into());
720        self
721    }
722    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
723    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
724    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
725    /// <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>
726    pub fn set_glue_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
727        self.glue_version = input;
728        self
729    }
730    /// <p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark.</p>
731    /// <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p>
732    /// <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href="https://docs.aws.amazon.com/glue/latest/dg/add-job.html">Glue version</a> in the developer guide.</p>
733    /// <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>
734    pub fn get_glue_version(&self) -> &::std::option::Option<::std::string::String> {
735        &self.glue_version
736    }
737    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
738    pub fn number_of_workers(mut self, input: i32) -> Self {
739        self.number_of_workers = ::std::option::Option::Some(input);
740        self
741    }
742    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
743    pub fn set_number_of_workers(mut self, input: ::std::option::Option<i32>) -> Self {
744        self.number_of_workers = input;
745        self
746    }
747    /// <p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>
748    pub fn get_number_of_workers(&self) -> &::std::option::Option<i32> {
749        &self.number_of_workers
750    }
751    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
752    /// <ul>
753    /// <li>
754    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
755    /// <li>
756    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
757    /// <li>
758    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), Europe (Spain), Europe (Stockholm), and South America (São Paulo).</p></li>
759    /// <li>
760    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p></li>
761    /// <li>
762    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
763    /// <li>
764    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
765    /// </ul>
766    pub fn worker_type(mut self, input: crate::types::WorkerType) -> Self {
767        self.worker_type = ::std::option::Option::Some(input);
768        self
769    }
770    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
771    /// <ul>
772    /// <li>
773    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
774    /// <li>
775    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
776    /// <li>
777    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), Europe (Spain), Europe (Stockholm), and South America (São Paulo).</p></li>
778    /// <li>
779    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p></li>
780    /// <li>
781    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
782    /// <li>
783    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
784    /// </ul>
785    pub fn set_worker_type(mut self, input: ::std::option::Option<crate::types::WorkerType>) -> Self {
786        self.worker_type = input;
787        self
788    }
789    /// <p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p>
790    /// <ul>
791    /// <li>
792    /// <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 94GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
793    /// <li>
794    /// <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 138GB disk, and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p></li>
795    /// <li>
796    /// <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), Europe (Spain), Europe (Stockholm), and South America (São Paulo).</p></li>
797    /// <li>
798    /// <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk, and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p></li>
799    /// <li>
800    /// <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk, and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 or later streaming jobs.</p></li>
801    /// <li>
802    /// <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk, and provides up to 8 Ray workers based on the autoscaler.</p></li>
803    /// </ul>
804    pub fn get_worker_type(&self) -> &::std::option::Option<crate::types::WorkerType> {
805        &self.worker_type
806    }
807    /// Adds a key-value pair to `code_gen_configuration_nodes`.
808    ///
809    /// To override the contents of this collection use [`set_code_gen_configuration_nodes`](Self::set_code_gen_configuration_nodes).
810    ///
811    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
812    pub fn code_gen_configuration_nodes(
813        mut self,
814        k: impl ::std::convert::Into<::std::string::String>,
815        v: crate::types::CodeGenConfigurationNode,
816    ) -> Self {
817        let mut hash_map = self.code_gen_configuration_nodes.unwrap_or_default();
818        hash_map.insert(k.into(), v);
819        self.code_gen_configuration_nodes = ::std::option::Option::Some(hash_map);
820        self
821    }
822    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
823    pub fn set_code_gen_configuration_nodes(
824        mut self,
825        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>>,
826    ) -> Self {
827        self.code_gen_configuration_nodes = input;
828        self
829    }
830    /// <p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>
831    pub fn get_code_gen_configuration_nodes(
832        &self,
833    ) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, crate::types::CodeGenConfigurationNode>> {
834        &self.code_gen_configuration_nodes
835    }
836    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
837    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
838    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
839    pub fn execution_class(mut self, input: crate::types::ExecutionClass) -> Self {
840        self.execution_class = ::std::option::Option::Some(input);
841        self
842    }
843    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
844    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
845    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
846    pub fn set_execution_class(mut self, input: ::std::option::Option<crate::types::ExecutionClass>) -> Self {
847        self.execution_class = input;
848        self
849    }
850    /// <p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p>
851    /// <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary.</p>
852    /// <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>
853    pub fn get_execution_class(&self) -> &::std::option::Option<crate::types::ExecutionClass> {
854        &self.execution_class
855    }
856    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
857    pub fn source_control_details(mut self, input: crate::types::SourceControlDetails) -> Self {
858        self.source_control_details = ::std::option::Option::Some(input);
859        self
860    }
861    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
862    pub fn set_source_control_details(mut self, input: ::std::option::Option<crate::types::SourceControlDetails>) -> Self {
863        self.source_control_details = input;
864        self
865    }
866    /// <p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>
867    pub fn get_source_control_details(&self) -> &::std::option::Option<crate::types::SourceControlDetails> {
868        &self.source_control_details
869    }
870    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
871    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
872    pub fn maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
873        self.maintenance_window = ::std::option::Option::Some(input.into());
874        self
875    }
876    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
877    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
878    pub fn set_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
879        self.maintenance_window = input;
880        self
881    }
882    /// <p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p>
883    /// <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>
884    pub fn get_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
885        &self.maintenance_window
886    }
887    /// Consumes the builder and constructs a [`CreateJobInput`](crate::operation::create_job::CreateJobInput).
888    pub fn build(self) -> ::std::result::Result<crate::operation::create_job::CreateJobInput, ::aws_smithy_types::error::operation::BuildError> {
889        ::std::result::Result::Ok(crate::operation::create_job::CreateJobInput {
890            name: self.name,
891            job_mode: self.job_mode,
892            job_run_queuing_enabled: self.job_run_queuing_enabled,
893            description: self.description,
894            log_uri: self.log_uri,
895            role: self.role,
896            execution_property: self.execution_property,
897            command: self.command,
898            default_arguments: self.default_arguments,
899            non_overridable_arguments: self.non_overridable_arguments,
900            connections: self.connections,
901            max_retries: self.max_retries,
902            allocated_capacity: self.allocated_capacity,
903            timeout: self.timeout,
904            max_capacity: self.max_capacity,
905            security_configuration: self.security_configuration,
906            tags: self.tags,
907            notification_property: self.notification_property,
908            glue_version: self.glue_version,
909            number_of_workers: self.number_of_workers,
910            worker_type: self.worker_type,
911            code_gen_configuration_nodes: self.code_gen_configuration_nodes,
912            execution_class: self.execution_class,
913            source_control_details: self.source_control_details,
914            maintenance_window: self.maintenance_window,
915        })
916    }
917}
918impl ::std::fmt::Debug for CreateJobInputBuilder {
919    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
920        let mut formatter = f.debug_struct("CreateJobInputBuilder");
921        formatter.field("name", &self.name);
922        formatter.field("job_mode", &self.job_mode);
923        formatter.field("job_run_queuing_enabled", &self.job_run_queuing_enabled);
924        formatter.field("description", &self.description);
925        formatter.field("log_uri", &self.log_uri);
926        formatter.field("role", &self.role);
927        formatter.field("execution_property", &self.execution_property);
928        formatter.field("command", &self.command);
929        formatter.field("default_arguments", &self.default_arguments);
930        formatter.field("non_overridable_arguments", &self.non_overridable_arguments);
931        formatter.field("connections", &self.connections);
932        formatter.field("max_retries", &self.max_retries);
933        formatter.field("allocated_capacity", &self.allocated_capacity);
934        formatter.field("timeout", &self.timeout);
935        formatter.field("max_capacity", &self.max_capacity);
936        formatter.field("security_configuration", &self.security_configuration);
937        formatter.field("tags", &self.tags);
938        formatter.field("notification_property", &self.notification_property);
939        formatter.field("glue_version", &self.glue_version);
940        formatter.field("number_of_workers", &self.number_of_workers);
941        formatter.field("worker_type", &self.worker_type);
942        formatter.field("code_gen_configuration_nodes", &"*** Sensitive Data Redacted ***");
943        formatter.field("execution_class", &self.execution_class);
944        formatter.field("source_control_details", &self.source_control_details);
945        formatter.field("maintenance_window", &self.maintenance_window);
946        formatter.finish()
947    }
948}