1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/elasticmapreduce/EMR_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/core/utils/memory/stl/AWSVector.h>
10 #include <aws/elasticmapreduce/model/PlacementType.h>
11 #include <aws/elasticmapreduce/model/InstanceGroupConfig.h>
12 #include <aws/elasticmapreduce/model/InstanceFleetConfig.h>
13 #include <utility>
14 
15 namespace Aws
16 {
17 namespace Utils
18 {
19 namespace Json
20 {
21   class JsonValue;
22   class JsonView;
23 } // namespace Json
24 } // namespace Utils
25 namespace EMR
26 {
27 namespace Model
28 {
29 
30   /**
31    * <p>A description of the Amazon EC2 instance on which the cluster (job flow)
32    * runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or
33    * InstanceFleets. They cannot be used together. You may also have
34    * MasterInstanceType, SlaveInstanceType, and InstanceCount (all three must be
35    * present), but we don't recommend this configuration.</p><p><h3>See Also:</h3>
36    * <a
37    * href="http://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/JobFlowInstancesConfig">AWS
38    * API Reference</a></p>
39    */
40   class AWS_EMR_API JobFlowInstancesConfig
41   {
42   public:
43     JobFlowInstancesConfig();
44     JobFlowInstancesConfig(Aws::Utils::Json::JsonView jsonValue);
45     JobFlowInstancesConfig& operator=(Aws::Utils::Json::JsonView jsonValue);
46     Aws::Utils::Json::JsonValue Jsonize() const;
47 
48 
49     /**
50      * <p>The EC2 instance type of the master node.</p>
51      */
GetMasterInstanceType()52     inline const Aws::String& GetMasterInstanceType() const{ return m_masterInstanceType; }
53 
54     /**
55      * <p>The EC2 instance type of the master node.</p>
56      */
MasterInstanceTypeHasBeenSet()57     inline bool MasterInstanceTypeHasBeenSet() const { return m_masterInstanceTypeHasBeenSet; }
58 
59     /**
60      * <p>The EC2 instance type of the master node.</p>
61      */
SetMasterInstanceType(const Aws::String & value)62     inline void SetMasterInstanceType(const Aws::String& value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType = value; }
63 
64     /**
65      * <p>The EC2 instance type of the master node.</p>
66      */
SetMasterInstanceType(Aws::String && value)67     inline void SetMasterInstanceType(Aws::String&& value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType = std::move(value); }
68 
69     /**
70      * <p>The EC2 instance type of the master node.</p>
71      */
SetMasterInstanceType(const char * value)72     inline void SetMasterInstanceType(const char* value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType.assign(value); }
73 
74     /**
75      * <p>The EC2 instance type of the master node.</p>
76      */
WithMasterInstanceType(const Aws::String & value)77     inline JobFlowInstancesConfig& WithMasterInstanceType(const Aws::String& value) { SetMasterInstanceType(value); return *this;}
78 
79     /**
80      * <p>The EC2 instance type of the master node.</p>
81      */
WithMasterInstanceType(Aws::String && value)82     inline JobFlowInstancesConfig& WithMasterInstanceType(Aws::String&& value) { SetMasterInstanceType(std::move(value)); return *this;}
83 
84     /**
85      * <p>The EC2 instance type of the master node.</p>
86      */
WithMasterInstanceType(const char * value)87     inline JobFlowInstancesConfig& WithMasterInstanceType(const char* value) { SetMasterInstanceType(value); return *this;}
88 
89 
90     /**
91      * <p>The EC2 instance type of the core and task nodes.</p>
92      */
GetSlaveInstanceType()93     inline const Aws::String& GetSlaveInstanceType() const{ return m_slaveInstanceType; }
94 
95     /**
96      * <p>The EC2 instance type of the core and task nodes.</p>
97      */
SlaveInstanceTypeHasBeenSet()98     inline bool SlaveInstanceTypeHasBeenSet() const { return m_slaveInstanceTypeHasBeenSet; }
99 
100     /**
101      * <p>The EC2 instance type of the core and task nodes.</p>
102      */
SetSlaveInstanceType(const Aws::String & value)103     inline void SetSlaveInstanceType(const Aws::String& value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType = value; }
104 
105     /**
106      * <p>The EC2 instance type of the core and task nodes.</p>
107      */
SetSlaveInstanceType(Aws::String && value)108     inline void SetSlaveInstanceType(Aws::String&& value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType = std::move(value); }
109 
110     /**
111      * <p>The EC2 instance type of the core and task nodes.</p>
112      */
SetSlaveInstanceType(const char * value)113     inline void SetSlaveInstanceType(const char* value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType.assign(value); }
114 
115     /**
116      * <p>The EC2 instance type of the core and task nodes.</p>
117      */
WithSlaveInstanceType(const Aws::String & value)118     inline JobFlowInstancesConfig& WithSlaveInstanceType(const Aws::String& value) { SetSlaveInstanceType(value); return *this;}
119 
120     /**
121      * <p>The EC2 instance type of the core and task nodes.</p>
122      */
WithSlaveInstanceType(Aws::String && value)123     inline JobFlowInstancesConfig& WithSlaveInstanceType(Aws::String&& value) { SetSlaveInstanceType(std::move(value)); return *this;}
124 
125     /**
126      * <p>The EC2 instance type of the core and task nodes.</p>
127      */
WithSlaveInstanceType(const char * value)128     inline JobFlowInstancesConfig& WithSlaveInstanceType(const char* value) { SetSlaveInstanceType(value); return *this;}
129 
130 
131     /**
132      * <p>The number of EC2 instances in the cluster.</p>
133      */
GetInstanceCount()134     inline int GetInstanceCount() const{ return m_instanceCount; }
135 
136     /**
137      * <p>The number of EC2 instances in the cluster.</p>
138      */
InstanceCountHasBeenSet()139     inline bool InstanceCountHasBeenSet() const { return m_instanceCountHasBeenSet; }
140 
141     /**
142      * <p>The number of EC2 instances in the cluster.</p>
143      */
SetInstanceCount(int value)144     inline void SetInstanceCount(int value) { m_instanceCountHasBeenSet = true; m_instanceCount = value; }
145 
146     /**
147      * <p>The number of EC2 instances in the cluster.</p>
148      */
WithInstanceCount(int value)149     inline JobFlowInstancesConfig& WithInstanceCount(int value) { SetInstanceCount(value); return *this;}
150 
151 
152     /**
153      * <p>Configuration for the instance groups in a cluster.</p>
154      */
GetInstanceGroups()155     inline const Aws::Vector<InstanceGroupConfig>& GetInstanceGroups() const{ return m_instanceGroups; }
156 
157     /**
158      * <p>Configuration for the instance groups in a cluster.</p>
159      */
InstanceGroupsHasBeenSet()160     inline bool InstanceGroupsHasBeenSet() const { return m_instanceGroupsHasBeenSet; }
161 
162     /**
163      * <p>Configuration for the instance groups in a cluster.</p>
164      */
SetInstanceGroups(const Aws::Vector<InstanceGroupConfig> & value)165     inline void SetInstanceGroups(const Aws::Vector<InstanceGroupConfig>& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups = value; }
166 
167     /**
168      * <p>Configuration for the instance groups in a cluster.</p>
169      */
SetInstanceGroups(Aws::Vector<InstanceGroupConfig> && value)170     inline void SetInstanceGroups(Aws::Vector<InstanceGroupConfig>&& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups = std::move(value); }
171 
172     /**
173      * <p>Configuration for the instance groups in a cluster.</p>
174      */
WithInstanceGroups(const Aws::Vector<InstanceGroupConfig> & value)175     inline JobFlowInstancesConfig& WithInstanceGroups(const Aws::Vector<InstanceGroupConfig>& value) { SetInstanceGroups(value); return *this;}
176 
177     /**
178      * <p>Configuration for the instance groups in a cluster.</p>
179      */
WithInstanceGroups(Aws::Vector<InstanceGroupConfig> && value)180     inline JobFlowInstancesConfig& WithInstanceGroups(Aws::Vector<InstanceGroupConfig>&& value) { SetInstanceGroups(std::move(value)); return *this;}
181 
182     /**
183      * <p>Configuration for the instance groups in a cluster.</p>
184      */
AddInstanceGroups(const InstanceGroupConfig & value)185     inline JobFlowInstancesConfig& AddInstanceGroups(const InstanceGroupConfig& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups.push_back(value); return *this; }
186 
187     /**
188      * <p>Configuration for the instance groups in a cluster.</p>
189      */
AddInstanceGroups(InstanceGroupConfig && value)190     inline JobFlowInstancesConfig& AddInstanceGroups(InstanceGroupConfig&& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups.push_back(std::move(value)); return *this; }
191 
192 
193     /**
194      *  <p>The instance fleet configuration is available only in Amazon EMR
195      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
196      * EC2 instances and instance configurations for clusters that use the instance
197      * fleet configuration.</p>
198      */
GetInstanceFleets()199     inline const Aws::Vector<InstanceFleetConfig>& GetInstanceFleets() const{ return m_instanceFleets; }
200 
201     /**
202      *  <p>The instance fleet configuration is available only in Amazon EMR
203      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
204      * EC2 instances and instance configurations for clusters that use the instance
205      * fleet configuration.</p>
206      */
InstanceFleetsHasBeenSet()207     inline bool InstanceFleetsHasBeenSet() const { return m_instanceFleetsHasBeenSet; }
208 
209     /**
210      *  <p>The instance fleet configuration is available only in Amazon EMR
211      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
212      * EC2 instances and instance configurations for clusters that use the instance
213      * fleet configuration.</p>
214      */
SetInstanceFleets(const Aws::Vector<InstanceFleetConfig> & value)215     inline void SetInstanceFleets(const Aws::Vector<InstanceFleetConfig>& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets = value; }
216 
217     /**
218      *  <p>The instance fleet configuration is available only in Amazon EMR
219      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
220      * EC2 instances and instance configurations for clusters that use the instance
221      * fleet configuration.</p>
222      */
SetInstanceFleets(Aws::Vector<InstanceFleetConfig> && value)223     inline void SetInstanceFleets(Aws::Vector<InstanceFleetConfig>&& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets = std::move(value); }
224 
225     /**
226      *  <p>The instance fleet configuration is available only in Amazon EMR
227      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
228      * EC2 instances and instance configurations for clusters that use the instance
229      * fleet configuration.</p>
230      */
WithInstanceFleets(const Aws::Vector<InstanceFleetConfig> & value)231     inline JobFlowInstancesConfig& WithInstanceFleets(const Aws::Vector<InstanceFleetConfig>& value) { SetInstanceFleets(value); return *this;}
232 
233     /**
234      *  <p>The instance fleet configuration is available only in Amazon EMR
235      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
236      * EC2 instances and instance configurations for clusters that use the instance
237      * fleet configuration.</p>
238      */
WithInstanceFleets(Aws::Vector<InstanceFleetConfig> && value)239     inline JobFlowInstancesConfig& WithInstanceFleets(Aws::Vector<InstanceFleetConfig>&& value) { SetInstanceFleets(std::move(value)); return *this;}
240 
241     /**
242      *  <p>The instance fleet configuration is available only in Amazon EMR
243      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
244      * EC2 instances and instance configurations for clusters that use the instance
245      * fleet configuration.</p>
246      */
AddInstanceFleets(const InstanceFleetConfig & value)247     inline JobFlowInstancesConfig& AddInstanceFleets(const InstanceFleetConfig& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets.push_back(value); return *this; }
248 
249     /**
250      *  <p>The instance fleet configuration is available only in Amazon EMR
251      * versions 4.8.0 and later, excluding 5.0.x versions.</p>  <p>Describes the
252      * EC2 instances and instance configurations for clusters that use the instance
253      * fleet configuration.</p>
254      */
AddInstanceFleets(InstanceFleetConfig && value)255     inline JobFlowInstancesConfig& AddInstanceFleets(InstanceFleetConfig&& value) { m_instanceFleetsHasBeenSet = true; m_instanceFleets.push_back(std::move(value)); return *this; }
256 
257 
258     /**
259      * <p>The name of the EC2 key pair that can be used to connect to the master node
260      * using SSH as the user called "hadoop."</p>
261      */
GetEc2KeyName()262     inline const Aws::String& GetEc2KeyName() const{ return m_ec2KeyName; }
263 
264     /**
265      * <p>The name of the EC2 key pair that can be used to connect to the master node
266      * using SSH as the user called "hadoop."</p>
267      */
Ec2KeyNameHasBeenSet()268     inline bool Ec2KeyNameHasBeenSet() const { return m_ec2KeyNameHasBeenSet; }
269 
270     /**
271      * <p>The name of the EC2 key pair that can be used to connect to the master node
272      * using SSH as the user called "hadoop."</p>
273      */
SetEc2KeyName(const Aws::String & value)274     inline void SetEc2KeyName(const Aws::String& value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName = value; }
275 
276     /**
277      * <p>The name of the EC2 key pair that can be used to connect to the master node
278      * using SSH as the user called "hadoop."</p>
279      */
SetEc2KeyName(Aws::String && value)280     inline void SetEc2KeyName(Aws::String&& value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName = std::move(value); }
281 
282     /**
283      * <p>The name of the EC2 key pair that can be used to connect to the master node
284      * using SSH as the user called "hadoop."</p>
285      */
SetEc2KeyName(const char * value)286     inline void SetEc2KeyName(const char* value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName.assign(value); }
287 
288     /**
289      * <p>The name of the EC2 key pair that can be used to connect to the master node
290      * using SSH as the user called "hadoop."</p>
291      */
WithEc2KeyName(const Aws::String & value)292     inline JobFlowInstancesConfig& WithEc2KeyName(const Aws::String& value) { SetEc2KeyName(value); return *this;}
293 
294     /**
295      * <p>The name of the EC2 key pair that can be used to connect to the master node
296      * using SSH as the user called "hadoop."</p>
297      */
WithEc2KeyName(Aws::String && value)298     inline JobFlowInstancesConfig& WithEc2KeyName(Aws::String&& value) { SetEc2KeyName(std::move(value)); return *this;}
299 
300     /**
301      * <p>The name of the EC2 key pair that can be used to connect to the master node
302      * using SSH as the user called "hadoop."</p>
303      */
WithEc2KeyName(const char * value)304     inline JobFlowInstancesConfig& WithEc2KeyName(const char* value) { SetEc2KeyName(value); return *this;}
305 
306 
307     /**
308      * <p>The Availability Zone in which the cluster runs.</p>
309      */
GetPlacement()310     inline const PlacementType& GetPlacement() const{ return m_placement; }
311 
312     /**
313      * <p>The Availability Zone in which the cluster runs.</p>
314      */
PlacementHasBeenSet()315     inline bool PlacementHasBeenSet() const { return m_placementHasBeenSet; }
316 
317     /**
318      * <p>The Availability Zone in which the cluster runs.</p>
319      */
SetPlacement(const PlacementType & value)320     inline void SetPlacement(const PlacementType& value) { m_placementHasBeenSet = true; m_placement = value; }
321 
322     /**
323      * <p>The Availability Zone in which the cluster runs.</p>
324      */
SetPlacement(PlacementType && value)325     inline void SetPlacement(PlacementType&& value) { m_placementHasBeenSet = true; m_placement = std::move(value); }
326 
327     /**
328      * <p>The Availability Zone in which the cluster runs.</p>
329      */
WithPlacement(const PlacementType & value)330     inline JobFlowInstancesConfig& WithPlacement(const PlacementType& value) { SetPlacement(value); return *this;}
331 
332     /**
333      * <p>The Availability Zone in which the cluster runs.</p>
334      */
WithPlacement(PlacementType && value)335     inline JobFlowInstancesConfig& WithPlacement(PlacementType&& value) { SetPlacement(std::move(value)); return *this;}
336 
337 
338     /**
339      * <p>Specifies whether the cluster should remain available after completing all
340      * steps. Defaults to <code>true</code>. For more information about configuring
341      * cluster termination, see <a
342      * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
343      * Cluster Termination</a> in the <i>EMR Management Guide</i>.</p>
344      */
GetKeepJobFlowAliveWhenNoSteps()345     inline bool GetKeepJobFlowAliveWhenNoSteps() const{ return m_keepJobFlowAliveWhenNoSteps; }
346 
347     /**
348      * <p>Specifies whether the cluster should remain available after completing all
349      * steps. Defaults to <code>true</code>. For more information about configuring
350      * cluster termination, see <a
351      * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
352      * Cluster Termination</a> in the <i>EMR Management Guide</i>.</p>
353      */
KeepJobFlowAliveWhenNoStepsHasBeenSet()354     inline bool KeepJobFlowAliveWhenNoStepsHasBeenSet() const { return m_keepJobFlowAliveWhenNoStepsHasBeenSet; }
355 
356     /**
357      * <p>Specifies whether the cluster should remain available after completing all
358      * steps. Defaults to <code>true</code>. For more information about configuring
359      * cluster termination, see <a
360      * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
361      * Cluster Termination</a> in the <i>EMR Management Guide</i>.</p>
362      */
SetKeepJobFlowAliveWhenNoSteps(bool value)363     inline void SetKeepJobFlowAliveWhenNoSteps(bool value) { m_keepJobFlowAliveWhenNoStepsHasBeenSet = true; m_keepJobFlowAliveWhenNoSteps = value; }
364 
365     /**
366      * <p>Specifies whether the cluster should remain available after completing all
367      * steps. Defaults to <code>true</code>. For more information about configuring
368      * cluster termination, see <a
369      * href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control
370      * Cluster Termination</a> in the <i>EMR Management Guide</i>.</p>
371      */
WithKeepJobFlowAliveWhenNoSteps(bool value)372     inline JobFlowInstancesConfig& WithKeepJobFlowAliveWhenNoSteps(bool value) { SetKeepJobFlowAliveWhenNoSteps(value); return *this;}
373 
374 
375     /**
376      * <p>Specifies whether to lock the cluster to prevent the Amazon EC2 instances
377      * from being terminated by API call, user intervention, or in the event of a
378      * job-flow error.</p>
379      */
GetTerminationProtected()380     inline bool GetTerminationProtected() const{ return m_terminationProtected; }
381 
382     /**
383      * <p>Specifies whether to lock the cluster to prevent the Amazon EC2 instances
384      * from being terminated by API call, user intervention, or in the event of a
385      * job-flow error.</p>
386      */
TerminationProtectedHasBeenSet()387     inline bool TerminationProtectedHasBeenSet() const { return m_terminationProtectedHasBeenSet; }
388 
389     /**
390      * <p>Specifies whether to lock the cluster to prevent the Amazon EC2 instances
391      * from being terminated by API call, user intervention, or in the event of a
392      * job-flow error.</p>
393      */
SetTerminationProtected(bool value)394     inline void SetTerminationProtected(bool value) { m_terminationProtectedHasBeenSet = true; m_terminationProtected = value; }
395 
396     /**
397      * <p>Specifies whether to lock the cluster to prevent the Amazon EC2 instances
398      * from being terminated by API call, user intervention, or in the event of a
399      * job-flow error.</p>
400      */
WithTerminationProtected(bool value)401     inline JobFlowInstancesConfig& WithTerminationProtected(bool value) { SetTerminationProtected(value); return *this;}
402 
403 
404     /**
405      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
406      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
407      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
408      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
409      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
410      * the default version of Hadoop for that AMI version is used.</p>
411      */
GetHadoopVersion()412     inline const Aws::String& GetHadoopVersion() const{ return m_hadoopVersion; }
413 
414     /**
415      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
416      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
417      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
418      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
419      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
420      * the default version of Hadoop for that AMI version is used.</p>
421      */
HadoopVersionHasBeenSet()422     inline bool HadoopVersionHasBeenSet() const { return m_hadoopVersionHasBeenSet; }
423 
424     /**
425      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
426      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
427      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
428      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
429      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
430      * the default version of Hadoop for that AMI version is used.</p>
431      */
SetHadoopVersion(const Aws::String & value)432     inline void SetHadoopVersion(const Aws::String& value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion = value; }
433 
434     /**
435      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
436      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
437      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
438      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
439      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
440      * the default version of Hadoop for that AMI version is used.</p>
441      */
SetHadoopVersion(Aws::String && value)442     inline void SetHadoopVersion(Aws::String&& value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion = std::move(value); }
443 
444     /**
445      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
446      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
447      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
448      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
449      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
450      * the default version of Hadoop for that AMI version is used.</p>
451      */
SetHadoopVersion(const char * value)452     inline void SetHadoopVersion(const char* value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion.assign(value); }
453 
454     /**
455      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
456      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
457      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
458      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
459      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
460      * the default version of Hadoop for that AMI version is used.</p>
461      */
WithHadoopVersion(const Aws::String & value)462     inline JobFlowInstancesConfig& WithHadoopVersion(const Aws::String& value) { SetHadoopVersion(value); return *this;}
463 
464     /**
465      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
466      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
467      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
468      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
469      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
470      * the default version of Hadoop for that AMI version is used.</p>
471      */
WithHadoopVersion(Aws::String && value)472     inline JobFlowInstancesConfig& WithHadoopVersion(Aws::String&& value) { SetHadoopVersion(std::move(value)); return *this;}
473 
474     /**
475      * <p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
476      * version for the cluster. Valid inputs are "0.18" (no longer maintained), "0.20"
477      * (no longer maintained), "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or
478      * "2.4.0". If you do not set this value, the default of 0.18 is used, unless the
479      * <code>AmiVersion</code> parameter is set in the RunJobFlow call, in which case
480      * the default version of Hadoop for that AMI version is used.</p>
481      */
WithHadoopVersion(const char * value)482     inline JobFlowInstancesConfig& WithHadoopVersion(const char* value) { SetHadoopVersion(value); return *this;}
483 
484 
485     /**
486      * <p>Applies to clusters that use the uniform instance group configuration. To
487      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
488      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
489      * to launch. If you do not specify this value and your account supports
490      * EC2-Classic, the cluster launches in EC2-Classic.</p>
491      */
GetEc2SubnetId()492     inline const Aws::String& GetEc2SubnetId() const{ return m_ec2SubnetId; }
493 
494     /**
495      * <p>Applies to clusters that use the uniform instance group configuration. To
496      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
497      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
498      * to launch. If you do not specify this value and your account supports
499      * EC2-Classic, the cluster launches in EC2-Classic.</p>
500      */
Ec2SubnetIdHasBeenSet()501     inline bool Ec2SubnetIdHasBeenSet() const { return m_ec2SubnetIdHasBeenSet; }
502 
503     /**
504      * <p>Applies to clusters that use the uniform instance group configuration. To
505      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
506      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
507      * to launch. If you do not specify this value and your account supports
508      * EC2-Classic, the cluster launches in EC2-Classic.</p>
509      */
SetEc2SubnetId(const Aws::String & value)510     inline void SetEc2SubnetId(const Aws::String& value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId = value; }
511 
512     /**
513      * <p>Applies to clusters that use the uniform instance group configuration. To
514      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
515      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
516      * to launch. If you do not specify this value and your account supports
517      * EC2-Classic, the cluster launches in EC2-Classic.</p>
518      */
SetEc2SubnetId(Aws::String && value)519     inline void SetEc2SubnetId(Aws::String&& value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId = std::move(value); }
520 
521     /**
522      * <p>Applies to clusters that use the uniform instance group configuration. To
523      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
524      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
525      * to launch. If you do not specify this value and your account supports
526      * EC2-Classic, the cluster launches in EC2-Classic.</p>
527      */
SetEc2SubnetId(const char * value)528     inline void SetEc2SubnetId(const char* value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId.assign(value); }
529 
530     /**
531      * <p>Applies to clusters that use the uniform instance group configuration. To
532      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
533      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
534      * to launch. If you do not specify this value and your account supports
535      * EC2-Classic, the cluster launches in EC2-Classic.</p>
536      */
WithEc2SubnetId(const Aws::String & value)537     inline JobFlowInstancesConfig& WithEc2SubnetId(const Aws::String& value) { SetEc2SubnetId(value); return *this;}
538 
539     /**
540      * <p>Applies to clusters that use the uniform instance group configuration. To
541      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
542      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
543      * to launch. If you do not specify this value and your account supports
544      * EC2-Classic, the cluster launches in EC2-Classic.</p>
545      */
WithEc2SubnetId(Aws::String && value)546     inline JobFlowInstancesConfig& WithEc2SubnetId(Aws::String&& value) { SetEc2SubnetId(std::move(value)); return *this;}
547 
548     /**
549      * <p>Applies to clusters that use the uniform instance group configuration. To
550      * launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
551      * parameter to the identifier of the Amazon VPC subnet where you want the cluster
552      * to launch. If you do not specify this value and your account supports
553      * EC2-Classic, the cluster launches in EC2-Classic.</p>
554      */
WithEc2SubnetId(const char * value)555     inline JobFlowInstancesConfig& WithEc2SubnetId(const char* value) { SetEc2SubnetId(value); return *this;}
556 
557 
558     /**
559      * <p>Applies to clusters that use the instance fleet configuration. When multiple
560      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
561      * in the optimal subnet.</p>  <p>The instance fleet configuration is
562      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
563      * versions.</p>
564      */
GetEc2SubnetIds()565     inline const Aws::Vector<Aws::String>& GetEc2SubnetIds() const{ return m_ec2SubnetIds; }
566 
567     /**
568      * <p>Applies to clusters that use the instance fleet configuration. When multiple
569      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
570      * in the optimal subnet.</p>  <p>The instance fleet configuration is
571      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
572      * versions.</p>
573      */
Ec2SubnetIdsHasBeenSet()574     inline bool Ec2SubnetIdsHasBeenSet() const { return m_ec2SubnetIdsHasBeenSet; }
575 
576     /**
577      * <p>Applies to clusters that use the instance fleet configuration. When multiple
578      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
579      * in the optimal subnet.</p>  <p>The instance fleet configuration is
580      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
581      * versions.</p>
582      */
SetEc2SubnetIds(const Aws::Vector<Aws::String> & value)583     inline void SetEc2SubnetIds(const Aws::Vector<Aws::String>& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds = value; }
584 
585     /**
586      * <p>Applies to clusters that use the instance fleet configuration. When multiple
587      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
588      * in the optimal subnet.</p>  <p>The instance fleet configuration is
589      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
590      * versions.</p>
591      */
SetEc2SubnetIds(Aws::Vector<Aws::String> && value)592     inline void SetEc2SubnetIds(Aws::Vector<Aws::String>&& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds = std::move(value); }
593 
594     /**
595      * <p>Applies to clusters that use the instance fleet configuration. When multiple
596      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
597      * in the optimal subnet.</p>  <p>The instance fleet configuration is
598      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
599      * versions.</p>
600      */
WithEc2SubnetIds(const Aws::Vector<Aws::String> & value)601     inline JobFlowInstancesConfig& WithEc2SubnetIds(const Aws::Vector<Aws::String>& value) { SetEc2SubnetIds(value); return *this;}
602 
603     /**
604      * <p>Applies to clusters that use the instance fleet configuration. When multiple
605      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
606      * in the optimal subnet.</p>  <p>The instance fleet configuration is
607      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
608      * versions.</p>
609      */
WithEc2SubnetIds(Aws::Vector<Aws::String> && value)610     inline JobFlowInstancesConfig& WithEc2SubnetIds(Aws::Vector<Aws::String>&& value) { SetEc2SubnetIds(std::move(value)); return *this;}
611 
612     /**
613      * <p>Applies to clusters that use the instance fleet configuration. When multiple
614      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
615      * in the optimal subnet.</p>  <p>The instance fleet configuration is
616      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
617      * versions.</p>
618      */
AddEc2SubnetIds(const Aws::String & value)619     inline JobFlowInstancesConfig& AddEc2SubnetIds(const Aws::String& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds.push_back(value); return *this; }
620 
621     /**
622      * <p>Applies to clusters that use the instance fleet configuration. When multiple
623      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
624      * in the optimal subnet.</p>  <p>The instance fleet configuration is
625      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
626      * versions.</p>
627      */
AddEc2SubnetIds(Aws::String && value)628     inline JobFlowInstancesConfig& AddEc2SubnetIds(Aws::String&& value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds.push_back(std::move(value)); return *this; }
629 
630     /**
631      * <p>Applies to clusters that use the instance fleet configuration. When multiple
632      * EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
633      * in the optimal subnet.</p>  <p>The instance fleet configuration is
634      * available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x
635      * versions.</p>
636      */
AddEc2SubnetIds(const char * value)637     inline JobFlowInstancesConfig& AddEc2SubnetIds(const char* value) { m_ec2SubnetIdsHasBeenSet = true; m_ec2SubnetIds.push_back(value); return *this; }
638 
639 
640     /**
641      * <p>The identifier of the Amazon EC2 security group for the master node. If you
642      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
643      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
644      */
GetEmrManagedMasterSecurityGroup()645     inline const Aws::String& GetEmrManagedMasterSecurityGroup() const{ return m_emrManagedMasterSecurityGroup; }
646 
647     /**
648      * <p>The identifier of the Amazon EC2 security group for the master node. If you
649      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
650      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
651      */
EmrManagedMasterSecurityGroupHasBeenSet()652     inline bool EmrManagedMasterSecurityGroupHasBeenSet() const { return m_emrManagedMasterSecurityGroupHasBeenSet; }
653 
654     /**
655      * <p>The identifier of the Amazon EC2 security group for the master node. If you
656      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
657      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
658      */
SetEmrManagedMasterSecurityGroup(const Aws::String & value)659     inline void SetEmrManagedMasterSecurityGroup(const Aws::String& value) { m_emrManagedMasterSecurityGroupHasBeenSet = true; m_emrManagedMasterSecurityGroup = value; }
660 
661     /**
662      * <p>The identifier of the Amazon EC2 security group for the master node. If you
663      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
664      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
665      */
SetEmrManagedMasterSecurityGroup(Aws::String && value)666     inline void SetEmrManagedMasterSecurityGroup(Aws::String&& value) { m_emrManagedMasterSecurityGroupHasBeenSet = true; m_emrManagedMasterSecurityGroup = std::move(value); }
667 
668     /**
669      * <p>The identifier of the Amazon EC2 security group for the master node. If you
670      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
671      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
672      */
SetEmrManagedMasterSecurityGroup(const char * value)673     inline void SetEmrManagedMasterSecurityGroup(const char* value) { m_emrManagedMasterSecurityGroupHasBeenSet = true; m_emrManagedMasterSecurityGroup.assign(value); }
674 
675     /**
676      * <p>The identifier of the Amazon EC2 security group for the master node. If you
677      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
678      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
679      */
WithEmrManagedMasterSecurityGroup(const Aws::String & value)680     inline JobFlowInstancesConfig& WithEmrManagedMasterSecurityGroup(const Aws::String& value) { SetEmrManagedMasterSecurityGroup(value); return *this;}
681 
682     /**
683      * <p>The identifier of the Amazon EC2 security group for the master node. If you
684      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
685      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
686      */
WithEmrManagedMasterSecurityGroup(Aws::String && value)687     inline JobFlowInstancesConfig& WithEmrManagedMasterSecurityGroup(Aws::String&& value) { SetEmrManagedMasterSecurityGroup(std::move(value)); return *this;}
688 
689     /**
690      * <p>The identifier of the Amazon EC2 security group for the master node. If you
691      * specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify
692      * <code>EmrManagedSlaveSecurityGroup</code>.</p>
693      */
WithEmrManagedMasterSecurityGroup(const char * value)694     inline JobFlowInstancesConfig& WithEmrManagedMasterSecurityGroup(const char* value) { SetEmrManagedMasterSecurityGroup(value); return *this;}
695 
696 
697     /**
698      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
699      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
700      * <code>EmrManagedMasterSecurityGroup</code>.</p>
701      */
GetEmrManagedSlaveSecurityGroup()702     inline const Aws::String& GetEmrManagedSlaveSecurityGroup() const{ return m_emrManagedSlaveSecurityGroup; }
703 
704     /**
705      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
706      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
707      * <code>EmrManagedMasterSecurityGroup</code>.</p>
708      */
EmrManagedSlaveSecurityGroupHasBeenSet()709     inline bool EmrManagedSlaveSecurityGroupHasBeenSet() const { return m_emrManagedSlaveSecurityGroupHasBeenSet; }
710 
711     /**
712      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
713      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
714      * <code>EmrManagedMasterSecurityGroup</code>.</p>
715      */
SetEmrManagedSlaveSecurityGroup(const Aws::String & value)716     inline void SetEmrManagedSlaveSecurityGroup(const Aws::String& value) { m_emrManagedSlaveSecurityGroupHasBeenSet = true; m_emrManagedSlaveSecurityGroup = value; }
717 
718     /**
719      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
720      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
721      * <code>EmrManagedMasterSecurityGroup</code>.</p>
722      */
SetEmrManagedSlaveSecurityGroup(Aws::String && value)723     inline void SetEmrManagedSlaveSecurityGroup(Aws::String&& value) { m_emrManagedSlaveSecurityGroupHasBeenSet = true; m_emrManagedSlaveSecurityGroup = std::move(value); }
724 
725     /**
726      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
727      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
728      * <code>EmrManagedMasterSecurityGroup</code>.</p>
729      */
SetEmrManagedSlaveSecurityGroup(const char * value)730     inline void SetEmrManagedSlaveSecurityGroup(const char* value) { m_emrManagedSlaveSecurityGroupHasBeenSet = true; m_emrManagedSlaveSecurityGroup.assign(value); }
731 
732     /**
733      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
734      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
735      * <code>EmrManagedMasterSecurityGroup</code>.</p>
736      */
WithEmrManagedSlaveSecurityGroup(const Aws::String & value)737     inline JobFlowInstancesConfig& WithEmrManagedSlaveSecurityGroup(const Aws::String& value) { SetEmrManagedSlaveSecurityGroup(value); return *this;}
738 
739     /**
740      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
741      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
742      * <code>EmrManagedMasterSecurityGroup</code>.</p>
743      */
WithEmrManagedSlaveSecurityGroup(Aws::String && value)744     inline JobFlowInstancesConfig& WithEmrManagedSlaveSecurityGroup(Aws::String&& value) { SetEmrManagedSlaveSecurityGroup(std::move(value)); return *this;}
745 
746     /**
747      * <p>The identifier of the Amazon EC2 security group for the core and task nodes.
748      * If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify
749      * <code>EmrManagedMasterSecurityGroup</code>.</p>
750      */
WithEmrManagedSlaveSecurityGroup(const char * value)751     inline JobFlowInstancesConfig& WithEmrManagedSlaveSecurityGroup(const char* value) { SetEmrManagedSlaveSecurityGroup(value); return *this;}
752 
753 
754     /**
755      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
756      * access clusters in VPC private subnets.</p>
757      */
GetServiceAccessSecurityGroup()758     inline const Aws::String& GetServiceAccessSecurityGroup() const{ return m_serviceAccessSecurityGroup; }
759 
760     /**
761      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
762      * access clusters in VPC private subnets.</p>
763      */
ServiceAccessSecurityGroupHasBeenSet()764     inline bool ServiceAccessSecurityGroupHasBeenSet() const { return m_serviceAccessSecurityGroupHasBeenSet; }
765 
766     /**
767      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
768      * access clusters in VPC private subnets.</p>
769      */
SetServiceAccessSecurityGroup(const Aws::String & value)770     inline void SetServiceAccessSecurityGroup(const Aws::String& value) { m_serviceAccessSecurityGroupHasBeenSet = true; m_serviceAccessSecurityGroup = value; }
771 
772     /**
773      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
774      * access clusters in VPC private subnets.</p>
775      */
SetServiceAccessSecurityGroup(Aws::String && value)776     inline void SetServiceAccessSecurityGroup(Aws::String&& value) { m_serviceAccessSecurityGroupHasBeenSet = true; m_serviceAccessSecurityGroup = std::move(value); }
777 
778     /**
779      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
780      * access clusters in VPC private subnets.</p>
781      */
SetServiceAccessSecurityGroup(const char * value)782     inline void SetServiceAccessSecurityGroup(const char* value) { m_serviceAccessSecurityGroupHasBeenSet = true; m_serviceAccessSecurityGroup.assign(value); }
783 
784     /**
785      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
786      * access clusters in VPC private subnets.</p>
787      */
WithServiceAccessSecurityGroup(const Aws::String & value)788     inline JobFlowInstancesConfig& WithServiceAccessSecurityGroup(const Aws::String& value) { SetServiceAccessSecurityGroup(value); return *this;}
789 
790     /**
791      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
792      * access clusters in VPC private subnets.</p>
793      */
WithServiceAccessSecurityGroup(Aws::String && value)794     inline JobFlowInstancesConfig& WithServiceAccessSecurityGroup(Aws::String&& value) { SetServiceAccessSecurityGroup(std::move(value)); return *this;}
795 
796     /**
797      * <p>The identifier of the Amazon EC2 security group for the Amazon EMR service to
798      * access clusters in VPC private subnets.</p>
799      */
WithServiceAccessSecurityGroup(const char * value)800     inline JobFlowInstancesConfig& WithServiceAccessSecurityGroup(const char* value) { SetServiceAccessSecurityGroup(value); return *this;}
801 
802 
803     /**
804      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
805      */
GetAdditionalMasterSecurityGroups()806     inline const Aws::Vector<Aws::String>& GetAdditionalMasterSecurityGroups() const{ return m_additionalMasterSecurityGroups; }
807 
808     /**
809      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
810      */
AdditionalMasterSecurityGroupsHasBeenSet()811     inline bool AdditionalMasterSecurityGroupsHasBeenSet() const { return m_additionalMasterSecurityGroupsHasBeenSet; }
812 
813     /**
814      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
815      */
SetAdditionalMasterSecurityGroups(const Aws::Vector<Aws::String> & value)816     inline void SetAdditionalMasterSecurityGroups(const Aws::Vector<Aws::String>& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups = value; }
817 
818     /**
819      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
820      */
SetAdditionalMasterSecurityGroups(Aws::Vector<Aws::String> && value)821     inline void SetAdditionalMasterSecurityGroups(Aws::Vector<Aws::String>&& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups = std::move(value); }
822 
823     /**
824      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
825      */
WithAdditionalMasterSecurityGroups(const Aws::Vector<Aws::String> & value)826     inline JobFlowInstancesConfig& WithAdditionalMasterSecurityGroups(const Aws::Vector<Aws::String>& value) { SetAdditionalMasterSecurityGroups(value); return *this;}
827 
828     /**
829      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
830      */
WithAdditionalMasterSecurityGroups(Aws::Vector<Aws::String> && value)831     inline JobFlowInstancesConfig& WithAdditionalMasterSecurityGroups(Aws::Vector<Aws::String>&& value) { SetAdditionalMasterSecurityGroups(std::move(value)); return *this;}
832 
833     /**
834      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
835      */
AddAdditionalMasterSecurityGroups(const Aws::String & value)836     inline JobFlowInstancesConfig& AddAdditionalMasterSecurityGroups(const Aws::String& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups.push_back(value); return *this; }
837 
838     /**
839      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
840      */
AddAdditionalMasterSecurityGroups(Aws::String && value)841     inline JobFlowInstancesConfig& AddAdditionalMasterSecurityGroups(Aws::String&& value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups.push_back(std::move(value)); return *this; }
842 
843     /**
844      * <p>A list of additional Amazon EC2 security group IDs for the master node.</p>
845      */
AddAdditionalMasterSecurityGroups(const char * value)846     inline JobFlowInstancesConfig& AddAdditionalMasterSecurityGroups(const char* value) { m_additionalMasterSecurityGroupsHasBeenSet = true; m_additionalMasterSecurityGroups.push_back(value); return *this; }
847 
848 
849     /**
850      * <p>A list of additional Amazon EC2 security group IDs for the core and task
851      * nodes.</p>
852      */
GetAdditionalSlaveSecurityGroups()853     inline const Aws::Vector<Aws::String>& GetAdditionalSlaveSecurityGroups() const{ return m_additionalSlaveSecurityGroups; }
854 
855     /**
856      * <p>A list of additional Amazon EC2 security group IDs for the core and task
857      * nodes.</p>
858      */
AdditionalSlaveSecurityGroupsHasBeenSet()859     inline bool AdditionalSlaveSecurityGroupsHasBeenSet() const { return m_additionalSlaveSecurityGroupsHasBeenSet; }
860 
861     /**
862      * <p>A list of additional Amazon EC2 security group IDs for the core and task
863      * nodes.</p>
864      */
SetAdditionalSlaveSecurityGroups(const Aws::Vector<Aws::String> & value)865     inline void SetAdditionalSlaveSecurityGroups(const Aws::Vector<Aws::String>& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups = value; }
866 
867     /**
868      * <p>A list of additional Amazon EC2 security group IDs for the core and task
869      * nodes.</p>
870      */
SetAdditionalSlaveSecurityGroups(Aws::Vector<Aws::String> && value)871     inline void SetAdditionalSlaveSecurityGroups(Aws::Vector<Aws::String>&& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups = std::move(value); }
872 
873     /**
874      * <p>A list of additional Amazon EC2 security group IDs for the core and task
875      * nodes.</p>
876      */
WithAdditionalSlaveSecurityGroups(const Aws::Vector<Aws::String> & value)877     inline JobFlowInstancesConfig& WithAdditionalSlaveSecurityGroups(const Aws::Vector<Aws::String>& value) { SetAdditionalSlaveSecurityGroups(value); return *this;}
878 
879     /**
880      * <p>A list of additional Amazon EC2 security group IDs for the core and task
881      * nodes.</p>
882      */
WithAdditionalSlaveSecurityGroups(Aws::Vector<Aws::String> && value)883     inline JobFlowInstancesConfig& WithAdditionalSlaveSecurityGroups(Aws::Vector<Aws::String>&& value) { SetAdditionalSlaveSecurityGroups(std::move(value)); return *this;}
884 
885     /**
886      * <p>A list of additional Amazon EC2 security group IDs for the core and task
887      * nodes.</p>
888      */
AddAdditionalSlaveSecurityGroups(const Aws::String & value)889     inline JobFlowInstancesConfig& AddAdditionalSlaveSecurityGroups(const Aws::String& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups.push_back(value); return *this; }
890 
891     /**
892      * <p>A list of additional Amazon EC2 security group IDs for the core and task
893      * nodes.</p>
894      */
AddAdditionalSlaveSecurityGroups(Aws::String && value)895     inline JobFlowInstancesConfig& AddAdditionalSlaveSecurityGroups(Aws::String&& value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups.push_back(std::move(value)); return *this; }
896 
897     /**
898      * <p>A list of additional Amazon EC2 security group IDs for the core and task
899      * nodes.</p>
900      */
AddAdditionalSlaveSecurityGroups(const char * value)901     inline JobFlowInstancesConfig& AddAdditionalSlaveSecurityGroups(const char* value) { m_additionalSlaveSecurityGroupsHasBeenSet = true; m_additionalSlaveSecurityGroups.push_back(value); return *this; }
902 
903   private:
904 
905     Aws::String m_masterInstanceType;
906     bool m_masterInstanceTypeHasBeenSet;
907 
908     Aws::String m_slaveInstanceType;
909     bool m_slaveInstanceTypeHasBeenSet;
910 
911     int m_instanceCount;
912     bool m_instanceCountHasBeenSet;
913 
914     Aws::Vector<InstanceGroupConfig> m_instanceGroups;
915     bool m_instanceGroupsHasBeenSet;
916 
917     Aws::Vector<InstanceFleetConfig> m_instanceFleets;
918     bool m_instanceFleetsHasBeenSet;
919 
920     Aws::String m_ec2KeyName;
921     bool m_ec2KeyNameHasBeenSet;
922 
923     PlacementType m_placement;
924     bool m_placementHasBeenSet;
925 
926     bool m_keepJobFlowAliveWhenNoSteps;
927     bool m_keepJobFlowAliveWhenNoStepsHasBeenSet;
928 
929     bool m_terminationProtected;
930     bool m_terminationProtectedHasBeenSet;
931 
932     Aws::String m_hadoopVersion;
933     bool m_hadoopVersionHasBeenSet;
934 
935     Aws::String m_ec2SubnetId;
936     bool m_ec2SubnetIdHasBeenSet;
937 
938     Aws::Vector<Aws::String> m_ec2SubnetIds;
939     bool m_ec2SubnetIdsHasBeenSet;
940 
941     Aws::String m_emrManagedMasterSecurityGroup;
942     bool m_emrManagedMasterSecurityGroupHasBeenSet;
943 
944     Aws::String m_emrManagedSlaveSecurityGroup;
945     bool m_emrManagedSlaveSecurityGroupHasBeenSet;
946 
947     Aws::String m_serviceAccessSecurityGroup;
948     bool m_serviceAccessSecurityGroupHasBeenSet;
949 
950     Aws::Vector<Aws::String> m_additionalMasterSecurityGroups;
951     bool m_additionalMasterSecurityGroupsHasBeenSet;
952 
953     Aws::Vector<Aws::String> m_additionalSlaveSecurityGroups;
954     bool m_additionalSlaveSecurityGroupsHasBeenSet;
955   };
956 
957 } // namespace Model
958 } // namespace EMR
959 } // namespace Aws
960