1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package emr
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
14)
15
16const opAddInstanceFleet = "AddInstanceFleet"
17
18// AddInstanceFleetRequest generates a "aws/request.Request" representing the
19// client's request for the AddInstanceFleet operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See AddInstanceFleet for more information on using the AddInstanceFleet
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the AddInstanceFleetRequest method.
34//    req, resp := client.AddInstanceFleetRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet
42func (c *EMR) AddInstanceFleetRequest(input *AddInstanceFleetInput) (req *request.Request, output *AddInstanceFleetOutput) {
43	op := &request.Operation{
44		Name:       opAddInstanceFleet,
45		HTTPMethod: "POST",
46		HTTPPath:   "/",
47	}
48
49	if input == nil {
50		input = &AddInstanceFleetInput{}
51	}
52
53	output = &AddInstanceFleetOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// AddInstanceFleet API operation for Amazon Elastic MapReduce.
59//
60// Adds an instance fleet to a running cluster.
61//
62// The instance fleet configuration is available only in Amazon EMR versions
63// 4.8.0 and later, excluding 5.0.x.
64//
65// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
66// with awserr.Error's Code and Message methods to get detailed information about
67// the error.
68//
69// See the AWS API reference guide for Amazon Elastic MapReduce's
70// API operation AddInstanceFleet for usage and error information.
71//
72// Returned Error Codes:
73//   * ErrCodeInternalServerException "InternalServerException"
74//   This exception occurs when there is an internal failure in the EMR service.
75//
76//   * ErrCodeInvalidRequestException "InvalidRequestException"
77//   This exception occurs when there is something wrong with user input.
78//
79// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet
80func (c *EMR) AddInstanceFleet(input *AddInstanceFleetInput) (*AddInstanceFleetOutput, error) {
81	req, out := c.AddInstanceFleetRequest(input)
82	return out, req.Send()
83}
84
85// AddInstanceFleetWithContext is the same as AddInstanceFleet with the addition of
86// the ability to pass a context and additional request options.
87//
88// See AddInstanceFleet for details on how to use this API operation.
89//
90// The context must be non-nil and will be used for request cancellation. If
91// the context is nil a panic will occur. In the future the SDK may create
92// sub-contexts for http.Requests. See https://golang.org/pkg/context/
93// for more information on using Contexts.
94func (c *EMR) AddInstanceFleetWithContext(ctx aws.Context, input *AddInstanceFleetInput, opts ...request.Option) (*AddInstanceFleetOutput, error) {
95	req, out := c.AddInstanceFleetRequest(input)
96	req.SetContext(ctx)
97	req.ApplyOptions(opts...)
98	return out, req.Send()
99}
100
101const opAddInstanceGroups = "AddInstanceGroups"
102
103// AddInstanceGroupsRequest generates a "aws/request.Request" representing the
104// client's request for the AddInstanceGroups operation. The "output" return
105// value will be populated with the request's response once the request completes
106// successfully.
107//
108// Use "Send" method on the returned Request to send the API call to the service.
109// the "output" return value is not valid until after Send returns without error.
110//
111// See AddInstanceGroups for more information on using the AddInstanceGroups
112// API call, and error handling.
113//
114// This method is useful when you want to inject custom logic or configuration
115// into the SDK's request lifecycle. Such as custom headers, or retry logic.
116//
117//
118//    // Example sending a request using the AddInstanceGroupsRequest method.
119//    req, resp := client.AddInstanceGroupsRequest(params)
120//
121//    err := req.Send()
122//    if err == nil { // resp is now filled
123//        fmt.Println(resp)
124//    }
125//
126// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups
127func (c *EMR) AddInstanceGroupsRequest(input *AddInstanceGroupsInput) (req *request.Request, output *AddInstanceGroupsOutput) {
128	op := &request.Operation{
129		Name:       opAddInstanceGroups,
130		HTTPMethod: "POST",
131		HTTPPath:   "/",
132	}
133
134	if input == nil {
135		input = &AddInstanceGroupsInput{}
136	}
137
138	output = &AddInstanceGroupsOutput{}
139	req = c.newRequest(op, input, output)
140	return
141}
142
143// AddInstanceGroups API operation for Amazon Elastic MapReduce.
144//
145// Adds one or more instance groups to a running cluster.
146//
147// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
148// with awserr.Error's Code and Message methods to get detailed information about
149// the error.
150//
151// See the AWS API reference guide for Amazon Elastic MapReduce's
152// API operation AddInstanceGroups for usage and error information.
153//
154// Returned Error Codes:
155//   * ErrCodeInternalServerError "InternalServerError"
156//   Indicates that an error occurred while processing the request and that the
157//   request was not completed.
158//
159// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups
160func (c *EMR) AddInstanceGroups(input *AddInstanceGroupsInput) (*AddInstanceGroupsOutput, error) {
161	req, out := c.AddInstanceGroupsRequest(input)
162	return out, req.Send()
163}
164
165// AddInstanceGroupsWithContext is the same as AddInstanceGroups with the addition of
166// the ability to pass a context and additional request options.
167//
168// See AddInstanceGroups for details on how to use this API operation.
169//
170// The context must be non-nil and will be used for request cancellation. If
171// the context is nil a panic will occur. In the future the SDK may create
172// sub-contexts for http.Requests. See https://golang.org/pkg/context/
173// for more information on using Contexts.
174func (c *EMR) AddInstanceGroupsWithContext(ctx aws.Context, input *AddInstanceGroupsInput, opts ...request.Option) (*AddInstanceGroupsOutput, error) {
175	req, out := c.AddInstanceGroupsRequest(input)
176	req.SetContext(ctx)
177	req.ApplyOptions(opts...)
178	return out, req.Send()
179}
180
181const opAddJobFlowSteps = "AddJobFlowSteps"
182
183// AddJobFlowStepsRequest generates a "aws/request.Request" representing the
184// client's request for the AddJobFlowSteps operation. The "output" return
185// value will be populated with the request's response once the request completes
186// successfully.
187//
188// Use "Send" method on the returned Request to send the API call to the service.
189// the "output" return value is not valid until after Send returns without error.
190//
191// See AddJobFlowSteps for more information on using the AddJobFlowSteps
192// API call, and error handling.
193//
194// This method is useful when you want to inject custom logic or configuration
195// into the SDK's request lifecycle. Such as custom headers, or retry logic.
196//
197//
198//    // Example sending a request using the AddJobFlowStepsRequest method.
199//    req, resp := client.AddJobFlowStepsRequest(params)
200//
201//    err := req.Send()
202//    if err == nil { // resp is now filled
203//        fmt.Println(resp)
204//    }
205//
206// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps
207func (c *EMR) AddJobFlowStepsRequest(input *AddJobFlowStepsInput) (req *request.Request, output *AddJobFlowStepsOutput) {
208	op := &request.Operation{
209		Name:       opAddJobFlowSteps,
210		HTTPMethod: "POST",
211		HTTPPath:   "/",
212	}
213
214	if input == nil {
215		input = &AddJobFlowStepsInput{}
216	}
217
218	output = &AddJobFlowStepsOutput{}
219	req = c.newRequest(op, input, output)
220	return
221}
222
223// AddJobFlowSteps API operation for Amazon Elastic MapReduce.
224//
225// AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps
226// are allowed in each job flow.
227//
228// If your cluster is long-running (such as a Hive data warehouse) or complex,
229// you may require more than 256 steps to process your data. You can bypass
230// the 256-step limitation in various ways, including using SSH to connect to
231// the master node and submitting queries directly to the software running on
232// the master node, such as Hive and Hadoop. For more information on how to
233// do this, see Add More than 256 Steps to a Cluster (https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html)
234// in the Amazon EMR Management Guide.
235//
236// A step specifies the location of a JAR file stored either on the master node
237// of the cluster or in Amazon S3. Each step is performed by the main function
238// of the main class of the JAR file. The main class can be specified either
239// in the manifest of the JAR or by using the MainFunction parameter of the
240// step.
241//
242// Amazon EMR executes each step in the order listed. For a step to be considered
243// complete, the main function must exit with a zero exit code and all Hadoop
244// jobs started while the step was running must have completed and run successfully.
245//
246// You can only add steps to a cluster that is in one of the following states:
247// STARTING, BOOTSTRAPPING, RUNNING, or WAITING.
248//
249// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
250// with awserr.Error's Code and Message methods to get detailed information about
251// the error.
252//
253// See the AWS API reference guide for Amazon Elastic MapReduce's
254// API operation AddJobFlowSteps for usage and error information.
255//
256// Returned Error Codes:
257//   * ErrCodeInternalServerError "InternalServerError"
258//   Indicates that an error occurred while processing the request and that the
259//   request was not completed.
260//
261// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps
262func (c *EMR) AddJobFlowSteps(input *AddJobFlowStepsInput) (*AddJobFlowStepsOutput, error) {
263	req, out := c.AddJobFlowStepsRequest(input)
264	return out, req.Send()
265}
266
267// AddJobFlowStepsWithContext is the same as AddJobFlowSteps with the addition of
268// the ability to pass a context and additional request options.
269//
270// See AddJobFlowSteps for details on how to use this API operation.
271//
272// The context must be non-nil and will be used for request cancellation. If
273// the context is nil a panic will occur. In the future the SDK may create
274// sub-contexts for http.Requests. See https://golang.org/pkg/context/
275// for more information on using Contexts.
276func (c *EMR) AddJobFlowStepsWithContext(ctx aws.Context, input *AddJobFlowStepsInput, opts ...request.Option) (*AddJobFlowStepsOutput, error) {
277	req, out := c.AddJobFlowStepsRequest(input)
278	req.SetContext(ctx)
279	req.ApplyOptions(opts...)
280	return out, req.Send()
281}
282
283const opAddTags = "AddTags"
284
285// AddTagsRequest generates a "aws/request.Request" representing the
286// client's request for the AddTags operation. The "output" return
287// value will be populated with the request's response once the request completes
288// successfully.
289//
290// Use "Send" method on the returned Request to send the API call to the service.
291// the "output" return value is not valid until after Send returns without error.
292//
293// See AddTags for more information on using the AddTags
294// API call, and error handling.
295//
296// This method is useful when you want to inject custom logic or configuration
297// into the SDK's request lifecycle. Such as custom headers, or retry logic.
298//
299//
300//    // Example sending a request using the AddTagsRequest method.
301//    req, resp := client.AddTagsRequest(params)
302//
303//    err := req.Send()
304//    if err == nil { // resp is now filled
305//        fmt.Println(resp)
306//    }
307//
308// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags
309func (c *EMR) AddTagsRequest(input *AddTagsInput) (req *request.Request, output *AddTagsOutput) {
310	op := &request.Operation{
311		Name:       opAddTags,
312		HTTPMethod: "POST",
313		HTTPPath:   "/",
314	}
315
316	if input == nil {
317		input = &AddTagsInput{}
318	}
319
320	output = &AddTagsOutput{}
321	req = c.newRequest(op, input, output)
322	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
323	return
324}
325
326// AddTags API operation for Amazon Elastic MapReduce.
327//
328// Adds tags to an Amazon EMR resource. Tags make it easier to associate clusters
329// in various ways, such as grouping clusters to track your Amazon EMR resource
330// allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
331//
332// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
333// with awserr.Error's Code and Message methods to get detailed information about
334// the error.
335//
336// See the AWS API reference guide for Amazon Elastic MapReduce's
337// API operation AddTags for usage and error information.
338//
339// Returned Error Codes:
340//   * ErrCodeInternalServerException "InternalServerException"
341//   This exception occurs when there is an internal failure in the EMR service.
342//
343//   * ErrCodeInvalidRequestException "InvalidRequestException"
344//   This exception occurs when there is something wrong with user input.
345//
346// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags
347func (c *EMR) AddTags(input *AddTagsInput) (*AddTagsOutput, error) {
348	req, out := c.AddTagsRequest(input)
349	return out, req.Send()
350}
351
352// AddTagsWithContext is the same as AddTags with the addition of
353// the ability to pass a context and additional request options.
354//
355// See AddTags for details on how to use this API operation.
356//
357// The context must be non-nil and will be used for request cancellation. If
358// the context is nil a panic will occur. In the future the SDK may create
359// sub-contexts for http.Requests. See https://golang.org/pkg/context/
360// for more information on using Contexts.
361func (c *EMR) AddTagsWithContext(ctx aws.Context, input *AddTagsInput, opts ...request.Option) (*AddTagsOutput, error) {
362	req, out := c.AddTagsRequest(input)
363	req.SetContext(ctx)
364	req.ApplyOptions(opts...)
365	return out, req.Send()
366}
367
368const opCancelSteps = "CancelSteps"
369
370// CancelStepsRequest generates a "aws/request.Request" representing the
371// client's request for the CancelSteps operation. The "output" return
372// value will be populated with the request's response once the request completes
373// successfully.
374//
375// Use "Send" method on the returned Request to send the API call to the service.
376// the "output" return value is not valid until after Send returns without error.
377//
378// See CancelSteps for more information on using the CancelSteps
379// API call, and error handling.
380//
381// This method is useful when you want to inject custom logic or configuration
382// into the SDK's request lifecycle. Such as custom headers, or retry logic.
383//
384//
385//    // Example sending a request using the CancelStepsRequest method.
386//    req, resp := client.CancelStepsRequest(params)
387//
388//    err := req.Send()
389//    if err == nil { // resp is now filled
390//        fmt.Println(resp)
391//    }
392//
393// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps
394func (c *EMR) CancelStepsRequest(input *CancelStepsInput) (req *request.Request, output *CancelStepsOutput) {
395	op := &request.Operation{
396		Name:       opCancelSteps,
397		HTTPMethod: "POST",
398		HTTPPath:   "/",
399	}
400
401	if input == nil {
402		input = &CancelStepsInput{}
403	}
404
405	output = &CancelStepsOutput{}
406	req = c.newRequest(op, input, output)
407	return
408}
409
410// CancelSteps API operation for Amazon Elastic MapReduce.
411//
412// Cancels a pending step or steps in a running cluster. Available only in Amazon
413// EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps
414// are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous;
415// it does not guarantee a step will be canceled, even if the request is successfully
416// submitted. You can only cancel steps that are in a PENDING state.
417//
418// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
419// with awserr.Error's Code and Message methods to get detailed information about
420// the error.
421//
422// See the AWS API reference guide for Amazon Elastic MapReduce's
423// API operation CancelSteps for usage and error information.
424//
425// Returned Error Codes:
426//   * ErrCodeInternalServerError "InternalServerError"
427//   Indicates that an error occurred while processing the request and that the
428//   request was not completed.
429//
430//   * ErrCodeInvalidRequestException "InvalidRequestException"
431//   This exception occurs when there is something wrong with user input.
432//
433// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps
434func (c *EMR) CancelSteps(input *CancelStepsInput) (*CancelStepsOutput, error) {
435	req, out := c.CancelStepsRequest(input)
436	return out, req.Send()
437}
438
439// CancelStepsWithContext is the same as CancelSteps with the addition of
440// the ability to pass a context and additional request options.
441//
442// See CancelSteps for details on how to use this API operation.
443//
444// The context must be non-nil and will be used for request cancellation. If
445// the context is nil a panic will occur. In the future the SDK may create
446// sub-contexts for http.Requests. See https://golang.org/pkg/context/
447// for more information on using Contexts.
448func (c *EMR) CancelStepsWithContext(ctx aws.Context, input *CancelStepsInput, opts ...request.Option) (*CancelStepsOutput, error) {
449	req, out := c.CancelStepsRequest(input)
450	req.SetContext(ctx)
451	req.ApplyOptions(opts...)
452	return out, req.Send()
453}
454
455const opCreateSecurityConfiguration = "CreateSecurityConfiguration"
456
457// CreateSecurityConfigurationRequest generates a "aws/request.Request" representing the
458// client's request for the CreateSecurityConfiguration operation. The "output" return
459// value will be populated with the request's response once the request completes
460// successfully.
461//
462// Use "Send" method on the returned Request to send the API call to the service.
463// the "output" return value is not valid until after Send returns without error.
464//
465// See CreateSecurityConfiguration for more information on using the CreateSecurityConfiguration
466// API call, and error handling.
467//
468// This method is useful when you want to inject custom logic or configuration
469// into the SDK's request lifecycle. Such as custom headers, or retry logic.
470//
471//
472//    // Example sending a request using the CreateSecurityConfigurationRequest method.
473//    req, resp := client.CreateSecurityConfigurationRequest(params)
474//
475//    err := req.Send()
476//    if err == nil { // resp is now filled
477//        fmt.Println(resp)
478//    }
479//
480// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration
481func (c *EMR) CreateSecurityConfigurationRequest(input *CreateSecurityConfigurationInput) (req *request.Request, output *CreateSecurityConfigurationOutput) {
482	op := &request.Operation{
483		Name:       opCreateSecurityConfiguration,
484		HTTPMethod: "POST",
485		HTTPPath:   "/",
486	}
487
488	if input == nil {
489		input = &CreateSecurityConfigurationInput{}
490	}
491
492	output = &CreateSecurityConfigurationOutput{}
493	req = c.newRequest(op, input, output)
494	return
495}
496
497// CreateSecurityConfiguration API operation for Amazon Elastic MapReduce.
498//
499// Creates a security configuration, which is stored in the service and can
500// be specified when a cluster is created.
501//
502// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
503// with awserr.Error's Code and Message methods to get detailed information about
504// the error.
505//
506// See the AWS API reference guide for Amazon Elastic MapReduce's
507// API operation CreateSecurityConfiguration for usage and error information.
508//
509// Returned Error Codes:
510//   * ErrCodeInternalServerException "InternalServerException"
511//   This exception occurs when there is an internal failure in the EMR service.
512//
513//   * ErrCodeInvalidRequestException "InvalidRequestException"
514//   This exception occurs when there is something wrong with user input.
515//
516// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration
517func (c *EMR) CreateSecurityConfiguration(input *CreateSecurityConfigurationInput) (*CreateSecurityConfigurationOutput, error) {
518	req, out := c.CreateSecurityConfigurationRequest(input)
519	return out, req.Send()
520}
521
522// CreateSecurityConfigurationWithContext is the same as CreateSecurityConfiguration with the addition of
523// the ability to pass a context and additional request options.
524//
525// See CreateSecurityConfiguration for details on how to use this API operation.
526//
527// The context must be non-nil and will be used for request cancellation. If
528// the context is nil a panic will occur. In the future the SDK may create
529// sub-contexts for http.Requests. See https://golang.org/pkg/context/
530// for more information on using Contexts.
531func (c *EMR) CreateSecurityConfigurationWithContext(ctx aws.Context, input *CreateSecurityConfigurationInput, opts ...request.Option) (*CreateSecurityConfigurationOutput, error) {
532	req, out := c.CreateSecurityConfigurationRequest(input)
533	req.SetContext(ctx)
534	req.ApplyOptions(opts...)
535	return out, req.Send()
536}
537
538const opDeleteSecurityConfiguration = "DeleteSecurityConfiguration"
539
540// DeleteSecurityConfigurationRequest generates a "aws/request.Request" representing the
541// client's request for the DeleteSecurityConfiguration operation. The "output" return
542// value will be populated with the request's response once the request completes
543// successfully.
544//
545// Use "Send" method on the returned Request to send the API call to the service.
546// the "output" return value is not valid until after Send returns without error.
547//
548// See DeleteSecurityConfiguration for more information on using the DeleteSecurityConfiguration
549// API call, and error handling.
550//
551// This method is useful when you want to inject custom logic or configuration
552// into the SDK's request lifecycle. Such as custom headers, or retry logic.
553//
554//
555//    // Example sending a request using the DeleteSecurityConfigurationRequest method.
556//    req, resp := client.DeleteSecurityConfigurationRequest(params)
557//
558//    err := req.Send()
559//    if err == nil { // resp is now filled
560//        fmt.Println(resp)
561//    }
562//
563// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration
564func (c *EMR) DeleteSecurityConfigurationRequest(input *DeleteSecurityConfigurationInput) (req *request.Request, output *DeleteSecurityConfigurationOutput) {
565	op := &request.Operation{
566		Name:       opDeleteSecurityConfiguration,
567		HTTPMethod: "POST",
568		HTTPPath:   "/",
569	}
570
571	if input == nil {
572		input = &DeleteSecurityConfigurationInput{}
573	}
574
575	output = &DeleteSecurityConfigurationOutput{}
576	req = c.newRequest(op, input, output)
577	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
578	return
579}
580
581// DeleteSecurityConfiguration API operation for Amazon Elastic MapReduce.
582//
583// Deletes a security configuration.
584//
585// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
586// with awserr.Error's Code and Message methods to get detailed information about
587// the error.
588//
589// See the AWS API reference guide for Amazon Elastic MapReduce's
590// API operation DeleteSecurityConfiguration for usage and error information.
591//
592// Returned Error Codes:
593//   * ErrCodeInternalServerException "InternalServerException"
594//   This exception occurs when there is an internal failure in the EMR service.
595//
596//   * ErrCodeInvalidRequestException "InvalidRequestException"
597//   This exception occurs when there is something wrong with user input.
598//
599// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration
600func (c *EMR) DeleteSecurityConfiguration(input *DeleteSecurityConfigurationInput) (*DeleteSecurityConfigurationOutput, error) {
601	req, out := c.DeleteSecurityConfigurationRequest(input)
602	return out, req.Send()
603}
604
605// DeleteSecurityConfigurationWithContext is the same as DeleteSecurityConfiguration with the addition of
606// the ability to pass a context and additional request options.
607//
608// See DeleteSecurityConfiguration for details on how to use this API operation.
609//
610// The context must be non-nil and will be used for request cancellation. If
611// the context is nil a panic will occur. In the future the SDK may create
612// sub-contexts for http.Requests. See https://golang.org/pkg/context/
613// for more information on using Contexts.
614func (c *EMR) DeleteSecurityConfigurationWithContext(ctx aws.Context, input *DeleteSecurityConfigurationInput, opts ...request.Option) (*DeleteSecurityConfigurationOutput, error) {
615	req, out := c.DeleteSecurityConfigurationRequest(input)
616	req.SetContext(ctx)
617	req.ApplyOptions(opts...)
618	return out, req.Send()
619}
620
621const opDescribeCluster = "DescribeCluster"
622
623// DescribeClusterRequest generates a "aws/request.Request" representing the
624// client's request for the DescribeCluster operation. The "output" return
625// value will be populated with the request's response once the request completes
626// successfully.
627//
628// Use "Send" method on the returned Request to send the API call to the service.
629// the "output" return value is not valid until after Send returns without error.
630//
631// See DescribeCluster for more information on using the DescribeCluster
632// API call, and error handling.
633//
634// This method is useful when you want to inject custom logic or configuration
635// into the SDK's request lifecycle. Such as custom headers, or retry logic.
636//
637//
638//    // Example sending a request using the DescribeClusterRequest method.
639//    req, resp := client.DescribeClusterRequest(params)
640//
641//    err := req.Send()
642//    if err == nil { // resp is now filled
643//        fmt.Println(resp)
644//    }
645//
646// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster
647func (c *EMR) DescribeClusterRequest(input *DescribeClusterInput) (req *request.Request, output *DescribeClusterOutput) {
648	op := &request.Operation{
649		Name:       opDescribeCluster,
650		HTTPMethod: "POST",
651		HTTPPath:   "/",
652	}
653
654	if input == nil {
655		input = &DescribeClusterInput{}
656	}
657
658	output = &DescribeClusterOutput{}
659	req = c.newRequest(op, input, output)
660	return
661}
662
663// DescribeCluster API operation for Amazon Elastic MapReduce.
664//
665// Provides cluster-level details including status, hardware and software configuration,
666// VPC settings, and so on.
667//
668// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
669// with awserr.Error's Code and Message methods to get detailed information about
670// the error.
671//
672// See the AWS API reference guide for Amazon Elastic MapReduce's
673// API operation DescribeCluster for usage and error information.
674//
675// Returned Error Codes:
676//   * ErrCodeInternalServerException "InternalServerException"
677//   This exception occurs when there is an internal failure in the EMR service.
678//
679//   * ErrCodeInvalidRequestException "InvalidRequestException"
680//   This exception occurs when there is something wrong with user input.
681//
682// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster
683func (c *EMR) DescribeCluster(input *DescribeClusterInput) (*DescribeClusterOutput, error) {
684	req, out := c.DescribeClusterRequest(input)
685	return out, req.Send()
686}
687
688// DescribeClusterWithContext is the same as DescribeCluster with the addition of
689// the ability to pass a context and additional request options.
690//
691// See DescribeCluster for details on how to use this API operation.
692//
693// The context must be non-nil and will be used for request cancellation. If
694// the context is nil a panic will occur. In the future the SDK may create
695// sub-contexts for http.Requests. See https://golang.org/pkg/context/
696// for more information on using Contexts.
697func (c *EMR) DescribeClusterWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.Option) (*DescribeClusterOutput, error) {
698	req, out := c.DescribeClusterRequest(input)
699	req.SetContext(ctx)
700	req.ApplyOptions(opts...)
701	return out, req.Send()
702}
703
704const opDescribeJobFlows = "DescribeJobFlows"
705
706// DescribeJobFlowsRequest generates a "aws/request.Request" representing the
707// client's request for the DescribeJobFlows operation. The "output" return
708// value will be populated with the request's response once the request completes
709// successfully.
710//
711// Use "Send" method on the returned Request to send the API call to the service.
712// the "output" return value is not valid until after Send returns without error.
713//
714// See DescribeJobFlows for more information on using the DescribeJobFlows
715// API call, and error handling.
716//
717// This method is useful when you want to inject custom logic or configuration
718// into the SDK's request lifecycle. Such as custom headers, or retry logic.
719//
720//
721//    // Example sending a request using the DescribeJobFlowsRequest method.
722//    req, resp := client.DescribeJobFlowsRequest(params)
723//
724//    err := req.Send()
725//    if err == nil { // resp is now filled
726//        fmt.Println(resp)
727//    }
728//
729// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeJobFlows
730//
731// Deprecated: DescribeJobFlows has been deprecated
732func (c *EMR) DescribeJobFlowsRequest(input *DescribeJobFlowsInput) (req *request.Request, output *DescribeJobFlowsOutput) {
733	if c.Client.Config.Logger != nil {
734		c.Client.Config.Logger.Log("This operation, DescribeJobFlows, has been deprecated")
735	}
736	op := &request.Operation{
737		Name:       opDescribeJobFlows,
738		HTTPMethod: "POST",
739		HTTPPath:   "/",
740	}
741
742	if input == nil {
743		input = &DescribeJobFlowsInput{}
744	}
745
746	output = &DescribeJobFlowsOutput{}
747	req = c.newRequest(op, input, output)
748	return
749}
750
751// DescribeJobFlows API operation for Amazon Elastic MapReduce.
752//
753// This API is deprecated and will eventually be removed. We recommend you use
754// ListClusters, DescribeCluster, ListSteps, ListInstanceGroups and ListBootstrapActions
755// instead.
756//
757// DescribeJobFlows returns a list of job flows that match all of the supplied
758// parameters. The parameters can include a list of job flow IDs, job flow states,
759// and restrictions on job flow creation date and time.
760//
761// Regardless of supplied parameters, only job flows created within the last
762// two months are returned.
763//
764// If no parameters are supplied, then job flows matching either of the following
765// criteria are returned:
766//
767//    * Job flows created and completed in the last two weeks
768//
769//    * Job flows created within the last two months that are in one of the
770//    following states: RUNNING, WAITING, SHUTTING_DOWN, STARTING
771//
772// Amazon EMR can return a maximum of 512 job flow descriptions.
773//
774// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
775// with awserr.Error's Code and Message methods to get detailed information about
776// the error.
777//
778// See the AWS API reference guide for Amazon Elastic MapReduce's
779// API operation DescribeJobFlows for usage and error information.
780//
781// Returned Error Codes:
782//   * ErrCodeInternalServerError "InternalServerError"
783//   Indicates that an error occurred while processing the request and that the
784//   request was not completed.
785//
786// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeJobFlows
787//
788// Deprecated: DescribeJobFlows has been deprecated
789func (c *EMR) DescribeJobFlows(input *DescribeJobFlowsInput) (*DescribeJobFlowsOutput, error) {
790	req, out := c.DescribeJobFlowsRequest(input)
791	return out, req.Send()
792}
793
794// DescribeJobFlowsWithContext is the same as DescribeJobFlows with the addition of
795// the ability to pass a context and additional request options.
796//
797// See DescribeJobFlows for details on how to use this API operation.
798//
799// The context must be non-nil and will be used for request cancellation. If
800// the context is nil a panic will occur. In the future the SDK may create
801// sub-contexts for http.Requests. See https://golang.org/pkg/context/
802// for more information on using Contexts.
803//
804// Deprecated: DescribeJobFlowsWithContext has been deprecated
805func (c *EMR) DescribeJobFlowsWithContext(ctx aws.Context, input *DescribeJobFlowsInput, opts ...request.Option) (*DescribeJobFlowsOutput, error) {
806	req, out := c.DescribeJobFlowsRequest(input)
807	req.SetContext(ctx)
808	req.ApplyOptions(opts...)
809	return out, req.Send()
810}
811
812const opDescribeSecurityConfiguration = "DescribeSecurityConfiguration"
813
814// DescribeSecurityConfigurationRequest generates a "aws/request.Request" representing the
815// client's request for the DescribeSecurityConfiguration operation. The "output" return
816// value will be populated with the request's response once the request completes
817// successfully.
818//
819// Use "Send" method on the returned Request to send the API call to the service.
820// the "output" return value is not valid until after Send returns without error.
821//
822// See DescribeSecurityConfiguration for more information on using the DescribeSecurityConfiguration
823// API call, and error handling.
824//
825// This method is useful when you want to inject custom logic or configuration
826// into the SDK's request lifecycle. Such as custom headers, or retry logic.
827//
828//
829//    // Example sending a request using the DescribeSecurityConfigurationRequest method.
830//    req, resp := client.DescribeSecurityConfigurationRequest(params)
831//
832//    err := req.Send()
833//    if err == nil { // resp is now filled
834//        fmt.Println(resp)
835//    }
836//
837// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration
838func (c *EMR) DescribeSecurityConfigurationRequest(input *DescribeSecurityConfigurationInput) (req *request.Request, output *DescribeSecurityConfigurationOutput) {
839	op := &request.Operation{
840		Name:       opDescribeSecurityConfiguration,
841		HTTPMethod: "POST",
842		HTTPPath:   "/",
843	}
844
845	if input == nil {
846		input = &DescribeSecurityConfigurationInput{}
847	}
848
849	output = &DescribeSecurityConfigurationOutput{}
850	req = c.newRequest(op, input, output)
851	return
852}
853
854// DescribeSecurityConfiguration API operation for Amazon Elastic MapReduce.
855//
856// Provides the details of a security configuration by returning the configuration
857// JSON.
858//
859// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
860// with awserr.Error's Code and Message methods to get detailed information about
861// the error.
862//
863// See the AWS API reference guide for Amazon Elastic MapReduce's
864// API operation DescribeSecurityConfiguration for usage and error information.
865//
866// Returned Error Codes:
867//   * ErrCodeInternalServerException "InternalServerException"
868//   This exception occurs when there is an internal failure in the EMR service.
869//
870//   * ErrCodeInvalidRequestException "InvalidRequestException"
871//   This exception occurs when there is something wrong with user input.
872//
873// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration
874func (c *EMR) DescribeSecurityConfiguration(input *DescribeSecurityConfigurationInput) (*DescribeSecurityConfigurationOutput, error) {
875	req, out := c.DescribeSecurityConfigurationRequest(input)
876	return out, req.Send()
877}
878
879// DescribeSecurityConfigurationWithContext is the same as DescribeSecurityConfiguration with the addition of
880// the ability to pass a context and additional request options.
881//
882// See DescribeSecurityConfiguration for details on how to use this API operation.
883//
884// The context must be non-nil and will be used for request cancellation. If
885// the context is nil a panic will occur. In the future the SDK may create
886// sub-contexts for http.Requests. See https://golang.org/pkg/context/
887// for more information on using Contexts.
888func (c *EMR) DescribeSecurityConfigurationWithContext(ctx aws.Context, input *DescribeSecurityConfigurationInput, opts ...request.Option) (*DescribeSecurityConfigurationOutput, error) {
889	req, out := c.DescribeSecurityConfigurationRequest(input)
890	req.SetContext(ctx)
891	req.ApplyOptions(opts...)
892	return out, req.Send()
893}
894
895const opDescribeStep = "DescribeStep"
896
897// DescribeStepRequest generates a "aws/request.Request" representing the
898// client's request for the DescribeStep operation. The "output" return
899// value will be populated with the request's response once the request completes
900// successfully.
901//
902// Use "Send" method on the returned Request to send the API call to the service.
903// the "output" return value is not valid until after Send returns without error.
904//
905// See DescribeStep for more information on using the DescribeStep
906// API call, and error handling.
907//
908// This method is useful when you want to inject custom logic or configuration
909// into the SDK's request lifecycle. Such as custom headers, or retry logic.
910//
911//
912//    // Example sending a request using the DescribeStepRequest method.
913//    req, resp := client.DescribeStepRequest(params)
914//
915//    err := req.Send()
916//    if err == nil { // resp is now filled
917//        fmt.Println(resp)
918//    }
919//
920// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep
921func (c *EMR) DescribeStepRequest(input *DescribeStepInput) (req *request.Request, output *DescribeStepOutput) {
922	op := &request.Operation{
923		Name:       opDescribeStep,
924		HTTPMethod: "POST",
925		HTTPPath:   "/",
926	}
927
928	if input == nil {
929		input = &DescribeStepInput{}
930	}
931
932	output = &DescribeStepOutput{}
933	req = c.newRequest(op, input, output)
934	return
935}
936
937// DescribeStep API operation for Amazon Elastic MapReduce.
938//
939// Provides more detail about the cluster step.
940//
941// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
942// with awserr.Error's Code and Message methods to get detailed information about
943// the error.
944//
945// See the AWS API reference guide for Amazon Elastic MapReduce's
946// API operation DescribeStep for usage and error information.
947//
948// Returned Error Codes:
949//   * ErrCodeInternalServerException "InternalServerException"
950//   This exception occurs when there is an internal failure in the EMR service.
951//
952//   * ErrCodeInvalidRequestException "InvalidRequestException"
953//   This exception occurs when there is something wrong with user input.
954//
955// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep
956func (c *EMR) DescribeStep(input *DescribeStepInput) (*DescribeStepOutput, error) {
957	req, out := c.DescribeStepRequest(input)
958	return out, req.Send()
959}
960
961// DescribeStepWithContext is the same as DescribeStep with the addition of
962// the ability to pass a context and additional request options.
963//
964// See DescribeStep for details on how to use this API operation.
965//
966// The context must be non-nil and will be used for request cancellation. If
967// the context is nil a panic will occur. In the future the SDK may create
968// sub-contexts for http.Requests. See https://golang.org/pkg/context/
969// for more information on using Contexts.
970func (c *EMR) DescribeStepWithContext(ctx aws.Context, input *DescribeStepInput, opts ...request.Option) (*DescribeStepOutput, error) {
971	req, out := c.DescribeStepRequest(input)
972	req.SetContext(ctx)
973	req.ApplyOptions(opts...)
974	return out, req.Send()
975}
976
977const opGetBlockPublicAccessConfiguration = "GetBlockPublicAccessConfiguration"
978
979// GetBlockPublicAccessConfigurationRequest generates a "aws/request.Request" representing the
980// client's request for the GetBlockPublicAccessConfiguration operation. The "output" return
981// value will be populated with the request's response once the request completes
982// successfully.
983//
984// Use "Send" method on the returned Request to send the API call to the service.
985// the "output" return value is not valid until after Send returns without error.
986//
987// See GetBlockPublicAccessConfiguration for more information on using the GetBlockPublicAccessConfiguration
988// API call, and error handling.
989//
990// This method is useful when you want to inject custom logic or configuration
991// into the SDK's request lifecycle. Such as custom headers, or retry logic.
992//
993//
994//    // Example sending a request using the GetBlockPublicAccessConfigurationRequest method.
995//    req, resp := client.GetBlockPublicAccessConfigurationRequest(params)
996//
997//    err := req.Send()
998//    if err == nil { // resp is now filled
999//        fmt.Println(resp)
1000//    }
1001//
1002// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration
1003func (c *EMR) GetBlockPublicAccessConfigurationRequest(input *GetBlockPublicAccessConfigurationInput) (req *request.Request, output *GetBlockPublicAccessConfigurationOutput) {
1004	op := &request.Operation{
1005		Name:       opGetBlockPublicAccessConfiguration,
1006		HTTPMethod: "POST",
1007		HTTPPath:   "/",
1008	}
1009
1010	if input == nil {
1011		input = &GetBlockPublicAccessConfigurationInput{}
1012	}
1013
1014	output = &GetBlockPublicAccessConfigurationOutput{}
1015	req = c.newRequest(op, input, output)
1016	return
1017}
1018
1019// GetBlockPublicAccessConfiguration API operation for Amazon Elastic MapReduce.
1020//
1021// Returns the Amazon EMR block public access configuration for your AWS account
1022// in the current Region. For more information see Configure Block Public Access
1023// for Amazon EMR (https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html)
1024// in the Amazon EMR Management Guide.
1025//
1026// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1027// with awserr.Error's Code and Message methods to get detailed information about
1028// the error.
1029//
1030// See the AWS API reference guide for Amazon Elastic MapReduce's
1031// API operation GetBlockPublicAccessConfiguration for usage and error information.
1032//
1033// Returned Error Codes:
1034//   * ErrCodeInternalServerException "InternalServerException"
1035//   This exception occurs when there is an internal failure in the EMR service.
1036//
1037//   * ErrCodeInvalidRequestException "InvalidRequestException"
1038//   This exception occurs when there is something wrong with user input.
1039//
1040// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration
1041func (c *EMR) GetBlockPublicAccessConfiguration(input *GetBlockPublicAccessConfigurationInput) (*GetBlockPublicAccessConfigurationOutput, error) {
1042	req, out := c.GetBlockPublicAccessConfigurationRequest(input)
1043	return out, req.Send()
1044}
1045
1046// GetBlockPublicAccessConfigurationWithContext is the same as GetBlockPublicAccessConfiguration with the addition of
1047// the ability to pass a context and additional request options.
1048//
1049// See GetBlockPublicAccessConfiguration for details on how to use this API operation.
1050//
1051// The context must be non-nil and will be used for request cancellation. If
1052// the context is nil a panic will occur. In the future the SDK may create
1053// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1054// for more information on using Contexts.
1055func (c *EMR) GetBlockPublicAccessConfigurationWithContext(ctx aws.Context, input *GetBlockPublicAccessConfigurationInput, opts ...request.Option) (*GetBlockPublicAccessConfigurationOutput, error) {
1056	req, out := c.GetBlockPublicAccessConfigurationRequest(input)
1057	req.SetContext(ctx)
1058	req.ApplyOptions(opts...)
1059	return out, req.Send()
1060}
1061
1062const opListBootstrapActions = "ListBootstrapActions"
1063
1064// ListBootstrapActionsRequest generates a "aws/request.Request" representing the
1065// client's request for the ListBootstrapActions operation. The "output" return
1066// value will be populated with the request's response once the request completes
1067// successfully.
1068//
1069// Use "Send" method on the returned Request to send the API call to the service.
1070// the "output" return value is not valid until after Send returns without error.
1071//
1072// See ListBootstrapActions for more information on using the ListBootstrapActions
1073// API call, and error handling.
1074//
1075// This method is useful when you want to inject custom logic or configuration
1076// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1077//
1078//
1079//    // Example sending a request using the ListBootstrapActionsRequest method.
1080//    req, resp := client.ListBootstrapActionsRequest(params)
1081//
1082//    err := req.Send()
1083//    if err == nil { // resp is now filled
1084//        fmt.Println(resp)
1085//    }
1086//
1087// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions
1088func (c *EMR) ListBootstrapActionsRequest(input *ListBootstrapActionsInput) (req *request.Request, output *ListBootstrapActionsOutput) {
1089	op := &request.Operation{
1090		Name:       opListBootstrapActions,
1091		HTTPMethod: "POST",
1092		HTTPPath:   "/",
1093		Paginator: &request.Paginator{
1094			InputTokens:     []string{"Marker"},
1095			OutputTokens:    []string{"Marker"},
1096			LimitToken:      "",
1097			TruncationToken: "",
1098		},
1099	}
1100
1101	if input == nil {
1102		input = &ListBootstrapActionsInput{}
1103	}
1104
1105	output = &ListBootstrapActionsOutput{}
1106	req = c.newRequest(op, input, output)
1107	return
1108}
1109
1110// ListBootstrapActions API operation for Amazon Elastic MapReduce.
1111//
1112// Provides information about the bootstrap actions associated with a cluster.
1113//
1114// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1115// with awserr.Error's Code and Message methods to get detailed information about
1116// the error.
1117//
1118// See the AWS API reference guide for Amazon Elastic MapReduce's
1119// API operation ListBootstrapActions for usage and error information.
1120//
1121// Returned Error Codes:
1122//   * ErrCodeInternalServerException "InternalServerException"
1123//   This exception occurs when there is an internal failure in the EMR service.
1124//
1125//   * ErrCodeInvalidRequestException "InvalidRequestException"
1126//   This exception occurs when there is something wrong with user input.
1127//
1128// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions
1129func (c *EMR) ListBootstrapActions(input *ListBootstrapActionsInput) (*ListBootstrapActionsOutput, error) {
1130	req, out := c.ListBootstrapActionsRequest(input)
1131	return out, req.Send()
1132}
1133
1134// ListBootstrapActionsWithContext is the same as ListBootstrapActions with the addition of
1135// the ability to pass a context and additional request options.
1136//
1137// See ListBootstrapActions for details on how to use this API operation.
1138//
1139// The context must be non-nil and will be used for request cancellation. If
1140// the context is nil a panic will occur. In the future the SDK may create
1141// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1142// for more information on using Contexts.
1143func (c *EMR) ListBootstrapActionsWithContext(ctx aws.Context, input *ListBootstrapActionsInput, opts ...request.Option) (*ListBootstrapActionsOutput, error) {
1144	req, out := c.ListBootstrapActionsRequest(input)
1145	req.SetContext(ctx)
1146	req.ApplyOptions(opts...)
1147	return out, req.Send()
1148}
1149
1150// ListBootstrapActionsPages iterates over the pages of a ListBootstrapActions operation,
1151// calling the "fn" function with the response data for each page. To stop
1152// iterating, return false from the fn function.
1153//
1154// See ListBootstrapActions method for more information on how to use this operation.
1155//
1156// Note: This operation can generate multiple requests to a service.
1157//
1158//    // Example iterating over at most 3 pages of a ListBootstrapActions operation.
1159//    pageNum := 0
1160//    err := client.ListBootstrapActionsPages(params,
1161//        func(page *emr.ListBootstrapActionsOutput, lastPage bool) bool {
1162//            pageNum++
1163//            fmt.Println(page)
1164//            return pageNum <= 3
1165//        })
1166//
1167func (c *EMR) ListBootstrapActionsPages(input *ListBootstrapActionsInput, fn func(*ListBootstrapActionsOutput, bool) bool) error {
1168	return c.ListBootstrapActionsPagesWithContext(aws.BackgroundContext(), input, fn)
1169}
1170
1171// ListBootstrapActionsPagesWithContext same as ListBootstrapActionsPages except
1172// it takes a Context and allows setting request options on the pages.
1173//
1174// The context must be non-nil and will be used for request cancellation. If
1175// the context is nil a panic will occur. In the future the SDK may create
1176// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1177// for more information on using Contexts.
1178func (c *EMR) ListBootstrapActionsPagesWithContext(ctx aws.Context, input *ListBootstrapActionsInput, fn func(*ListBootstrapActionsOutput, bool) bool, opts ...request.Option) error {
1179	p := request.Pagination{
1180		NewRequest: func() (*request.Request, error) {
1181			var inCpy *ListBootstrapActionsInput
1182			if input != nil {
1183				tmp := *input
1184				inCpy = &tmp
1185			}
1186			req, _ := c.ListBootstrapActionsRequest(inCpy)
1187			req.SetContext(ctx)
1188			req.ApplyOptions(opts...)
1189			return req, nil
1190		},
1191	}
1192
1193	cont := true
1194	for p.Next() && cont {
1195		cont = fn(p.Page().(*ListBootstrapActionsOutput), !p.HasNextPage())
1196	}
1197	return p.Err()
1198}
1199
1200const opListClusters = "ListClusters"
1201
1202// ListClustersRequest generates a "aws/request.Request" representing the
1203// client's request for the ListClusters operation. The "output" return
1204// value will be populated with the request's response once the request completes
1205// successfully.
1206//
1207// Use "Send" method on the returned Request to send the API call to the service.
1208// the "output" return value is not valid until after Send returns without error.
1209//
1210// See ListClusters for more information on using the ListClusters
1211// API call, and error handling.
1212//
1213// This method is useful when you want to inject custom logic or configuration
1214// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1215//
1216//
1217//    // Example sending a request using the ListClustersRequest method.
1218//    req, resp := client.ListClustersRequest(params)
1219//
1220//    err := req.Send()
1221//    if err == nil { // resp is now filled
1222//        fmt.Println(resp)
1223//    }
1224//
1225// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters
1226func (c *EMR) ListClustersRequest(input *ListClustersInput) (req *request.Request, output *ListClustersOutput) {
1227	op := &request.Operation{
1228		Name:       opListClusters,
1229		HTTPMethod: "POST",
1230		HTTPPath:   "/",
1231		Paginator: &request.Paginator{
1232			InputTokens:     []string{"Marker"},
1233			OutputTokens:    []string{"Marker"},
1234			LimitToken:      "",
1235			TruncationToken: "",
1236		},
1237	}
1238
1239	if input == nil {
1240		input = &ListClustersInput{}
1241	}
1242
1243	output = &ListClustersOutput{}
1244	req = c.newRequest(op, input, output)
1245	return
1246}
1247
1248// ListClusters API operation for Amazon Elastic MapReduce.
1249//
1250// Provides the status of all clusters visible to this AWS account. Allows you
1251// to filter the list of clusters based on certain criteria; for example, filtering
1252// by cluster creation date and time or by status. This call returns a maximum
1253// of 50 clusters per call, but returns a marker to track the paging of the
1254// cluster list across multiple ListClusters calls.
1255//
1256// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1257// with awserr.Error's Code and Message methods to get detailed information about
1258// the error.
1259//
1260// See the AWS API reference guide for Amazon Elastic MapReduce's
1261// API operation ListClusters for usage and error information.
1262//
1263// Returned Error Codes:
1264//   * ErrCodeInternalServerException "InternalServerException"
1265//   This exception occurs when there is an internal failure in the EMR service.
1266//
1267//   * ErrCodeInvalidRequestException "InvalidRequestException"
1268//   This exception occurs when there is something wrong with user input.
1269//
1270// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters
1271func (c *EMR) ListClusters(input *ListClustersInput) (*ListClustersOutput, error) {
1272	req, out := c.ListClustersRequest(input)
1273	return out, req.Send()
1274}
1275
1276// ListClustersWithContext is the same as ListClusters with the addition of
1277// the ability to pass a context and additional request options.
1278//
1279// See ListClusters for details on how to use this API operation.
1280//
1281// The context must be non-nil and will be used for request cancellation. If
1282// the context is nil a panic will occur. In the future the SDK may create
1283// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1284// for more information on using Contexts.
1285func (c *EMR) ListClustersWithContext(ctx aws.Context, input *ListClustersInput, opts ...request.Option) (*ListClustersOutput, error) {
1286	req, out := c.ListClustersRequest(input)
1287	req.SetContext(ctx)
1288	req.ApplyOptions(opts...)
1289	return out, req.Send()
1290}
1291
1292// ListClustersPages iterates over the pages of a ListClusters operation,
1293// calling the "fn" function with the response data for each page. To stop
1294// iterating, return false from the fn function.
1295//
1296// See ListClusters method for more information on how to use this operation.
1297//
1298// Note: This operation can generate multiple requests to a service.
1299//
1300//    // Example iterating over at most 3 pages of a ListClusters operation.
1301//    pageNum := 0
1302//    err := client.ListClustersPages(params,
1303//        func(page *emr.ListClustersOutput, lastPage bool) bool {
1304//            pageNum++
1305//            fmt.Println(page)
1306//            return pageNum <= 3
1307//        })
1308//
1309func (c *EMR) ListClustersPages(input *ListClustersInput, fn func(*ListClustersOutput, bool) bool) error {
1310	return c.ListClustersPagesWithContext(aws.BackgroundContext(), input, fn)
1311}
1312
1313// ListClustersPagesWithContext same as ListClustersPages except
1314// it takes a Context and allows setting request options on the pages.
1315//
1316// The context must be non-nil and will be used for request cancellation. If
1317// the context is nil a panic will occur. In the future the SDK may create
1318// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1319// for more information on using Contexts.
1320func (c *EMR) ListClustersPagesWithContext(ctx aws.Context, input *ListClustersInput, fn func(*ListClustersOutput, bool) bool, opts ...request.Option) error {
1321	p := request.Pagination{
1322		NewRequest: func() (*request.Request, error) {
1323			var inCpy *ListClustersInput
1324			if input != nil {
1325				tmp := *input
1326				inCpy = &tmp
1327			}
1328			req, _ := c.ListClustersRequest(inCpy)
1329			req.SetContext(ctx)
1330			req.ApplyOptions(opts...)
1331			return req, nil
1332		},
1333	}
1334
1335	cont := true
1336	for p.Next() && cont {
1337		cont = fn(p.Page().(*ListClustersOutput), !p.HasNextPage())
1338	}
1339	return p.Err()
1340}
1341
1342const opListInstanceFleets = "ListInstanceFleets"
1343
1344// ListInstanceFleetsRequest generates a "aws/request.Request" representing the
1345// client's request for the ListInstanceFleets operation. The "output" return
1346// value will be populated with the request's response once the request completes
1347// successfully.
1348//
1349// Use "Send" method on the returned Request to send the API call to the service.
1350// the "output" return value is not valid until after Send returns without error.
1351//
1352// See ListInstanceFleets for more information on using the ListInstanceFleets
1353// API call, and error handling.
1354//
1355// This method is useful when you want to inject custom logic or configuration
1356// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1357//
1358//
1359//    // Example sending a request using the ListInstanceFleetsRequest method.
1360//    req, resp := client.ListInstanceFleetsRequest(params)
1361//
1362//    err := req.Send()
1363//    if err == nil { // resp is now filled
1364//        fmt.Println(resp)
1365//    }
1366//
1367// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets
1368func (c *EMR) ListInstanceFleetsRequest(input *ListInstanceFleetsInput) (req *request.Request, output *ListInstanceFleetsOutput) {
1369	op := &request.Operation{
1370		Name:       opListInstanceFleets,
1371		HTTPMethod: "POST",
1372		HTTPPath:   "/",
1373		Paginator: &request.Paginator{
1374			InputTokens:     []string{"Marker"},
1375			OutputTokens:    []string{"Marker"},
1376			LimitToken:      "",
1377			TruncationToken: "",
1378		},
1379	}
1380
1381	if input == nil {
1382		input = &ListInstanceFleetsInput{}
1383	}
1384
1385	output = &ListInstanceFleetsOutput{}
1386	req = c.newRequest(op, input, output)
1387	return
1388}
1389
1390// ListInstanceFleets API operation for Amazon Elastic MapReduce.
1391//
1392// Lists all available details about the instance fleets in a cluster.
1393//
1394// The instance fleet configuration is available only in Amazon EMR versions
1395// 4.8.0 and later, excluding 5.0.x versions.
1396//
1397// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1398// with awserr.Error's Code and Message methods to get detailed information about
1399// the error.
1400//
1401// See the AWS API reference guide for Amazon Elastic MapReduce's
1402// API operation ListInstanceFleets for usage and error information.
1403//
1404// Returned Error Codes:
1405//   * ErrCodeInternalServerException "InternalServerException"
1406//   This exception occurs when there is an internal failure in the EMR service.
1407//
1408//   * ErrCodeInvalidRequestException "InvalidRequestException"
1409//   This exception occurs when there is something wrong with user input.
1410//
1411// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets
1412func (c *EMR) ListInstanceFleets(input *ListInstanceFleetsInput) (*ListInstanceFleetsOutput, error) {
1413	req, out := c.ListInstanceFleetsRequest(input)
1414	return out, req.Send()
1415}
1416
1417// ListInstanceFleetsWithContext is the same as ListInstanceFleets with the addition of
1418// the ability to pass a context and additional request options.
1419//
1420// See ListInstanceFleets for details on how to use this API operation.
1421//
1422// The context must be non-nil and will be used for request cancellation. If
1423// the context is nil a panic will occur. In the future the SDK may create
1424// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1425// for more information on using Contexts.
1426func (c *EMR) ListInstanceFleetsWithContext(ctx aws.Context, input *ListInstanceFleetsInput, opts ...request.Option) (*ListInstanceFleetsOutput, error) {
1427	req, out := c.ListInstanceFleetsRequest(input)
1428	req.SetContext(ctx)
1429	req.ApplyOptions(opts...)
1430	return out, req.Send()
1431}
1432
1433// ListInstanceFleetsPages iterates over the pages of a ListInstanceFleets operation,
1434// calling the "fn" function with the response data for each page. To stop
1435// iterating, return false from the fn function.
1436//
1437// See ListInstanceFleets method for more information on how to use this operation.
1438//
1439// Note: This operation can generate multiple requests to a service.
1440//
1441//    // Example iterating over at most 3 pages of a ListInstanceFleets operation.
1442//    pageNum := 0
1443//    err := client.ListInstanceFleetsPages(params,
1444//        func(page *emr.ListInstanceFleetsOutput, lastPage bool) bool {
1445//            pageNum++
1446//            fmt.Println(page)
1447//            return pageNum <= 3
1448//        })
1449//
1450func (c *EMR) ListInstanceFleetsPages(input *ListInstanceFleetsInput, fn func(*ListInstanceFleetsOutput, bool) bool) error {
1451	return c.ListInstanceFleetsPagesWithContext(aws.BackgroundContext(), input, fn)
1452}
1453
1454// ListInstanceFleetsPagesWithContext same as ListInstanceFleetsPages except
1455// it takes a Context and allows setting request options on the pages.
1456//
1457// The context must be non-nil and will be used for request cancellation. If
1458// the context is nil a panic will occur. In the future the SDK may create
1459// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1460// for more information on using Contexts.
1461func (c *EMR) ListInstanceFleetsPagesWithContext(ctx aws.Context, input *ListInstanceFleetsInput, fn func(*ListInstanceFleetsOutput, bool) bool, opts ...request.Option) error {
1462	p := request.Pagination{
1463		NewRequest: func() (*request.Request, error) {
1464			var inCpy *ListInstanceFleetsInput
1465			if input != nil {
1466				tmp := *input
1467				inCpy = &tmp
1468			}
1469			req, _ := c.ListInstanceFleetsRequest(inCpy)
1470			req.SetContext(ctx)
1471			req.ApplyOptions(opts...)
1472			return req, nil
1473		},
1474	}
1475
1476	cont := true
1477	for p.Next() && cont {
1478		cont = fn(p.Page().(*ListInstanceFleetsOutput), !p.HasNextPage())
1479	}
1480	return p.Err()
1481}
1482
1483const opListInstanceGroups = "ListInstanceGroups"
1484
1485// ListInstanceGroupsRequest generates a "aws/request.Request" representing the
1486// client's request for the ListInstanceGroups operation. The "output" return
1487// value will be populated with the request's response once the request completes
1488// successfully.
1489//
1490// Use "Send" method on the returned Request to send the API call to the service.
1491// the "output" return value is not valid until after Send returns without error.
1492//
1493// See ListInstanceGroups for more information on using the ListInstanceGroups
1494// API call, and error handling.
1495//
1496// This method is useful when you want to inject custom logic or configuration
1497// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1498//
1499//
1500//    // Example sending a request using the ListInstanceGroupsRequest method.
1501//    req, resp := client.ListInstanceGroupsRequest(params)
1502//
1503//    err := req.Send()
1504//    if err == nil { // resp is now filled
1505//        fmt.Println(resp)
1506//    }
1507//
1508// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups
1509func (c *EMR) ListInstanceGroupsRequest(input *ListInstanceGroupsInput) (req *request.Request, output *ListInstanceGroupsOutput) {
1510	op := &request.Operation{
1511		Name:       opListInstanceGroups,
1512		HTTPMethod: "POST",
1513		HTTPPath:   "/",
1514		Paginator: &request.Paginator{
1515			InputTokens:     []string{"Marker"},
1516			OutputTokens:    []string{"Marker"},
1517			LimitToken:      "",
1518			TruncationToken: "",
1519		},
1520	}
1521
1522	if input == nil {
1523		input = &ListInstanceGroupsInput{}
1524	}
1525
1526	output = &ListInstanceGroupsOutput{}
1527	req = c.newRequest(op, input, output)
1528	return
1529}
1530
1531// ListInstanceGroups API operation for Amazon Elastic MapReduce.
1532//
1533// Provides all available details about the instance groups in a cluster.
1534//
1535// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1536// with awserr.Error's Code and Message methods to get detailed information about
1537// the error.
1538//
1539// See the AWS API reference guide for Amazon Elastic MapReduce's
1540// API operation ListInstanceGroups for usage and error information.
1541//
1542// Returned Error Codes:
1543//   * ErrCodeInternalServerException "InternalServerException"
1544//   This exception occurs when there is an internal failure in the EMR service.
1545//
1546//   * ErrCodeInvalidRequestException "InvalidRequestException"
1547//   This exception occurs when there is something wrong with user input.
1548//
1549// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups
1550func (c *EMR) ListInstanceGroups(input *ListInstanceGroupsInput) (*ListInstanceGroupsOutput, error) {
1551	req, out := c.ListInstanceGroupsRequest(input)
1552	return out, req.Send()
1553}
1554
1555// ListInstanceGroupsWithContext is the same as ListInstanceGroups with the addition of
1556// the ability to pass a context and additional request options.
1557//
1558// See ListInstanceGroups for details on how to use this API operation.
1559//
1560// The context must be non-nil and will be used for request cancellation. If
1561// the context is nil a panic will occur. In the future the SDK may create
1562// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1563// for more information on using Contexts.
1564func (c *EMR) ListInstanceGroupsWithContext(ctx aws.Context, input *ListInstanceGroupsInput, opts ...request.Option) (*ListInstanceGroupsOutput, error) {
1565	req, out := c.ListInstanceGroupsRequest(input)
1566	req.SetContext(ctx)
1567	req.ApplyOptions(opts...)
1568	return out, req.Send()
1569}
1570
1571// ListInstanceGroupsPages iterates over the pages of a ListInstanceGroups operation,
1572// calling the "fn" function with the response data for each page. To stop
1573// iterating, return false from the fn function.
1574//
1575// See ListInstanceGroups method for more information on how to use this operation.
1576//
1577// Note: This operation can generate multiple requests to a service.
1578//
1579//    // Example iterating over at most 3 pages of a ListInstanceGroups operation.
1580//    pageNum := 0
1581//    err := client.ListInstanceGroupsPages(params,
1582//        func(page *emr.ListInstanceGroupsOutput, lastPage bool) bool {
1583//            pageNum++
1584//            fmt.Println(page)
1585//            return pageNum <= 3
1586//        })
1587//
1588func (c *EMR) ListInstanceGroupsPages(input *ListInstanceGroupsInput, fn func(*ListInstanceGroupsOutput, bool) bool) error {
1589	return c.ListInstanceGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
1590}
1591
1592// ListInstanceGroupsPagesWithContext same as ListInstanceGroupsPages except
1593// it takes a Context and allows setting request options on the pages.
1594//
1595// The context must be non-nil and will be used for request cancellation. If
1596// the context is nil a panic will occur. In the future the SDK may create
1597// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1598// for more information on using Contexts.
1599func (c *EMR) ListInstanceGroupsPagesWithContext(ctx aws.Context, input *ListInstanceGroupsInput, fn func(*ListInstanceGroupsOutput, bool) bool, opts ...request.Option) error {
1600	p := request.Pagination{
1601		NewRequest: func() (*request.Request, error) {
1602			var inCpy *ListInstanceGroupsInput
1603			if input != nil {
1604				tmp := *input
1605				inCpy = &tmp
1606			}
1607			req, _ := c.ListInstanceGroupsRequest(inCpy)
1608			req.SetContext(ctx)
1609			req.ApplyOptions(opts...)
1610			return req, nil
1611		},
1612	}
1613
1614	cont := true
1615	for p.Next() && cont {
1616		cont = fn(p.Page().(*ListInstanceGroupsOutput), !p.HasNextPage())
1617	}
1618	return p.Err()
1619}
1620
1621const opListInstances = "ListInstances"
1622
1623// ListInstancesRequest generates a "aws/request.Request" representing the
1624// client's request for the ListInstances operation. The "output" return
1625// value will be populated with the request's response once the request completes
1626// successfully.
1627//
1628// Use "Send" method on the returned Request to send the API call to the service.
1629// the "output" return value is not valid until after Send returns without error.
1630//
1631// See ListInstances for more information on using the ListInstances
1632// API call, and error handling.
1633//
1634// This method is useful when you want to inject custom logic or configuration
1635// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1636//
1637//
1638//    // Example sending a request using the ListInstancesRequest method.
1639//    req, resp := client.ListInstancesRequest(params)
1640//
1641//    err := req.Send()
1642//    if err == nil { // resp is now filled
1643//        fmt.Println(resp)
1644//    }
1645//
1646// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances
1647func (c *EMR) ListInstancesRequest(input *ListInstancesInput) (req *request.Request, output *ListInstancesOutput) {
1648	op := &request.Operation{
1649		Name:       opListInstances,
1650		HTTPMethod: "POST",
1651		HTTPPath:   "/",
1652		Paginator: &request.Paginator{
1653			InputTokens:     []string{"Marker"},
1654			OutputTokens:    []string{"Marker"},
1655			LimitToken:      "",
1656			TruncationToken: "",
1657		},
1658	}
1659
1660	if input == nil {
1661		input = &ListInstancesInput{}
1662	}
1663
1664	output = &ListInstancesOutput{}
1665	req = c.newRequest(op, input, output)
1666	return
1667}
1668
1669// ListInstances API operation for Amazon Elastic MapReduce.
1670//
1671// Provides information for all active EC2 instances and EC2 instances terminated
1672// in the last 30 days, up to a maximum of 2,000. EC2 instances in any of the
1673// following states are considered active: AWAITING_FULFILLMENT, PROVISIONING,
1674// BOOTSTRAPPING, RUNNING.
1675//
1676// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1677// with awserr.Error's Code and Message methods to get detailed information about
1678// the error.
1679//
1680// See the AWS API reference guide for Amazon Elastic MapReduce's
1681// API operation ListInstances for usage and error information.
1682//
1683// Returned Error Codes:
1684//   * ErrCodeInternalServerException "InternalServerException"
1685//   This exception occurs when there is an internal failure in the EMR service.
1686//
1687//   * ErrCodeInvalidRequestException "InvalidRequestException"
1688//   This exception occurs when there is something wrong with user input.
1689//
1690// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances
1691func (c *EMR) ListInstances(input *ListInstancesInput) (*ListInstancesOutput, error) {
1692	req, out := c.ListInstancesRequest(input)
1693	return out, req.Send()
1694}
1695
1696// ListInstancesWithContext is the same as ListInstances with the addition of
1697// the ability to pass a context and additional request options.
1698//
1699// See ListInstances for details on how to use this API operation.
1700//
1701// The context must be non-nil and will be used for request cancellation. If
1702// the context is nil a panic will occur. In the future the SDK may create
1703// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1704// for more information on using Contexts.
1705func (c *EMR) ListInstancesWithContext(ctx aws.Context, input *ListInstancesInput, opts ...request.Option) (*ListInstancesOutput, error) {
1706	req, out := c.ListInstancesRequest(input)
1707	req.SetContext(ctx)
1708	req.ApplyOptions(opts...)
1709	return out, req.Send()
1710}
1711
1712// ListInstancesPages iterates over the pages of a ListInstances operation,
1713// calling the "fn" function with the response data for each page. To stop
1714// iterating, return false from the fn function.
1715//
1716// See ListInstances method for more information on how to use this operation.
1717//
1718// Note: This operation can generate multiple requests to a service.
1719//
1720//    // Example iterating over at most 3 pages of a ListInstances operation.
1721//    pageNum := 0
1722//    err := client.ListInstancesPages(params,
1723//        func(page *emr.ListInstancesOutput, lastPage bool) bool {
1724//            pageNum++
1725//            fmt.Println(page)
1726//            return pageNum <= 3
1727//        })
1728//
1729func (c *EMR) ListInstancesPages(input *ListInstancesInput, fn func(*ListInstancesOutput, bool) bool) error {
1730	return c.ListInstancesPagesWithContext(aws.BackgroundContext(), input, fn)
1731}
1732
1733// ListInstancesPagesWithContext same as ListInstancesPages except
1734// it takes a Context and allows setting request options on the pages.
1735//
1736// The context must be non-nil and will be used for request cancellation. If
1737// the context is nil a panic will occur. In the future the SDK may create
1738// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1739// for more information on using Contexts.
1740func (c *EMR) ListInstancesPagesWithContext(ctx aws.Context, input *ListInstancesInput, fn func(*ListInstancesOutput, bool) bool, opts ...request.Option) error {
1741	p := request.Pagination{
1742		NewRequest: func() (*request.Request, error) {
1743			var inCpy *ListInstancesInput
1744			if input != nil {
1745				tmp := *input
1746				inCpy = &tmp
1747			}
1748			req, _ := c.ListInstancesRequest(inCpy)
1749			req.SetContext(ctx)
1750			req.ApplyOptions(opts...)
1751			return req, nil
1752		},
1753	}
1754
1755	cont := true
1756	for p.Next() && cont {
1757		cont = fn(p.Page().(*ListInstancesOutput), !p.HasNextPage())
1758	}
1759	return p.Err()
1760}
1761
1762const opListSecurityConfigurations = "ListSecurityConfigurations"
1763
1764// ListSecurityConfigurationsRequest generates a "aws/request.Request" representing the
1765// client's request for the ListSecurityConfigurations operation. The "output" return
1766// value will be populated with the request's response once the request completes
1767// successfully.
1768//
1769// Use "Send" method on the returned Request to send the API call to the service.
1770// the "output" return value is not valid until after Send returns without error.
1771//
1772// See ListSecurityConfigurations for more information on using the ListSecurityConfigurations
1773// API call, and error handling.
1774//
1775// This method is useful when you want to inject custom logic or configuration
1776// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1777//
1778//
1779//    // Example sending a request using the ListSecurityConfigurationsRequest method.
1780//    req, resp := client.ListSecurityConfigurationsRequest(params)
1781//
1782//    err := req.Send()
1783//    if err == nil { // resp is now filled
1784//        fmt.Println(resp)
1785//    }
1786//
1787// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations
1788func (c *EMR) ListSecurityConfigurationsRequest(input *ListSecurityConfigurationsInput) (req *request.Request, output *ListSecurityConfigurationsOutput) {
1789	op := &request.Operation{
1790		Name:       opListSecurityConfigurations,
1791		HTTPMethod: "POST",
1792		HTTPPath:   "/",
1793		Paginator: &request.Paginator{
1794			InputTokens:     []string{"Marker"},
1795			OutputTokens:    []string{"Marker"},
1796			LimitToken:      "",
1797			TruncationToken: "",
1798		},
1799	}
1800
1801	if input == nil {
1802		input = &ListSecurityConfigurationsInput{}
1803	}
1804
1805	output = &ListSecurityConfigurationsOutput{}
1806	req = c.newRequest(op, input, output)
1807	return
1808}
1809
1810// ListSecurityConfigurations API operation for Amazon Elastic MapReduce.
1811//
1812// Lists all the security configurations visible to this account, providing
1813// their creation dates and times, and their names. This call returns a maximum
1814// of 50 clusters per call, but returns a marker to track the paging of the
1815// cluster list across multiple ListSecurityConfigurations calls.
1816//
1817// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1818// with awserr.Error's Code and Message methods to get detailed information about
1819// the error.
1820//
1821// See the AWS API reference guide for Amazon Elastic MapReduce's
1822// API operation ListSecurityConfigurations for usage and error information.
1823//
1824// Returned Error Codes:
1825//   * ErrCodeInternalServerException "InternalServerException"
1826//   This exception occurs when there is an internal failure in the EMR service.
1827//
1828//   * ErrCodeInvalidRequestException "InvalidRequestException"
1829//   This exception occurs when there is something wrong with user input.
1830//
1831// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations
1832func (c *EMR) ListSecurityConfigurations(input *ListSecurityConfigurationsInput) (*ListSecurityConfigurationsOutput, error) {
1833	req, out := c.ListSecurityConfigurationsRequest(input)
1834	return out, req.Send()
1835}
1836
1837// ListSecurityConfigurationsWithContext is the same as ListSecurityConfigurations with the addition of
1838// the ability to pass a context and additional request options.
1839//
1840// See ListSecurityConfigurations for details on how to use this API operation.
1841//
1842// The context must be non-nil and will be used for request cancellation. If
1843// the context is nil a panic will occur. In the future the SDK may create
1844// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1845// for more information on using Contexts.
1846func (c *EMR) ListSecurityConfigurationsWithContext(ctx aws.Context, input *ListSecurityConfigurationsInput, opts ...request.Option) (*ListSecurityConfigurationsOutput, error) {
1847	req, out := c.ListSecurityConfigurationsRequest(input)
1848	req.SetContext(ctx)
1849	req.ApplyOptions(opts...)
1850	return out, req.Send()
1851}
1852
1853// ListSecurityConfigurationsPages iterates over the pages of a ListSecurityConfigurations operation,
1854// calling the "fn" function with the response data for each page. To stop
1855// iterating, return false from the fn function.
1856//
1857// See ListSecurityConfigurations method for more information on how to use this operation.
1858//
1859// Note: This operation can generate multiple requests to a service.
1860//
1861//    // Example iterating over at most 3 pages of a ListSecurityConfigurations operation.
1862//    pageNum := 0
1863//    err := client.ListSecurityConfigurationsPages(params,
1864//        func(page *emr.ListSecurityConfigurationsOutput, lastPage bool) bool {
1865//            pageNum++
1866//            fmt.Println(page)
1867//            return pageNum <= 3
1868//        })
1869//
1870func (c *EMR) ListSecurityConfigurationsPages(input *ListSecurityConfigurationsInput, fn func(*ListSecurityConfigurationsOutput, bool) bool) error {
1871	return c.ListSecurityConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn)
1872}
1873
1874// ListSecurityConfigurationsPagesWithContext same as ListSecurityConfigurationsPages except
1875// it takes a Context and allows setting request options on the pages.
1876//
1877// The context must be non-nil and will be used for request cancellation. If
1878// the context is nil a panic will occur. In the future the SDK may create
1879// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1880// for more information on using Contexts.
1881func (c *EMR) ListSecurityConfigurationsPagesWithContext(ctx aws.Context, input *ListSecurityConfigurationsInput, fn func(*ListSecurityConfigurationsOutput, bool) bool, opts ...request.Option) error {
1882	p := request.Pagination{
1883		NewRequest: func() (*request.Request, error) {
1884			var inCpy *ListSecurityConfigurationsInput
1885			if input != nil {
1886				tmp := *input
1887				inCpy = &tmp
1888			}
1889			req, _ := c.ListSecurityConfigurationsRequest(inCpy)
1890			req.SetContext(ctx)
1891			req.ApplyOptions(opts...)
1892			return req, nil
1893		},
1894	}
1895
1896	cont := true
1897	for p.Next() && cont {
1898		cont = fn(p.Page().(*ListSecurityConfigurationsOutput), !p.HasNextPage())
1899	}
1900	return p.Err()
1901}
1902
1903const opListSteps = "ListSteps"
1904
1905// ListStepsRequest generates a "aws/request.Request" representing the
1906// client's request for the ListSteps operation. The "output" return
1907// value will be populated with the request's response once the request completes
1908// successfully.
1909//
1910// Use "Send" method on the returned Request to send the API call to the service.
1911// the "output" return value is not valid until after Send returns without error.
1912//
1913// See ListSteps for more information on using the ListSteps
1914// API call, and error handling.
1915//
1916// This method is useful when you want to inject custom logic or configuration
1917// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1918//
1919//
1920//    // Example sending a request using the ListStepsRequest method.
1921//    req, resp := client.ListStepsRequest(params)
1922//
1923//    err := req.Send()
1924//    if err == nil { // resp is now filled
1925//        fmt.Println(resp)
1926//    }
1927//
1928// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps
1929func (c *EMR) ListStepsRequest(input *ListStepsInput) (req *request.Request, output *ListStepsOutput) {
1930	op := &request.Operation{
1931		Name:       opListSteps,
1932		HTTPMethod: "POST",
1933		HTTPPath:   "/",
1934		Paginator: &request.Paginator{
1935			InputTokens:     []string{"Marker"},
1936			OutputTokens:    []string{"Marker"},
1937			LimitToken:      "",
1938			TruncationToken: "",
1939		},
1940	}
1941
1942	if input == nil {
1943		input = &ListStepsInput{}
1944	}
1945
1946	output = &ListStepsOutput{}
1947	req = c.newRequest(op, input, output)
1948	return
1949}
1950
1951// ListSteps API operation for Amazon Elastic MapReduce.
1952//
1953// Provides a list of steps for the cluster in reverse order unless you specify
1954// stepIds with the request.
1955//
1956// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1957// with awserr.Error's Code and Message methods to get detailed information about
1958// the error.
1959//
1960// See the AWS API reference guide for Amazon Elastic MapReduce's
1961// API operation ListSteps for usage and error information.
1962//
1963// Returned Error Codes:
1964//   * ErrCodeInternalServerException "InternalServerException"
1965//   This exception occurs when there is an internal failure in the EMR service.
1966//
1967//   * ErrCodeInvalidRequestException "InvalidRequestException"
1968//   This exception occurs when there is something wrong with user input.
1969//
1970// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps
1971func (c *EMR) ListSteps(input *ListStepsInput) (*ListStepsOutput, error) {
1972	req, out := c.ListStepsRequest(input)
1973	return out, req.Send()
1974}
1975
1976// ListStepsWithContext is the same as ListSteps with the addition of
1977// the ability to pass a context and additional request options.
1978//
1979// See ListSteps for details on how to use this API operation.
1980//
1981// The context must be non-nil and will be used for request cancellation. If
1982// the context is nil a panic will occur. In the future the SDK may create
1983// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1984// for more information on using Contexts.
1985func (c *EMR) ListStepsWithContext(ctx aws.Context, input *ListStepsInput, opts ...request.Option) (*ListStepsOutput, error) {
1986	req, out := c.ListStepsRequest(input)
1987	req.SetContext(ctx)
1988	req.ApplyOptions(opts...)
1989	return out, req.Send()
1990}
1991
1992// ListStepsPages iterates over the pages of a ListSteps operation,
1993// calling the "fn" function with the response data for each page. To stop
1994// iterating, return false from the fn function.
1995//
1996// See ListSteps method for more information on how to use this operation.
1997//
1998// Note: This operation can generate multiple requests to a service.
1999//
2000//    // Example iterating over at most 3 pages of a ListSteps operation.
2001//    pageNum := 0
2002//    err := client.ListStepsPages(params,
2003//        func(page *emr.ListStepsOutput, lastPage bool) bool {
2004//            pageNum++
2005//            fmt.Println(page)
2006//            return pageNum <= 3
2007//        })
2008//
2009func (c *EMR) ListStepsPages(input *ListStepsInput, fn func(*ListStepsOutput, bool) bool) error {
2010	return c.ListStepsPagesWithContext(aws.BackgroundContext(), input, fn)
2011}
2012
2013// ListStepsPagesWithContext same as ListStepsPages except
2014// it takes a Context and allows setting request options on the pages.
2015//
2016// The context must be non-nil and will be used for request cancellation. If
2017// the context is nil a panic will occur. In the future the SDK may create
2018// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2019// for more information on using Contexts.
2020func (c *EMR) ListStepsPagesWithContext(ctx aws.Context, input *ListStepsInput, fn func(*ListStepsOutput, bool) bool, opts ...request.Option) error {
2021	p := request.Pagination{
2022		NewRequest: func() (*request.Request, error) {
2023			var inCpy *ListStepsInput
2024			if input != nil {
2025				tmp := *input
2026				inCpy = &tmp
2027			}
2028			req, _ := c.ListStepsRequest(inCpy)
2029			req.SetContext(ctx)
2030			req.ApplyOptions(opts...)
2031			return req, nil
2032		},
2033	}
2034
2035	cont := true
2036	for p.Next() && cont {
2037		cont = fn(p.Page().(*ListStepsOutput), !p.HasNextPage())
2038	}
2039	return p.Err()
2040}
2041
2042const opModifyInstanceFleet = "ModifyInstanceFleet"
2043
2044// ModifyInstanceFleetRequest generates a "aws/request.Request" representing the
2045// client's request for the ModifyInstanceFleet operation. The "output" return
2046// value will be populated with the request's response once the request completes
2047// successfully.
2048//
2049// Use "Send" method on the returned Request to send the API call to the service.
2050// the "output" return value is not valid until after Send returns without error.
2051//
2052// See ModifyInstanceFleet for more information on using the ModifyInstanceFleet
2053// API call, and error handling.
2054//
2055// This method is useful when you want to inject custom logic or configuration
2056// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2057//
2058//
2059//    // Example sending a request using the ModifyInstanceFleetRequest method.
2060//    req, resp := client.ModifyInstanceFleetRequest(params)
2061//
2062//    err := req.Send()
2063//    if err == nil { // resp is now filled
2064//        fmt.Println(resp)
2065//    }
2066//
2067// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet
2068func (c *EMR) ModifyInstanceFleetRequest(input *ModifyInstanceFleetInput) (req *request.Request, output *ModifyInstanceFleetOutput) {
2069	op := &request.Operation{
2070		Name:       opModifyInstanceFleet,
2071		HTTPMethod: "POST",
2072		HTTPPath:   "/",
2073	}
2074
2075	if input == nil {
2076		input = &ModifyInstanceFleetInput{}
2077	}
2078
2079	output = &ModifyInstanceFleetOutput{}
2080	req = c.newRequest(op, input, output)
2081	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2082	return
2083}
2084
2085// ModifyInstanceFleet API operation for Amazon Elastic MapReduce.
2086//
2087// Modifies the target On-Demand and target Spot capacities for the instance
2088// fleet with the specified InstanceFleetID within the cluster specified using
2089// ClusterID. The call either succeeds or fails atomically.
2090//
2091// The instance fleet configuration is available only in Amazon EMR versions
2092// 4.8.0 and later, excluding 5.0.x versions.
2093//
2094// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2095// with awserr.Error's Code and Message methods to get detailed information about
2096// the error.
2097//
2098// See the AWS API reference guide for Amazon Elastic MapReduce's
2099// API operation ModifyInstanceFleet for usage and error information.
2100//
2101// Returned Error Codes:
2102//   * ErrCodeInternalServerException "InternalServerException"
2103//   This exception occurs when there is an internal failure in the EMR service.
2104//
2105//   * ErrCodeInvalidRequestException "InvalidRequestException"
2106//   This exception occurs when there is something wrong with user input.
2107//
2108// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet
2109func (c *EMR) ModifyInstanceFleet(input *ModifyInstanceFleetInput) (*ModifyInstanceFleetOutput, error) {
2110	req, out := c.ModifyInstanceFleetRequest(input)
2111	return out, req.Send()
2112}
2113
2114// ModifyInstanceFleetWithContext is the same as ModifyInstanceFleet with the addition of
2115// the ability to pass a context and additional request options.
2116//
2117// See ModifyInstanceFleet for details on how to use this API operation.
2118//
2119// The context must be non-nil and will be used for request cancellation. If
2120// the context is nil a panic will occur. In the future the SDK may create
2121// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2122// for more information on using Contexts.
2123func (c *EMR) ModifyInstanceFleetWithContext(ctx aws.Context, input *ModifyInstanceFleetInput, opts ...request.Option) (*ModifyInstanceFleetOutput, error) {
2124	req, out := c.ModifyInstanceFleetRequest(input)
2125	req.SetContext(ctx)
2126	req.ApplyOptions(opts...)
2127	return out, req.Send()
2128}
2129
2130const opModifyInstanceGroups = "ModifyInstanceGroups"
2131
2132// ModifyInstanceGroupsRequest generates a "aws/request.Request" representing the
2133// client's request for the ModifyInstanceGroups operation. The "output" return
2134// value will be populated with the request's response once the request completes
2135// successfully.
2136//
2137// Use "Send" method on the returned Request to send the API call to the service.
2138// the "output" return value is not valid until after Send returns without error.
2139//
2140// See ModifyInstanceGroups for more information on using the ModifyInstanceGroups
2141// API call, and error handling.
2142//
2143// This method is useful when you want to inject custom logic or configuration
2144// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2145//
2146//
2147//    // Example sending a request using the ModifyInstanceGroupsRequest method.
2148//    req, resp := client.ModifyInstanceGroupsRequest(params)
2149//
2150//    err := req.Send()
2151//    if err == nil { // resp is now filled
2152//        fmt.Println(resp)
2153//    }
2154//
2155// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups
2156func (c *EMR) ModifyInstanceGroupsRequest(input *ModifyInstanceGroupsInput) (req *request.Request, output *ModifyInstanceGroupsOutput) {
2157	op := &request.Operation{
2158		Name:       opModifyInstanceGroups,
2159		HTTPMethod: "POST",
2160		HTTPPath:   "/",
2161	}
2162
2163	if input == nil {
2164		input = &ModifyInstanceGroupsInput{}
2165	}
2166
2167	output = &ModifyInstanceGroupsOutput{}
2168	req = c.newRequest(op, input, output)
2169	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2170	return
2171}
2172
2173// ModifyInstanceGroups API operation for Amazon Elastic MapReduce.
2174//
2175// ModifyInstanceGroups modifies the number of nodes and configuration settings
2176// of an instance group. The input parameters include the new target instance
2177// count for the group and the instance group ID. The call will either succeed
2178// or fail atomically.
2179//
2180// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2181// with awserr.Error's Code and Message methods to get detailed information about
2182// the error.
2183//
2184// See the AWS API reference guide for Amazon Elastic MapReduce's
2185// API operation ModifyInstanceGroups for usage and error information.
2186//
2187// Returned Error Codes:
2188//   * ErrCodeInternalServerError "InternalServerError"
2189//   Indicates that an error occurred while processing the request and that the
2190//   request was not completed.
2191//
2192// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups
2193func (c *EMR) ModifyInstanceGroups(input *ModifyInstanceGroupsInput) (*ModifyInstanceGroupsOutput, error) {
2194	req, out := c.ModifyInstanceGroupsRequest(input)
2195	return out, req.Send()
2196}
2197
2198// ModifyInstanceGroupsWithContext is the same as ModifyInstanceGroups with the addition of
2199// the ability to pass a context and additional request options.
2200//
2201// See ModifyInstanceGroups for details on how to use this API operation.
2202//
2203// The context must be non-nil and will be used for request cancellation. If
2204// the context is nil a panic will occur. In the future the SDK may create
2205// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2206// for more information on using Contexts.
2207func (c *EMR) ModifyInstanceGroupsWithContext(ctx aws.Context, input *ModifyInstanceGroupsInput, opts ...request.Option) (*ModifyInstanceGroupsOutput, error) {
2208	req, out := c.ModifyInstanceGroupsRequest(input)
2209	req.SetContext(ctx)
2210	req.ApplyOptions(opts...)
2211	return out, req.Send()
2212}
2213
2214const opPutAutoScalingPolicy = "PutAutoScalingPolicy"
2215
2216// PutAutoScalingPolicyRequest generates a "aws/request.Request" representing the
2217// client's request for the PutAutoScalingPolicy operation. The "output" return
2218// value will be populated with the request's response once the request completes
2219// successfully.
2220//
2221// Use "Send" method on the returned Request to send the API call to the service.
2222// the "output" return value is not valid until after Send returns without error.
2223//
2224// See PutAutoScalingPolicy for more information on using the PutAutoScalingPolicy
2225// API call, and error handling.
2226//
2227// This method is useful when you want to inject custom logic or configuration
2228// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2229//
2230//
2231//    // Example sending a request using the PutAutoScalingPolicyRequest method.
2232//    req, resp := client.PutAutoScalingPolicyRequest(params)
2233//
2234//    err := req.Send()
2235//    if err == nil { // resp is now filled
2236//        fmt.Println(resp)
2237//    }
2238//
2239// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy
2240func (c *EMR) PutAutoScalingPolicyRequest(input *PutAutoScalingPolicyInput) (req *request.Request, output *PutAutoScalingPolicyOutput) {
2241	op := &request.Operation{
2242		Name:       opPutAutoScalingPolicy,
2243		HTTPMethod: "POST",
2244		HTTPPath:   "/",
2245	}
2246
2247	if input == nil {
2248		input = &PutAutoScalingPolicyInput{}
2249	}
2250
2251	output = &PutAutoScalingPolicyOutput{}
2252	req = c.newRequest(op, input, output)
2253	return
2254}
2255
2256// PutAutoScalingPolicy API operation for Amazon Elastic MapReduce.
2257//
2258// Creates or updates an automatic scaling policy for a core instance group
2259// or task instance group in an Amazon EMR cluster. The automatic scaling policy
2260// defines how an instance group dynamically adds and terminates EC2 instances
2261// in response to the value of a CloudWatch metric.
2262//
2263// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2264// with awserr.Error's Code and Message methods to get detailed information about
2265// the error.
2266//
2267// See the AWS API reference guide for Amazon Elastic MapReduce's
2268// API operation PutAutoScalingPolicy for usage and error information.
2269// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy
2270func (c *EMR) PutAutoScalingPolicy(input *PutAutoScalingPolicyInput) (*PutAutoScalingPolicyOutput, error) {
2271	req, out := c.PutAutoScalingPolicyRequest(input)
2272	return out, req.Send()
2273}
2274
2275// PutAutoScalingPolicyWithContext is the same as PutAutoScalingPolicy with the addition of
2276// the ability to pass a context and additional request options.
2277//
2278// See PutAutoScalingPolicy for details on how to use this API operation.
2279//
2280// The context must be non-nil and will be used for request cancellation. If
2281// the context is nil a panic will occur. In the future the SDK may create
2282// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2283// for more information on using Contexts.
2284func (c *EMR) PutAutoScalingPolicyWithContext(ctx aws.Context, input *PutAutoScalingPolicyInput, opts ...request.Option) (*PutAutoScalingPolicyOutput, error) {
2285	req, out := c.PutAutoScalingPolicyRequest(input)
2286	req.SetContext(ctx)
2287	req.ApplyOptions(opts...)
2288	return out, req.Send()
2289}
2290
2291const opPutBlockPublicAccessConfiguration = "PutBlockPublicAccessConfiguration"
2292
2293// PutBlockPublicAccessConfigurationRequest generates a "aws/request.Request" representing the
2294// client's request for the PutBlockPublicAccessConfiguration operation. The "output" return
2295// value will be populated with the request's response once the request completes
2296// successfully.
2297//
2298// Use "Send" method on the returned Request to send the API call to the service.
2299// the "output" return value is not valid until after Send returns without error.
2300//
2301// See PutBlockPublicAccessConfiguration for more information on using the PutBlockPublicAccessConfiguration
2302// API call, and error handling.
2303//
2304// This method is useful when you want to inject custom logic or configuration
2305// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2306//
2307//
2308//    // Example sending a request using the PutBlockPublicAccessConfigurationRequest method.
2309//    req, resp := client.PutBlockPublicAccessConfigurationRequest(params)
2310//
2311//    err := req.Send()
2312//    if err == nil { // resp is now filled
2313//        fmt.Println(resp)
2314//    }
2315//
2316// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration
2317func (c *EMR) PutBlockPublicAccessConfigurationRequest(input *PutBlockPublicAccessConfigurationInput) (req *request.Request, output *PutBlockPublicAccessConfigurationOutput) {
2318	op := &request.Operation{
2319		Name:       opPutBlockPublicAccessConfiguration,
2320		HTTPMethod: "POST",
2321		HTTPPath:   "/",
2322	}
2323
2324	if input == nil {
2325		input = &PutBlockPublicAccessConfigurationInput{}
2326	}
2327
2328	output = &PutBlockPublicAccessConfigurationOutput{}
2329	req = c.newRequest(op, input, output)
2330	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2331	return
2332}
2333
2334// PutBlockPublicAccessConfiguration API operation for Amazon Elastic MapReduce.
2335//
2336// Creates or updates an Amazon EMR block public access configuration for your
2337// AWS account in the current Region. For more information see Configure Block
2338// Public Access for Amazon EMR (https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html)
2339// in the Amazon EMR Management Guide.
2340//
2341// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2342// with awserr.Error's Code and Message methods to get detailed information about
2343// the error.
2344//
2345// See the AWS API reference guide for Amazon Elastic MapReduce's
2346// API operation PutBlockPublicAccessConfiguration for usage and error information.
2347//
2348// Returned Error Codes:
2349//   * ErrCodeInternalServerException "InternalServerException"
2350//   This exception occurs when there is an internal failure in the EMR service.
2351//
2352//   * ErrCodeInvalidRequestException "InvalidRequestException"
2353//   This exception occurs when there is something wrong with user input.
2354//
2355// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration
2356func (c *EMR) PutBlockPublicAccessConfiguration(input *PutBlockPublicAccessConfigurationInput) (*PutBlockPublicAccessConfigurationOutput, error) {
2357	req, out := c.PutBlockPublicAccessConfigurationRequest(input)
2358	return out, req.Send()
2359}
2360
2361// PutBlockPublicAccessConfigurationWithContext is the same as PutBlockPublicAccessConfiguration with the addition of
2362// the ability to pass a context and additional request options.
2363//
2364// See PutBlockPublicAccessConfiguration for details on how to use this API operation.
2365//
2366// The context must be non-nil and will be used for request cancellation. If
2367// the context is nil a panic will occur. In the future the SDK may create
2368// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2369// for more information on using Contexts.
2370func (c *EMR) PutBlockPublicAccessConfigurationWithContext(ctx aws.Context, input *PutBlockPublicAccessConfigurationInput, opts ...request.Option) (*PutBlockPublicAccessConfigurationOutput, error) {
2371	req, out := c.PutBlockPublicAccessConfigurationRequest(input)
2372	req.SetContext(ctx)
2373	req.ApplyOptions(opts...)
2374	return out, req.Send()
2375}
2376
2377const opRemoveAutoScalingPolicy = "RemoveAutoScalingPolicy"
2378
2379// RemoveAutoScalingPolicyRequest generates a "aws/request.Request" representing the
2380// client's request for the RemoveAutoScalingPolicy operation. The "output" return
2381// value will be populated with the request's response once the request completes
2382// successfully.
2383//
2384// Use "Send" method on the returned Request to send the API call to the service.
2385// the "output" return value is not valid until after Send returns without error.
2386//
2387// See RemoveAutoScalingPolicy for more information on using the RemoveAutoScalingPolicy
2388// API call, and error handling.
2389//
2390// This method is useful when you want to inject custom logic or configuration
2391// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2392//
2393//
2394//    // Example sending a request using the RemoveAutoScalingPolicyRequest method.
2395//    req, resp := client.RemoveAutoScalingPolicyRequest(params)
2396//
2397//    err := req.Send()
2398//    if err == nil { // resp is now filled
2399//        fmt.Println(resp)
2400//    }
2401//
2402// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy
2403func (c *EMR) RemoveAutoScalingPolicyRequest(input *RemoveAutoScalingPolicyInput) (req *request.Request, output *RemoveAutoScalingPolicyOutput) {
2404	op := &request.Operation{
2405		Name:       opRemoveAutoScalingPolicy,
2406		HTTPMethod: "POST",
2407		HTTPPath:   "/",
2408	}
2409
2410	if input == nil {
2411		input = &RemoveAutoScalingPolicyInput{}
2412	}
2413
2414	output = &RemoveAutoScalingPolicyOutput{}
2415	req = c.newRequest(op, input, output)
2416	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2417	return
2418}
2419
2420// RemoveAutoScalingPolicy API operation for Amazon Elastic MapReduce.
2421//
2422// Removes an automatic scaling policy from a specified instance group within
2423// an EMR cluster.
2424//
2425// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2426// with awserr.Error's Code and Message methods to get detailed information about
2427// the error.
2428//
2429// See the AWS API reference guide for Amazon Elastic MapReduce's
2430// API operation RemoveAutoScalingPolicy for usage and error information.
2431// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy
2432func (c *EMR) RemoveAutoScalingPolicy(input *RemoveAutoScalingPolicyInput) (*RemoveAutoScalingPolicyOutput, error) {
2433	req, out := c.RemoveAutoScalingPolicyRequest(input)
2434	return out, req.Send()
2435}
2436
2437// RemoveAutoScalingPolicyWithContext is the same as RemoveAutoScalingPolicy with the addition of
2438// the ability to pass a context and additional request options.
2439//
2440// See RemoveAutoScalingPolicy for details on how to use this API operation.
2441//
2442// The context must be non-nil and will be used for request cancellation. If
2443// the context is nil a panic will occur. In the future the SDK may create
2444// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2445// for more information on using Contexts.
2446func (c *EMR) RemoveAutoScalingPolicyWithContext(ctx aws.Context, input *RemoveAutoScalingPolicyInput, opts ...request.Option) (*RemoveAutoScalingPolicyOutput, error) {
2447	req, out := c.RemoveAutoScalingPolicyRequest(input)
2448	req.SetContext(ctx)
2449	req.ApplyOptions(opts...)
2450	return out, req.Send()
2451}
2452
2453const opRemoveTags = "RemoveTags"
2454
2455// RemoveTagsRequest generates a "aws/request.Request" representing the
2456// client's request for the RemoveTags operation. The "output" return
2457// value will be populated with the request's response once the request completes
2458// successfully.
2459//
2460// Use "Send" method on the returned Request to send the API call to the service.
2461// the "output" return value is not valid until after Send returns without error.
2462//
2463// See RemoveTags for more information on using the RemoveTags
2464// API call, and error handling.
2465//
2466// This method is useful when you want to inject custom logic or configuration
2467// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2468//
2469//
2470//    // Example sending a request using the RemoveTagsRequest method.
2471//    req, resp := client.RemoveTagsRequest(params)
2472//
2473//    err := req.Send()
2474//    if err == nil { // resp is now filled
2475//        fmt.Println(resp)
2476//    }
2477//
2478// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags
2479func (c *EMR) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) {
2480	op := &request.Operation{
2481		Name:       opRemoveTags,
2482		HTTPMethod: "POST",
2483		HTTPPath:   "/",
2484	}
2485
2486	if input == nil {
2487		input = &RemoveTagsInput{}
2488	}
2489
2490	output = &RemoveTagsOutput{}
2491	req = c.newRequest(op, input, output)
2492	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2493	return
2494}
2495
2496// RemoveTags API operation for Amazon Elastic MapReduce.
2497//
2498// Removes tags from an Amazon EMR resource. Tags make it easier to associate
2499// clusters in various ways, such as grouping clusters to track your Amazon
2500// EMR resource allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
2501//
2502// The following example removes the stack tag with value Prod from a cluster:
2503//
2504// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2505// with awserr.Error's Code and Message methods to get detailed information about
2506// the error.
2507//
2508// See the AWS API reference guide for Amazon Elastic MapReduce's
2509// API operation RemoveTags for usage and error information.
2510//
2511// Returned Error Codes:
2512//   * ErrCodeInternalServerException "InternalServerException"
2513//   This exception occurs when there is an internal failure in the EMR service.
2514//
2515//   * ErrCodeInvalidRequestException "InvalidRequestException"
2516//   This exception occurs when there is something wrong with user input.
2517//
2518// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags
2519func (c *EMR) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) {
2520	req, out := c.RemoveTagsRequest(input)
2521	return out, req.Send()
2522}
2523
2524// RemoveTagsWithContext is the same as RemoveTags with the addition of
2525// the ability to pass a context and additional request options.
2526//
2527// See RemoveTags for details on how to use this API operation.
2528//
2529// The context must be non-nil and will be used for request cancellation. If
2530// the context is nil a panic will occur. In the future the SDK may create
2531// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2532// for more information on using Contexts.
2533func (c *EMR) RemoveTagsWithContext(ctx aws.Context, input *RemoveTagsInput, opts ...request.Option) (*RemoveTagsOutput, error) {
2534	req, out := c.RemoveTagsRequest(input)
2535	req.SetContext(ctx)
2536	req.ApplyOptions(opts...)
2537	return out, req.Send()
2538}
2539
2540const opRunJobFlow = "RunJobFlow"
2541
2542// RunJobFlowRequest generates a "aws/request.Request" representing the
2543// client's request for the RunJobFlow operation. The "output" return
2544// value will be populated with the request's response once the request completes
2545// successfully.
2546//
2547// Use "Send" method on the returned Request to send the API call to the service.
2548// the "output" return value is not valid until after Send returns without error.
2549//
2550// See RunJobFlow for more information on using the RunJobFlow
2551// API call, and error handling.
2552//
2553// This method is useful when you want to inject custom logic or configuration
2554// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2555//
2556//
2557//    // Example sending a request using the RunJobFlowRequest method.
2558//    req, resp := client.RunJobFlowRequest(params)
2559//
2560//    err := req.Send()
2561//    if err == nil { // resp is now filled
2562//        fmt.Println(resp)
2563//    }
2564//
2565// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow
2566func (c *EMR) RunJobFlowRequest(input *RunJobFlowInput) (req *request.Request, output *RunJobFlowOutput) {
2567	op := &request.Operation{
2568		Name:       opRunJobFlow,
2569		HTTPMethod: "POST",
2570		HTTPPath:   "/",
2571	}
2572
2573	if input == nil {
2574		input = &RunJobFlowInput{}
2575	}
2576
2577	output = &RunJobFlowOutput{}
2578	req = c.newRequest(op, input, output)
2579	return
2580}
2581
2582// RunJobFlow API operation for Amazon Elastic MapReduce.
2583//
2584// RunJobFlow creates and starts running a new cluster (job flow). The cluster
2585// runs the steps specified. After the steps complete, the cluster stops and
2586// the HDFS partition is lost. To prevent loss of data, configure the last step
2587// of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig
2588// KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions
2589// to the WAITING state rather than shutting down after the steps have completed.
2590//
2591// For additional protection, you can set the JobFlowInstancesConfig TerminationProtected
2592// parameter to TRUE to lock the cluster and prevent it from being terminated
2593// by API call, user intervention, or in the event of a job flow error.
2594//
2595// A maximum of 256 steps are allowed in each job flow.
2596//
2597// If your cluster is long-running (such as a Hive data warehouse) or complex,
2598// you may require more than 256 steps to process your data. You can bypass
2599// the 256-step limitation in various ways, including using the SSH shell to
2600// connect to the master node and submitting queries directly to the software
2601// running on the master node, such as Hive and Hadoop. For more information
2602// on how to do this, see Add More than 256 Steps to a Cluster (https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html)
2603// in the Amazon EMR Management Guide.
2604//
2605// For long running clusters, we recommend that you periodically store your
2606// results.
2607//
2608// The instance fleets configuration is available only in Amazon EMR versions
2609// 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain
2610// InstanceFleets parameters or InstanceGroups parameters, but not both.
2611//
2612// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2613// with awserr.Error's Code and Message methods to get detailed information about
2614// the error.
2615//
2616// See the AWS API reference guide for Amazon Elastic MapReduce's
2617// API operation RunJobFlow for usage and error information.
2618//
2619// Returned Error Codes:
2620//   * ErrCodeInternalServerError "InternalServerError"
2621//   Indicates that an error occurred while processing the request and that the
2622//   request was not completed.
2623//
2624// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow
2625func (c *EMR) RunJobFlow(input *RunJobFlowInput) (*RunJobFlowOutput, error) {
2626	req, out := c.RunJobFlowRequest(input)
2627	return out, req.Send()
2628}
2629
2630// RunJobFlowWithContext is the same as RunJobFlow with the addition of
2631// the ability to pass a context and additional request options.
2632//
2633// See RunJobFlow for details on how to use this API operation.
2634//
2635// The context must be non-nil and will be used for request cancellation. If
2636// the context is nil a panic will occur. In the future the SDK may create
2637// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2638// for more information on using Contexts.
2639func (c *EMR) RunJobFlowWithContext(ctx aws.Context, input *RunJobFlowInput, opts ...request.Option) (*RunJobFlowOutput, error) {
2640	req, out := c.RunJobFlowRequest(input)
2641	req.SetContext(ctx)
2642	req.ApplyOptions(opts...)
2643	return out, req.Send()
2644}
2645
2646const opSetTerminationProtection = "SetTerminationProtection"
2647
2648// SetTerminationProtectionRequest generates a "aws/request.Request" representing the
2649// client's request for the SetTerminationProtection operation. The "output" return
2650// value will be populated with the request's response once the request completes
2651// successfully.
2652//
2653// Use "Send" method on the returned Request to send the API call to the service.
2654// the "output" return value is not valid until after Send returns without error.
2655//
2656// See SetTerminationProtection for more information on using the SetTerminationProtection
2657// API call, and error handling.
2658//
2659// This method is useful when you want to inject custom logic or configuration
2660// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2661//
2662//
2663//    // Example sending a request using the SetTerminationProtectionRequest method.
2664//    req, resp := client.SetTerminationProtectionRequest(params)
2665//
2666//    err := req.Send()
2667//    if err == nil { // resp is now filled
2668//        fmt.Println(resp)
2669//    }
2670//
2671// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection
2672func (c *EMR) SetTerminationProtectionRequest(input *SetTerminationProtectionInput) (req *request.Request, output *SetTerminationProtectionOutput) {
2673	op := &request.Operation{
2674		Name:       opSetTerminationProtection,
2675		HTTPMethod: "POST",
2676		HTTPPath:   "/",
2677	}
2678
2679	if input == nil {
2680		input = &SetTerminationProtectionInput{}
2681	}
2682
2683	output = &SetTerminationProtectionOutput{}
2684	req = c.newRequest(op, input, output)
2685	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2686	return
2687}
2688
2689// SetTerminationProtection API operation for Amazon Elastic MapReduce.
2690//
2691// SetTerminationProtection locks a cluster (job flow) so the EC2 instances
2692// in the cluster cannot be terminated by user intervention, an API call, or
2693// in the event of a job-flow error. The cluster still terminates upon successful
2694// completion of the job flow. Calling SetTerminationProtection on a cluster
2695// is similar to calling the Amazon EC2 DisableAPITermination API on all EC2
2696// instances in a cluster.
2697//
2698// SetTerminationProtection is used to prevent accidental termination of a cluster
2699// and to ensure that in the event of an error, the instances persist so that
2700// you can recover any data stored in their ephemeral instance storage.
2701//
2702// To terminate a cluster that has been locked by setting SetTerminationProtection
2703// to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection
2704// in which you set the value to false.
2705//
2706// For more information, seeManaging Cluster Termination (https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html)
2707// in the Amazon EMR Management Guide.
2708//
2709// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2710// with awserr.Error's Code and Message methods to get detailed information about
2711// the error.
2712//
2713// See the AWS API reference guide for Amazon Elastic MapReduce's
2714// API operation SetTerminationProtection for usage and error information.
2715//
2716// Returned Error Codes:
2717//   * ErrCodeInternalServerError "InternalServerError"
2718//   Indicates that an error occurred while processing the request and that the
2719//   request was not completed.
2720//
2721// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection
2722func (c *EMR) SetTerminationProtection(input *SetTerminationProtectionInput) (*SetTerminationProtectionOutput, error) {
2723	req, out := c.SetTerminationProtectionRequest(input)
2724	return out, req.Send()
2725}
2726
2727// SetTerminationProtectionWithContext is the same as SetTerminationProtection with the addition of
2728// the ability to pass a context and additional request options.
2729//
2730// See SetTerminationProtection for details on how to use this API operation.
2731//
2732// The context must be non-nil and will be used for request cancellation. If
2733// the context is nil a panic will occur. In the future the SDK may create
2734// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2735// for more information on using Contexts.
2736func (c *EMR) SetTerminationProtectionWithContext(ctx aws.Context, input *SetTerminationProtectionInput, opts ...request.Option) (*SetTerminationProtectionOutput, error) {
2737	req, out := c.SetTerminationProtectionRequest(input)
2738	req.SetContext(ctx)
2739	req.ApplyOptions(opts...)
2740	return out, req.Send()
2741}
2742
2743const opSetVisibleToAllUsers = "SetVisibleToAllUsers"
2744
2745// SetVisibleToAllUsersRequest generates a "aws/request.Request" representing the
2746// client's request for the SetVisibleToAllUsers operation. The "output" return
2747// value will be populated with the request's response once the request completes
2748// successfully.
2749//
2750// Use "Send" method on the returned Request to send the API call to the service.
2751// the "output" return value is not valid until after Send returns without error.
2752//
2753// See SetVisibleToAllUsers for more information on using the SetVisibleToAllUsers
2754// API call, and error handling.
2755//
2756// This method is useful when you want to inject custom logic or configuration
2757// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2758//
2759//
2760//    // Example sending a request using the SetVisibleToAllUsersRequest method.
2761//    req, resp := client.SetVisibleToAllUsersRequest(params)
2762//
2763//    err := req.Send()
2764//    if err == nil { // resp is now filled
2765//        fmt.Println(resp)
2766//    }
2767//
2768// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers
2769func (c *EMR) SetVisibleToAllUsersRequest(input *SetVisibleToAllUsersInput) (req *request.Request, output *SetVisibleToAllUsersOutput) {
2770	op := &request.Operation{
2771		Name:       opSetVisibleToAllUsers,
2772		HTTPMethod: "POST",
2773		HTTPPath:   "/",
2774	}
2775
2776	if input == nil {
2777		input = &SetVisibleToAllUsersInput{}
2778	}
2779
2780	output = &SetVisibleToAllUsersOutput{}
2781	req = c.newRequest(op, input, output)
2782	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2783	return
2784}
2785
2786// SetVisibleToAllUsers API operation for Amazon Elastic MapReduce.
2787//
2788// This member will be deprecated.
2789//
2790// Sets whether all AWS Identity and Access Management (IAM) users under your
2791// account can access the specified clusters (job flows). This action works
2792// on running clusters. You can also set the visibility of a cluster when you
2793// launch it using the VisibleToAllUsers parameter of RunJobFlow. The SetVisibleToAllUsers
2794// action can be called only by an IAM user who created the cluster or the AWS
2795// account that owns the cluster.
2796//
2797// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2798// with awserr.Error's Code and Message methods to get detailed information about
2799// the error.
2800//
2801// See the AWS API reference guide for Amazon Elastic MapReduce's
2802// API operation SetVisibleToAllUsers for usage and error information.
2803//
2804// Returned Error Codes:
2805//   * ErrCodeInternalServerError "InternalServerError"
2806//   Indicates that an error occurred while processing the request and that the
2807//   request was not completed.
2808//
2809// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers
2810func (c *EMR) SetVisibleToAllUsers(input *SetVisibleToAllUsersInput) (*SetVisibleToAllUsersOutput, error) {
2811	req, out := c.SetVisibleToAllUsersRequest(input)
2812	return out, req.Send()
2813}
2814
2815// SetVisibleToAllUsersWithContext is the same as SetVisibleToAllUsers with the addition of
2816// the ability to pass a context and additional request options.
2817//
2818// See SetVisibleToAllUsers for details on how to use this API operation.
2819//
2820// The context must be non-nil and will be used for request cancellation. If
2821// the context is nil a panic will occur. In the future the SDK may create
2822// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2823// for more information on using Contexts.
2824func (c *EMR) SetVisibleToAllUsersWithContext(ctx aws.Context, input *SetVisibleToAllUsersInput, opts ...request.Option) (*SetVisibleToAllUsersOutput, error) {
2825	req, out := c.SetVisibleToAllUsersRequest(input)
2826	req.SetContext(ctx)
2827	req.ApplyOptions(opts...)
2828	return out, req.Send()
2829}
2830
2831const opTerminateJobFlows = "TerminateJobFlows"
2832
2833// TerminateJobFlowsRequest generates a "aws/request.Request" representing the
2834// client's request for the TerminateJobFlows operation. The "output" return
2835// value will be populated with the request's response once the request completes
2836// successfully.
2837//
2838// Use "Send" method on the returned Request to send the API call to the service.
2839// the "output" return value is not valid until after Send returns without error.
2840//
2841// See TerminateJobFlows for more information on using the TerminateJobFlows
2842// API call, and error handling.
2843//
2844// This method is useful when you want to inject custom logic or configuration
2845// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2846//
2847//
2848//    // Example sending a request using the TerminateJobFlowsRequest method.
2849//    req, resp := client.TerminateJobFlowsRequest(params)
2850//
2851//    err := req.Send()
2852//    if err == nil { // resp is now filled
2853//        fmt.Println(resp)
2854//    }
2855//
2856// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows
2857func (c *EMR) TerminateJobFlowsRequest(input *TerminateJobFlowsInput) (req *request.Request, output *TerminateJobFlowsOutput) {
2858	op := &request.Operation{
2859		Name:       opTerminateJobFlows,
2860		HTTPMethod: "POST",
2861		HTTPPath:   "/",
2862	}
2863
2864	if input == nil {
2865		input = &TerminateJobFlowsInput{}
2866	}
2867
2868	output = &TerminateJobFlowsOutput{}
2869	req = c.newRequest(op, input, output)
2870	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2871	return
2872}
2873
2874// TerminateJobFlows API operation for Amazon Elastic MapReduce.
2875//
2876// TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow
2877// is shut down, any step not yet completed is canceled and the EC2 instances
2878// on which the cluster is running are stopped. Any log files not already saved
2879// are uploaded to Amazon S3 if a LogUri was specified when the cluster was
2880// created.
2881//
2882// The maximum number of clusters allowed is 10. The call to TerminateJobFlows
2883// is asynchronous. Depending on the configuration of the cluster, it may take
2884// up to 1-5 minutes for the cluster to completely terminate and release allocated
2885// resources, such as Amazon EC2 instances.
2886//
2887// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2888// with awserr.Error's Code and Message methods to get detailed information about
2889// the error.
2890//
2891// See the AWS API reference guide for Amazon Elastic MapReduce's
2892// API operation TerminateJobFlows for usage and error information.
2893//
2894// Returned Error Codes:
2895//   * ErrCodeInternalServerError "InternalServerError"
2896//   Indicates that an error occurred while processing the request and that the
2897//   request was not completed.
2898//
2899// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows
2900func (c *EMR) TerminateJobFlows(input *TerminateJobFlowsInput) (*TerminateJobFlowsOutput, error) {
2901	req, out := c.TerminateJobFlowsRequest(input)
2902	return out, req.Send()
2903}
2904
2905// TerminateJobFlowsWithContext is the same as TerminateJobFlows with the addition of
2906// the ability to pass a context and additional request options.
2907//
2908// See TerminateJobFlows for details on how to use this API operation.
2909//
2910// The context must be non-nil and will be used for request cancellation. If
2911// the context is nil a panic will occur. In the future the SDK may create
2912// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2913// for more information on using Contexts.
2914func (c *EMR) TerminateJobFlowsWithContext(ctx aws.Context, input *TerminateJobFlowsInput, opts ...request.Option) (*TerminateJobFlowsOutput, error) {
2915	req, out := c.TerminateJobFlowsRequest(input)
2916	req.SetContext(ctx)
2917	req.ApplyOptions(opts...)
2918	return out, req.Send()
2919}
2920
2921type AddInstanceFleetInput struct {
2922	_ struct{} `type:"structure"`
2923
2924	// The unique identifier of the cluster.
2925	//
2926	// ClusterId is a required field
2927	ClusterId *string `type:"string" required:"true"`
2928
2929	// Specifies the configuration of the instance fleet.
2930	//
2931	// InstanceFleet is a required field
2932	InstanceFleet *InstanceFleetConfig `type:"structure" required:"true"`
2933}
2934
2935// String returns the string representation
2936func (s AddInstanceFleetInput) String() string {
2937	return awsutil.Prettify(s)
2938}
2939
2940// GoString returns the string representation
2941func (s AddInstanceFleetInput) GoString() string {
2942	return s.String()
2943}
2944
2945// Validate inspects the fields of the type to determine if they are valid.
2946func (s *AddInstanceFleetInput) Validate() error {
2947	invalidParams := request.ErrInvalidParams{Context: "AddInstanceFleetInput"}
2948	if s.ClusterId == nil {
2949		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
2950	}
2951	if s.InstanceFleet == nil {
2952		invalidParams.Add(request.NewErrParamRequired("InstanceFleet"))
2953	}
2954	if s.InstanceFleet != nil {
2955		if err := s.InstanceFleet.Validate(); err != nil {
2956			invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams))
2957		}
2958	}
2959
2960	if invalidParams.Len() > 0 {
2961		return invalidParams
2962	}
2963	return nil
2964}
2965
2966// SetClusterId sets the ClusterId field's value.
2967func (s *AddInstanceFleetInput) SetClusterId(v string) *AddInstanceFleetInput {
2968	s.ClusterId = &v
2969	return s
2970}
2971
2972// SetInstanceFleet sets the InstanceFleet field's value.
2973func (s *AddInstanceFleetInput) SetInstanceFleet(v *InstanceFleetConfig) *AddInstanceFleetInput {
2974	s.InstanceFleet = v
2975	return s
2976}
2977
2978type AddInstanceFleetOutput struct {
2979	_ struct{} `type:"structure"`
2980
2981	// The unique identifier of the cluster.
2982	ClusterId *string `type:"string"`
2983
2984	// The unique identifier of the instance fleet.
2985	InstanceFleetId *string `type:"string"`
2986}
2987
2988// String returns the string representation
2989func (s AddInstanceFleetOutput) String() string {
2990	return awsutil.Prettify(s)
2991}
2992
2993// GoString returns the string representation
2994func (s AddInstanceFleetOutput) GoString() string {
2995	return s.String()
2996}
2997
2998// SetClusterId sets the ClusterId field's value.
2999func (s *AddInstanceFleetOutput) SetClusterId(v string) *AddInstanceFleetOutput {
3000	s.ClusterId = &v
3001	return s
3002}
3003
3004// SetInstanceFleetId sets the InstanceFleetId field's value.
3005func (s *AddInstanceFleetOutput) SetInstanceFleetId(v string) *AddInstanceFleetOutput {
3006	s.InstanceFleetId = &v
3007	return s
3008}
3009
3010// Input to an AddInstanceGroups call.
3011type AddInstanceGroupsInput struct {
3012	_ struct{} `type:"structure"`
3013
3014	// Instance groups to add.
3015	//
3016	// InstanceGroups is a required field
3017	InstanceGroups []*InstanceGroupConfig `type:"list" required:"true"`
3018
3019	// Job flow in which to add the instance groups.
3020	//
3021	// JobFlowId is a required field
3022	JobFlowId *string `type:"string" required:"true"`
3023}
3024
3025// String returns the string representation
3026func (s AddInstanceGroupsInput) String() string {
3027	return awsutil.Prettify(s)
3028}
3029
3030// GoString returns the string representation
3031func (s AddInstanceGroupsInput) GoString() string {
3032	return s.String()
3033}
3034
3035// Validate inspects the fields of the type to determine if they are valid.
3036func (s *AddInstanceGroupsInput) Validate() error {
3037	invalidParams := request.ErrInvalidParams{Context: "AddInstanceGroupsInput"}
3038	if s.InstanceGroups == nil {
3039		invalidParams.Add(request.NewErrParamRequired("InstanceGroups"))
3040	}
3041	if s.JobFlowId == nil {
3042		invalidParams.Add(request.NewErrParamRequired("JobFlowId"))
3043	}
3044	if s.InstanceGroups != nil {
3045		for i, v := range s.InstanceGroups {
3046			if v == nil {
3047				continue
3048			}
3049			if err := v.Validate(); err != nil {
3050				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
3051			}
3052		}
3053	}
3054
3055	if invalidParams.Len() > 0 {
3056		return invalidParams
3057	}
3058	return nil
3059}
3060
3061// SetInstanceGroups sets the InstanceGroups field's value.
3062func (s *AddInstanceGroupsInput) SetInstanceGroups(v []*InstanceGroupConfig) *AddInstanceGroupsInput {
3063	s.InstanceGroups = v
3064	return s
3065}
3066
3067// SetJobFlowId sets the JobFlowId field's value.
3068func (s *AddInstanceGroupsInput) SetJobFlowId(v string) *AddInstanceGroupsInput {
3069	s.JobFlowId = &v
3070	return s
3071}
3072
3073// Output from an AddInstanceGroups call.
3074type AddInstanceGroupsOutput struct {
3075	_ struct{} `type:"structure"`
3076
3077	// Instance group IDs of the newly created instance groups.
3078	InstanceGroupIds []*string `type:"list"`
3079
3080	// The job flow ID in which the instance groups are added.
3081	JobFlowId *string `type:"string"`
3082}
3083
3084// String returns the string representation
3085func (s AddInstanceGroupsOutput) String() string {
3086	return awsutil.Prettify(s)
3087}
3088
3089// GoString returns the string representation
3090func (s AddInstanceGroupsOutput) GoString() string {
3091	return s.String()
3092}
3093
3094// SetInstanceGroupIds sets the InstanceGroupIds field's value.
3095func (s *AddInstanceGroupsOutput) SetInstanceGroupIds(v []*string) *AddInstanceGroupsOutput {
3096	s.InstanceGroupIds = v
3097	return s
3098}
3099
3100// SetJobFlowId sets the JobFlowId field's value.
3101func (s *AddInstanceGroupsOutput) SetJobFlowId(v string) *AddInstanceGroupsOutput {
3102	s.JobFlowId = &v
3103	return s
3104}
3105
3106// The input argument to the AddJobFlowSteps operation.
3107type AddJobFlowStepsInput struct {
3108	_ struct{} `type:"structure"`
3109
3110	// A string that uniquely identifies the job flow. This identifier is returned
3111	// by RunJobFlow and can also be obtained from ListClusters.
3112	//
3113	// JobFlowId is a required field
3114	JobFlowId *string `type:"string" required:"true"`
3115
3116	// A list of StepConfig to be executed by the job flow.
3117	//
3118	// Steps is a required field
3119	Steps []*StepConfig `type:"list" required:"true"`
3120}
3121
3122// String returns the string representation
3123func (s AddJobFlowStepsInput) String() string {
3124	return awsutil.Prettify(s)
3125}
3126
3127// GoString returns the string representation
3128func (s AddJobFlowStepsInput) GoString() string {
3129	return s.String()
3130}
3131
3132// Validate inspects the fields of the type to determine if they are valid.
3133func (s *AddJobFlowStepsInput) Validate() error {
3134	invalidParams := request.ErrInvalidParams{Context: "AddJobFlowStepsInput"}
3135	if s.JobFlowId == nil {
3136		invalidParams.Add(request.NewErrParamRequired("JobFlowId"))
3137	}
3138	if s.Steps == nil {
3139		invalidParams.Add(request.NewErrParamRequired("Steps"))
3140	}
3141	if s.Steps != nil {
3142		for i, v := range s.Steps {
3143			if v == nil {
3144				continue
3145			}
3146			if err := v.Validate(); err != nil {
3147				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Steps", i), err.(request.ErrInvalidParams))
3148			}
3149		}
3150	}
3151
3152	if invalidParams.Len() > 0 {
3153		return invalidParams
3154	}
3155	return nil
3156}
3157
3158// SetJobFlowId sets the JobFlowId field's value.
3159func (s *AddJobFlowStepsInput) SetJobFlowId(v string) *AddJobFlowStepsInput {
3160	s.JobFlowId = &v
3161	return s
3162}
3163
3164// SetSteps sets the Steps field's value.
3165func (s *AddJobFlowStepsInput) SetSteps(v []*StepConfig) *AddJobFlowStepsInput {
3166	s.Steps = v
3167	return s
3168}
3169
3170// The output for the AddJobFlowSteps operation.
3171type AddJobFlowStepsOutput struct {
3172	_ struct{} `type:"structure"`
3173
3174	// The identifiers of the list of steps added to the job flow.
3175	StepIds []*string `type:"list"`
3176}
3177
3178// String returns the string representation
3179func (s AddJobFlowStepsOutput) String() string {
3180	return awsutil.Prettify(s)
3181}
3182
3183// GoString returns the string representation
3184func (s AddJobFlowStepsOutput) GoString() string {
3185	return s.String()
3186}
3187
3188// SetStepIds sets the StepIds field's value.
3189func (s *AddJobFlowStepsOutput) SetStepIds(v []*string) *AddJobFlowStepsOutput {
3190	s.StepIds = v
3191	return s
3192}
3193
3194// This input identifies a cluster and a list of tags to attach.
3195type AddTagsInput struct {
3196	_ struct{} `type:"structure"`
3197
3198	// The Amazon EMR resource identifier to which tags will be added. This value
3199	// must be a cluster identifier.
3200	//
3201	// ResourceId is a required field
3202	ResourceId *string `type:"string" required:"true"`
3203
3204	// A list of tags to associate with a cluster and propagate to EC2 instances.
3205	// Tags are user-defined key/value pairs that consist of a required key string
3206	// with a maximum of 128 characters, and an optional value string with a maximum
3207	// of 256 characters.
3208	//
3209	// Tags is a required field
3210	Tags []*Tag `type:"list" required:"true"`
3211}
3212
3213// String returns the string representation
3214func (s AddTagsInput) String() string {
3215	return awsutil.Prettify(s)
3216}
3217
3218// GoString returns the string representation
3219func (s AddTagsInput) GoString() string {
3220	return s.String()
3221}
3222
3223// Validate inspects the fields of the type to determine if they are valid.
3224func (s *AddTagsInput) Validate() error {
3225	invalidParams := request.ErrInvalidParams{Context: "AddTagsInput"}
3226	if s.ResourceId == nil {
3227		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
3228	}
3229	if s.Tags == nil {
3230		invalidParams.Add(request.NewErrParamRequired("Tags"))
3231	}
3232
3233	if invalidParams.Len() > 0 {
3234		return invalidParams
3235	}
3236	return nil
3237}
3238
3239// SetResourceId sets the ResourceId field's value.
3240func (s *AddTagsInput) SetResourceId(v string) *AddTagsInput {
3241	s.ResourceId = &v
3242	return s
3243}
3244
3245// SetTags sets the Tags field's value.
3246func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput {
3247	s.Tags = v
3248	return s
3249}
3250
3251// This output indicates the result of adding tags to a resource.
3252type AddTagsOutput struct {
3253	_ struct{} `type:"structure"`
3254}
3255
3256// String returns the string representation
3257func (s AddTagsOutput) String() string {
3258	return awsutil.Prettify(s)
3259}
3260
3261// GoString returns the string representation
3262func (s AddTagsOutput) GoString() string {
3263	return s.String()
3264}
3265
3266// With Amazon EMR release version 4.0 and later, the only accepted parameter
3267// is the application name. To pass arguments to applications, you use configuration
3268// classifications specified using configuration JSON objects. For more information,
3269// see Configuring Applications (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).
3270//
3271// With earlier Amazon EMR releases, the application is any Amazon or third-party
3272// software that you can add to the cluster. This structure contains a list
3273// of strings that indicates the software to use with the cluster and accepts
3274// a user argument list. Amazon EMR accepts and forwards the argument list to
3275// the corresponding installation script as bootstrap action argument.
3276type Application struct {
3277	_ struct{} `type:"structure"`
3278
3279	// This option is for advanced users only. This is meta information about third-party
3280	// applications that third-party vendors use for testing purposes.
3281	AdditionalInfo map[string]*string `type:"map"`
3282
3283	// Arguments for Amazon EMR to pass to the application.
3284	Args []*string `type:"list"`
3285
3286	// The name of the application.
3287	Name *string `type:"string"`
3288
3289	// The version of the application.
3290	Version *string `type:"string"`
3291}
3292
3293// String returns the string representation
3294func (s Application) String() string {
3295	return awsutil.Prettify(s)
3296}
3297
3298// GoString returns the string representation
3299func (s Application) GoString() string {
3300	return s.String()
3301}
3302
3303// SetAdditionalInfo sets the AdditionalInfo field's value.
3304func (s *Application) SetAdditionalInfo(v map[string]*string) *Application {
3305	s.AdditionalInfo = v
3306	return s
3307}
3308
3309// SetArgs sets the Args field's value.
3310func (s *Application) SetArgs(v []*string) *Application {
3311	s.Args = v
3312	return s
3313}
3314
3315// SetName sets the Name field's value.
3316func (s *Application) SetName(v string) *Application {
3317	s.Name = &v
3318	return s
3319}
3320
3321// SetVersion sets the Version field's value.
3322func (s *Application) SetVersion(v string) *Application {
3323	s.Version = &v
3324	return s
3325}
3326
3327// An automatic scaling policy for a core instance group or task instance group
3328// in an Amazon EMR cluster. An automatic scaling policy defines how an instance
3329// group dynamically adds and terminates EC2 instances in response to the value
3330// of a CloudWatch metric. See PutAutoScalingPolicy.
3331type AutoScalingPolicy struct {
3332	_ struct{} `type:"structure"`
3333
3334	// The upper and lower EC2 instance limits for an automatic scaling policy.
3335	// Automatic scaling activity will not cause an instance group to grow above
3336	// or below these limits.
3337	//
3338	// Constraints is a required field
3339	Constraints *ScalingConstraints `type:"structure" required:"true"`
3340
3341	// The scale-in and scale-out rules that comprise the automatic scaling policy.
3342	//
3343	// Rules is a required field
3344	Rules []*ScalingRule `type:"list" required:"true"`
3345}
3346
3347// String returns the string representation
3348func (s AutoScalingPolicy) String() string {
3349	return awsutil.Prettify(s)
3350}
3351
3352// GoString returns the string representation
3353func (s AutoScalingPolicy) GoString() string {
3354	return s.String()
3355}
3356
3357// Validate inspects the fields of the type to determine if they are valid.
3358func (s *AutoScalingPolicy) Validate() error {
3359	invalidParams := request.ErrInvalidParams{Context: "AutoScalingPolicy"}
3360	if s.Constraints == nil {
3361		invalidParams.Add(request.NewErrParamRequired("Constraints"))
3362	}
3363	if s.Rules == nil {
3364		invalidParams.Add(request.NewErrParamRequired("Rules"))
3365	}
3366	if s.Constraints != nil {
3367		if err := s.Constraints.Validate(); err != nil {
3368			invalidParams.AddNested("Constraints", err.(request.ErrInvalidParams))
3369		}
3370	}
3371	if s.Rules != nil {
3372		for i, v := range s.Rules {
3373			if v == nil {
3374				continue
3375			}
3376			if err := v.Validate(); err != nil {
3377				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
3378			}
3379		}
3380	}
3381
3382	if invalidParams.Len() > 0 {
3383		return invalidParams
3384	}
3385	return nil
3386}
3387
3388// SetConstraints sets the Constraints field's value.
3389func (s *AutoScalingPolicy) SetConstraints(v *ScalingConstraints) *AutoScalingPolicy {
3390	s.Constraints = v
3391	return s
3392}
3393
3394// SetRules sets the Rules field's value.
3395func (s *AutoScalingPolicy) SetRules(v []*ScalingRule) *AutoScalingPolicy {
3396	s.Rules = v
3397	return s
3398}
3399
3400// An automatic scaling policy for a core instance group or task instance group
3401// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
3402// group dynamically adds and terminates EC2 instances in response to the value
3403// of a CloudWatch metric. See PutAutoScalingPolicy.
3404type AutoScalingPolicyDescription struct {
3405	_ struct{} `type:"structure"`
3406
3407	// The upper and lower EC2 instance limits for an automatic scaling policy.
3408	// Automatic scaling activity will not cause an instance group to grow above
3409	// or below these limits.
3410	Constraints *ScalingConstraints `type:"structure"`
3411
3412	// The scale-in and scale-out rules that comprise the automatic scaling policy.
3413	Rules []*ScalingRule `type:"list"`
3414
3415	// The status of an automatic scaling policy.
3416	Status *AutoScalingPolicyStatus `type:"structure"`
3417}
3418
3419// String returns the string representation
3420func (s AutoScalingPolicyDescription) String() string {
3421	return awsutil.Prettify(s)
3422}
3423
3424// GoString returns the string representation
3425func (s AutoScalingPolicyDescription) GoString() string {
3426	return s.String()
3427}
3428
3429// SetConstraints sets the Constraints field's value.
3430func (s *AutoScalingPolicyDescription) SetConstraints(v *ScalingConstraints) *AutoScalingPolicyDescription {
3431	s.Constraints = v
3432	return s
3433}
3434
3435// SetRules sets the Rules field's value.
3436func (s *AutoScalingPolicyDescription) SetRules(v []*ScalingRule) *AutoScalingPolicyDescription {
3437	s.Rules = v
3438	return s
3439}
3440
3441// SetStatus sets the Status field's value.
3442func (s *AutoScalingPolicyDescription) SetStatus(v *AutoScalingPolicyStatus) *AutoScalingPolicyDescription {
3443	s.Status = v
3444	return s
3445}
3446
3447// The reason for an AutoScalingPolicyStatus change.
3448type AutoScalingPolicyStateChangeReason struct {
3449	_ struct{} `type:"structure"`
3450
3451	// The code indicating the reason for the change in status.USER_REQUEST indicates
3452	// that the scaling policy status was changed by a user. PROVISION_FAILURE indicates
3453	// that the status change was because the policy failed to provision. CLEANUP_FAILURE
3454	// indicates an error.
3455	Code *string `type:"string" enum:"AutoScalingPolicyStateChangeReasonCode"`
3456
3457	// A friendly, more verbose message that accompanies an automatic scaling policy
3458	// state change.
3459	Message *string `type:"string"`
3460}
3461
3462// String returns the string representation
3463func (s AutoScalingPolicyStateChangeReason) String() string {
3464	return awsutil.Prettify(s)
3465}
3466
3467// GoString returns the string representation
3468func (s AutoScalingPolicyStateChangeReason) GoString() string {
3469	return s.String()
3470}
3471
3472// SetCode sets the Code field's value.
3473func (s *AutoScalingPolicyStateChangeReason) SetCode(v string) *AutoScalingPolicyStateChangeReason {
3474	s.Code = &v
3475	return s
3476}
3477
3478// SetMessage sets the Message field's value.
3479func (s *AutoScalingPolicyStateChangeReason) SetMessage(v string) *AutoScalingPolicyStateChangeReason {
3480	s.Message = &v
3481	return s
3482}
3483
3484// The status of an automatic scaling policy.
3485type AutoScalingPolicyStatus struct {
3486	_ struct{} `type:"structure"`
3487
3488	// Indicates the status of the automatic scaling policy.
3489	State *string `type:"string" enum:"AutoScalingPolicyState"`
3490
3491	// The reason for a change in status.
3492	StateChangeReason *AutoScalingPolicyStateChangeReason `type:"structure"`
3493}
3494
3495// String returns the string representation
3496func (s AutoScalingPolicyStatus) String() string {
3497	return awsutil.Prettify(s)
3498}
3499
3500// GoString returns the string representation
3501func (s AutoScalingPolicyStatus) GoString() string {
3502	return s.String()
3503}
3504
3505// SetState sets the State field's value.
3506func (s *AutoScalingPolicyStatus) SetState(v string) *AutoScalingPolicyStatus {
3507	s.State = &v
3508	return s
3509}
3510
3511// SetStateChangeReason sets the StateChangeReason field's value.
3512func (s *AutoScalingPolicyStatus) SetStateChangeReason(v *AutoScalingPolicyStateChangeReason) *AutoScalingPolicyStatus {
3513	s.StateChangeReason = v
3514	return s
3515}
3516
3517// A configuration for Amazon EMR block public access. When BlockPublicSecurityGroupRules
3518// is set to true, Amazon EMR prevents cluster creation if one of the cluster's
3519// security groups has a rule that allows inbound traffic from 0.0.0.0/0 or
3520// ::/0 on a port, unless the port is specified as an exception using PermittedPublicSecurityGroupRuleRanges.
3521type BlockPublicAccessConfiguration struct {
3522	_ struct{} `type:"structure"`
3523
3524	// Indicates whether EMR block public access is enabled (true) or disabled (false).
3525	// By default, the value is false for accounts that have created EMR clusters
3526	// before July 2019. For accounts created after this, the default is true.
3527	//
3528	// BlockPublicSecurityGroupRules is a required field
3529	BlockPublicSecurityGroupRules *bool `type:"boolean" required:"true"`
3530
3531	// Specifies ports and port ranges that are permitted to have security group
3532	// rules that allow inbound traffic from all public sources. For example, if
3533	// Port 23 (Telnet) is specified for PermittedPublicSecurityGroupRuleRanges,
3534	// Amazon EMR allows cluster creation if a security group associated with the
3535	// cluster has a rule that allows inbound traffic on Port 23 from IPv4 0.0.0.0/0
3536	// or IPv6 port ::/0 as the source.
3537	//
3538	// By default, Port 22, which is used for SSH access to the cluster EC2 instances,
3539	// is in the list of PermittedPublicSecurityGroupRuleRanges.
3540	PermittedPublicSecurityGroupRuleRanges []*PortRange `type:"list"`
3541}
3542
3543// String returns the string representation
3544func (s BlockPublicAccessConfiguration) String() string {
3545	return awsutil.Prettify(s)
3546}
3547
3548// GoString returns the string representation
3549func (s BlockPublicAccessConfiguration) GoString() string {
3550	return s.String()
3551}
3552
3553// Validate inspects the fields of the type to determine if they are valid.
3554func (s *BlockPublicAccessConfiguration) Validate() error {
3555	invalidParams := request.ErrInvalidParams{Context: "BlockPublicAccessConfiguration"}
3556	if s.BlockPublicSecurityGroupRules == nil {
3557		invalidParams.Add(request.NewErrParamRequired("BlockPublicSecurityGroupRules"))
3558	}
3559	if s.PermittedPublicSecurityGroupRuleRanges != nil {
3560		for i, v := range s.PermittedPublicSecurityGroupRuleRanges {
3561			if v == nil {
3562				continue
3563			}
3564			if err := v.Validate(); err != nil {
3565				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PermittedPublicSecurityGroupRuleRanges", i), err.(request.ErrInvalidParams))
3566			}
3567		}
3568	}
3569
3570	if invalidParams.Len() > 0 {
3571		return invalidParams
3572	}
3573	return nil
3574}
3575
3576// SetBlockPublicSecurityGroupRules sets the BlockPublicSecurityGroupRules field's value.
3577func (s *BlockPublicAccessConfiguration) SetBlockPublicSecurityGroupRules(v bool) *BlockPublicAccessConfiguration {
3578	s.BlockPublicSecurityGroupRules = &v
3579	return s
3580}
3581
3582// SetPermittedPublicSecurityGroupRuleRanges sets the PermittedPublicSecurityGroupRuleRanges field's value.
3583func (s *BlockPublicAccessConfiguration) SetPermittedPublicSecurityGroupRuleRanges(v []*PortRange) *BlockPublicAccessConfiguration {
3584	s.PermittedPublicSecurityGroupRuleRanges = v
3585	return s
3586}
3587
3588// Properties that describe the AWS principal that created the BlockPublicAccessConfiguration
3589// using the PutBlockPublicAccessConfiguration action as well as the date and
3590// time that the configuration was created. Each time a configuration for block
3591// public access is updated, Amazon EMR updates this metadata.
3592type BlockPublicAccessConfigurationMetadata struct {
3593	_ struct{} `type:"structure"`
3594
3595	// The Amazon Resource Name that created or last modified the configuration.
3596	//
3597	// CreatedByArn is a required field
3598	CreatedByArn *string `min:"20" type:"string" required:"true"`
3599
3600	// The date and time that the configuration was created.
3601	//
3602	// CreationDateTime is a required field
3603	CreationDateTime *time.Time `type:"timestamp" required:"true"`
3604}
3605
3606// String returns the string representation
3607func (s BlockPublicAccessConfigurationMetadata) String() string {
3608	return awsutil.Prettify(s)
3609}
3610
3611// GoString returns the string representation
3612func (s BlockPublicAccessConfigurationMetadata) GoString() string {
3613	return s.String()
3614}
3615
3616// SetCreatedByArn sets the CreatedByArn field's value.
3617func (s *BlockPublicAccessConfigurationMetadata) SetCreatedByArn(v string) *BlockPublicAccessConfigurationMetadata {
3618	s.CreatedByArn = &v
3619	return s
3620}
3621
3622// SetCreationDateTime sets the CreationDateTime field's value.
3623func (s *BlockPublicAccessConfigurationMetadata) SetCreationDateTime(v time.Time) *BlockPublicAccessConfigurationMetadata {
3624	s.CreationDateTime = &v
3625	return s
3626}
3627
3628// Configuration of a bootstrap action.
3629type BootstrapActionConfig struct {
3630	_ struct{} `type:"structure"`
3631
3632	// The name of the bootstrap action.
3633	//
3634	// Name is a required field
3635	Name *string `type:"string" required:"true"`
3636
3637	// The script run by the bootstrap action.
3638	//
3639	// ScriptBootstrapAction is a required field
3640	ScriptBootstrapAction *ScriptBootstrapActionConfig `type:"structure" required:"true"`
3641}
3642
3643// String returns the string representation
3644func (s BootstrapActionConfig) String() string {
3645	return awsutil.Prettify(s)
3646}
3647
3648// GoString returns the string representation
3649func (s BootstrapActionConfig) GoString() string {
3650	return s.String()
3651}
3652
3653// Validate inspects the fields of the type to determine if they are valid.
3654func (s *BootstrapActionConfig) Validate() error {
3655	invalidParams := request.ErrInvalidParams{Context: "BootstrapActionConfig"}
3656	if s.Name == nil {
3657		invalidParams.Add(request.NewErrParamRequired("Name"))
3658	}
3659	if s.ScriptBootstrapAction == nil {
3660		invalidParams.Add(request.NewErrParamRequired("ScriptBootstrapAction"))
3661	}
3662	if s.ScriptBootstrapAction != nil {
3663		if err := s.ScriptBootstrapAction.Validate(); err != nil {
3664			invalidParams.AddNested("ScriptBootstrapAction", err.(request.ErrInvalidParams))
3665		}
3666	}
3667
3668	if invalidParams.Len() > 0 {
3669		return invalidParams
3670	}
3671	return nil
3672}
3673
3674// SetName sets the Name field's value.
3675func (s *BootstrapActionConfig) SetName(v string) *BootstrapActionConfig {
3676	s.Name = &v
3677	return s
3678}
3679
3680// SetScriptBootstrapAction sets the ScriptBootstrapAction field's value.
3681func (s *BootstrapActionConfig) SetScriptBootstrapAction(v *ScriptBootstrapActionConfig) *BootstrapActionConfig {
3682	s.ScriptBootstrapAction = v
3683	return s
3684}
3685
3686// Reports the configuration of a bootstrap action in a cluster (job flow).
3687type BootstrapActionDetail struct {
3688	_ struct{} `type:"structure"`
3689
3690	// A description of the bootstrap action.
3691	BootstrapActionConfig *BootstrapActionConfig `type:"structure"`
3692}
3693
3694// String returns the string representation
3695func (s BootstrapActionDetail) String() string {
3696	return awsutil.Prettify(s)
3697}
3698
3699// GoString returns the string representation
3700func (s BootstrapActionDetail) GoString() string {
3701	return s.String()
3702}
3703
3704// SetBootstrapActionConfig sets the BootstrapActionConfig field's value.
3705func (s *BootstrapActionDetail) SetBootstrapActionConfig(v *BootstrapActionConfig) *BootstrapActionDetail {
3706	s.BootstrapActionConfig = v
3707	return s
3708}
3709
3710// Specification of the status of a CancelSteps request. Available only in Amazon
3711// EMR version 4.8.0 and later, excluding version 5.0.0.
3712type CancelStepsInfo struct {
3713	_ struct{} `type:"structure"`
3714
3715	// The reason for the failure if the CancelSteps request fails.
3716	Reason *string `type:"string"`
3717
3718	// The status of a CancelSteps Request. The value may be SUBMITTED or FAILED.
3719	Status *string `type:"string" enum:"CancelStepsRequestStatus"`
3720
3721	// The encrypted StepId of a step.
3722	StepId *string `type:"string"`
3723}
3724
3725// String returns the string representation
3726func (s CancelStepsInfo) String() string {
3727	return awsutil.Prettify(s)
3728}
3729
3730// GoString returns the string representation
3731func (s CancelStepsInfo) GoString() string {
3732	return s.String()
3733}
3734
3735// SetReason sets the Reason field's value.
3736func (s *CancelStepsInfo) SetReason(v string) *CancelStepsInfo {
3737	s.Reason = &v
3738	return s
3739}
3740
3741// SetStatus sets the Status field's value.
3742func (s *CancelStepsInfo) SetStatus(v string) *CancelStepsInfo {
3743	s.Status = &v
3744	return s
3745}
3746
3747// SetStepId sets the StepId field's value.
3748func (s *CancelStepsInfo) SetStepId(v string) *CancelStepsInfo {
3749	s.StepId = &v
3750	return s
3751}
3752
3753// The input argument to the CancelSteps operation.
3754type CancelStepsInput struct {
3755	_ struct{} `type:"structure"`
3756
3757	// The ClusterID for which specified steps will be canceled. Use RunJobFlow
3758	// and ListClusters to get ClusterIDs.
3759	ClusterId *string `type:"string"`
3760
3761	// The list of StepIDs to cancel. Use ListSteps to get steps and their states
3762	// for the specified cluster.
3763	StepIds []*string `type:"list"`
3764}
3765
3766// String returns the string representation
3767func (s CancelStepsInput) String() string {
3768	return awsutil.Prettify(s)
3769}
3770
3771// GoString returns the string representation
3772func (s CancelStepsInput) GoString() string {
3773	return s.String()
3774}
3775
3776// SetClusterId sets the ClusterId field's value.
3777func (s *CancelStepsInput) SetClusterId(v string) *CancelStepsInput {
3778	s.ClusterId = &v
3779	return s
3780}
3781
3782// SetStepIds sets the StepIds field's value.
3783func (s *CancelStepsInput) SetStepIds(v []*string) *CancelStepsInput {
3784	s.StepIds = v
3785	return s
3786}
3787
3788// The output for the CancelSteps operation.
3789type CancelStepsOutput struct {
3790	_ struct{} `type:"structure"`
3791
3792	// A list of CancelStepsInfo, which shows the status of specified cancel requests
3793	// for each StepID specified.
3794	CancelStepsInfoList []*CancelStepsInfo `type:"list"`
3795}
3796
3797// String returns the string representation
3798func (s CancelStepsOutput) String() string {
3799	return awsutil.Prettify(s)
3800}
3801
3802// GoString returns the string representation
3803func (s CancelStepsOutput) GoString() string {
3804	return s.String()
3805}
3806
3807// SetCancelStepsInfoList sets the CancelStepsInfoList field's value.
3808func (s *CancelStepsOutput) SetCancelStepsInfoList(v []*CancelStepsInfo) *CancelStepsOutput {
3809	s.CancelStepsInfoList = v
3810	return s
3811}
3812
3813// The definition of a CloudWatch metric alarm, which determines when an automatic
3814// scaling activity is triggered. When the defined alarm conditions are satisfied,
3815// scaling activity begins.
3816type CloudWatchAlarmDefinition struct {
3817	_ struct{} `type:"structure"`
3818
3819	// Determines how the metric specified by MetricName is compared to the value
3820	// specified by Threshold.
3821	//
3822	// ComparisonOperator is a required field
3823	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
3824
3825	// A CloudWatch metric dimension.
3826	Dimensions []*MetricDimension `type:"list"`
3827
3828	// The number of periods, expressed in seconds using Period, during which the
3829	// alarm condition must exist before the alarm triggers automatic scaling activity.
3830	// The default value is 1.
3831	EvaluationPeriods *int64 `type:"integer"`
3832
3833	// The name of the CloudWatch metric that is watched to determine an alarm condition.
3834	//
3835	// MetricName is a required field
3836	MetricName *string `type:"string" required:"true"`
3837
3838	// The namespace for the CloudWatch metric. The default is AWS/ElasticMapReduce.
3839	Namespace *string `type:"string"`
3840
3841	// The period, in seconds, over which the statistic is applied. EMR CloudWatch
3842	// metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch
3843	// metric is specified, specify 300.
3844	//
3845	// Period is a required field
3846	Period *int64 `type:"integer" required:"true"`
3847
3848	// The statistic to apply to the metric associated with the alarm. The default
3849	// is AVERAGE.
3850	Statistic *string `type:"string" enum:"Statistic"`
3851
3852	// The value against which the specified statistic is compared.
3853	//
3854	// Threshold is a required field
3855	Threshold *float64 `type:"double" required:"true"`
3856
3857	// The unit of measure associated with the CloudWatch metric being watched.
3858	// The value specified for Unit must correspond to the units specified in the
3859	// CloudWatch metric.
3860	Unit *string `type:"string" enum:"Unit"`
3861}
3862
3863// String returns the string representation
3864func (s CloudWatchAlarmDefinition) String() string {
3865	return awsutil.Prettify(s)
3866}
3867
3868// GoString returns the string representation
3869func (s CloudWatchAlarmDefinition) GoString() string {
3870	return s.String()
3871}
3872
3873// Validate inspects the fields of the type to determine if they are valid.
3874func (s *CloudWatchAlarmDefinition) Validate() error {
3875	invalidParams := request.ErrInvalidParams{Context: "CloudWatchAlarmDefinition"}
3876	if s.ComparisonOperator == nil {
3877		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
3878	}
3879	if s.MetricName == nil {
3880		invalidParams.Add(request.NewErrParamRequired("MetricName"))
3881	}
3882	if s.Period == nil {
3883		invalidParams.Add(request.NewErrParamRequired("Period"))
3884	}
3885	if s.Threshold == nil {
3886		invalidParams.Add(request.NewErrParamRequired("Threshold"))
3887	}
3888
3889	if invalidParams.Len() > 0 {
3890		return invalidParams
3891	}
3892	return nil
3893}
3894
3895// SetComparisonOperator sets the ComparisonOperator field's value.
3896func (s *CloudWatchAlarmDefinition) SetComparisonOperator(v string) *CloudWatchAlarmDefinition {
3897	s.ComparisonOperator = &v
3898	return s
3899}
3900
3901// SetDimensions sets the Dimensions field's value.
3902func (s *CloudWatchAlarmDefinition) SetDimensions(v []*MetricDimension) *CloudWatchAlarmDefinition {
3903	s.Dimensions = v
3904	return s
3905}
3906
3907// SetEvaluationPeriods sets the EvaluationPeriods field's value.
3908func (s *CloudWatchAlarmDefinition) SetEvaluationPeriods(v int64) *CloudWatchAlarmDefinition {
3909	s.EvaluationPeriods = &v
3910	return s
3911}
3912
3913// SetMetricName sets the MetricName field's value.
3914func (s *CloudWatchAlarmDefinition) SetMetricName(v string) *CloudWatchAlarmDefinition {
3915	s.MetricName = &v
3916	return s
3917}
3918
3919// SetNamespace sets the Namespace field's value.
3920func (s *CloudWatchAlarmDefinition) SetNamespace(v string) *CloudWatchAlarmDefinition {
3921	s.Namespace = &v
3922	return s
3923}
3924
3925// SetPeriod sets the Period field's value.
3926func (s *CloudWatchAlarmDefinition) SetPeriod(v int64) *CloudWatchAlarmDefinition {
3927	s.Period = &v
3928	return s
3929}
3930
3931// SetStatistic sets the Statistic field's value.
3932func (s *CloudWatchAlarmDefinition) SetStatistic(v string) *CloudWatchAlarmDefinition {
3933	s.Statistic = &v
3934	return s
3935}
3936
3937// SetThreshold sets the Threshold field's value.
3938func (s *CloudWatchAlarmDefinition) SetThreshold(v float64) *CloudWatchAlarmDefinition {
3939	s.Threshold = &v
3940	return s
3941}
3942
3943// SetUnit sets the Unit field's value.
3944func (s *CloudWatchAlarmDefinition) SetUnit(v string) *CloudWatchAlarmDefinition {
3945	s.Unit = &v
3946	return s
3947}
3948
3949// The detailed description of the cluster.
3950type Cluster struct {
3951	_ struct{} `type:"structure"`
3952
3953	// The applications installed on this cluster.
3954	Applications []*Application `type:"list"`
3955
3956	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
3957	// The IAM role provides permissions that the automatic scaling feature requires
3958	// to launch and terminate EC2 instances in an instance group.
3959	AutoScalingRole *string `type:"string"`
3960
3961	// Specifies whether the cluster should terminate after completing all steps.
3962	AutoTerminate *bool `type:"boolean"`
3963
3964	// Applies only to Amazon EMR releases 4.x and later. The list of Configurations
3965	// supplied to the EMR cluster.
3966	Configurations []*Configuration `type:"list"`
3967
3968	// Available only in Amazon EMR version 5.7.0 and later. The ID of a custom
3969	// Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.
3970	CustomAmiId *string `type:"string"`
3971
3972	// The size, in GiB, of the EBS root device volume of the Linux AMI that is
3973	// used for each EC2 instance. Available in Amazon EMR version 4.x and later.
3974	EbsRootVolumeSize *int64 `type:"integer"`
3975
3976	// Provides information about the EC2 instances in a cluster grouped by category.
3977	// For example, key name, subnet ID, IAM instance profile, and so on.
3978	Ec2InstanceAttributes *Ec2InstanceAttributes `type:"structure"`
3979
3980	// The unique identifier for the cluster.
3981	Id *string `type:"string"`
3982
3983	//
3984	// The instance fleet configuration is available only in Amazon EMR versions
3985	// 4.8.0 and later, excluding 5.0.x versions.
3986	//
3987	// The instance group configuration of the cluster. A value of INSTANCE_GROUP
3988	// indicates a uniform instance group configuration. A value of INSTANCE_FLEET
3989	// indicates an instance fleets configuration.
3990	InstanceCollectionType *string `type:"string" enum:"InstanceCollectionType"`
3991
3992	// Attributes for Kerberos configuration when Kerberos authentication is enabled
3993	// using a security configuration. For more information see Use Kerberos Authentication
3994	// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
3995	// in the EMR Management Guide.
3996	KerberosAttributes *KerberosAttributes `type:"structure"`
3997
3998	// The path to the Amazon S3 location where logs for this cluster are stored.
3999	LogUri *string `type:"string"`
4000
4001	// The DNS name of the master node. If the cluster is on a private subnet, this
4002	// is the private DNS name. On a public subnet, this is the public DNS name.
4003	MasterPublicDnsName *string `type:"string"`
4004
4005	// The name of the cluster.
4006	Name *string `type:"string"`
4007
4008	// An approximation of the cost of the cluster, represented in m1.small/hours.
4009	// This value is incremented one time for every hour an m1.small instance runs.
4010	// Larger instances are weighted more, so an EC2 instance that is roughly four
4011	// times more expensive would result in the normalized instance hours being
4012	// incremented by four. This result is only an approximation and does not reflect
4013	// the actual billing rate.
4014	NormalizedInstanceHours *int64 `type:"integer"`
4015
4016	// The Amazon EMR release label, which determines the version of open-source
4017	// application packages installed on the cluster. Release labels are in the
4018	// form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0.
4019	// For more information about Amazon EMR release versions and included application
4020	// versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/
4021	// (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label
4022	// applies only to Amazon EMR releases version 4.0 and later. Earlier versions
4023	// use AmiVersion.
4024	ReleaseLabel *string `type:"string"`
4025
4026	// Applies only when CustomAmiID is used. Specifies the type of updates that
4027	// are applied from the Amazon Linux AMI package repositories when an instance
4028	// boots using the AMI.
4029	RepoUpgradeOnBoot *string `type:"string" enum:"RepoUpgradeOnBoot"`
4030
4031	// The AMI version requested for this cluster.
4032	RequestedAmiVersion *string `type:"string"`
4033
4034	// The AMI version running on this cluster.
4035	RunningAmiVersion *string `type:"string"`
4036
4037	// The way that individual Amazon EC2 instances terminate when an automatic
4038	// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
4039	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
4040	// regardless of when the request to terminate the instance was submitted. This
4041	// option is only available with Amazon EMR 5.1.0 and later and is the default
4042	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
4043	// that Amazon EMR blacklists and drains tasks from nodes before terminating
4044	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
4045	// either behavior, Amazon EMR removes the least active nodes first and blocks
4046	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
4047	// is available only in Amazon EMR version 4.1.0 and later, and is the default
4048	// for versions of Amazon EMR earlier than 5.1.0.
4049	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
4050
4051	// The name of the security configuration applied to the cluster.
4052	SecurityConfiguration *string `type:"string"`
4053
4054	// The IAM role that will be assumed by the Amazon EMR service to access AWS
4055	// resources on your behalf.
4056	ServiceRole *string `type:"string"`
4057
4058	// The current status details about the cluster.
4059	Status *ClusterStatus `type:"structure"`
4060
4061	// A list of tags associated with a cluster.
4062	Tags []*Tag `type:"list"`
4063
4064	// Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances
4065	// from being terminated by an API call or user intervention, or in the event
4066	// of a cluster error.
4067	TerminationProtected *bool `type:"boolean"`
4068
4069	// This member will be deprecated.
4070	//
4071	// Indicates whether the cluster is visible to all IAM users of the AWS account
4072	// associated with the cluster. If this value is set to true, all IAM users
4073	// of that AWS account can view and manage the cluster if they have the proper
4074	// policy permissions set. If this value is false, only the IAM user that created
4075	// the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers
4076	// action.
4077	VisibleToAllUsers *bool `type:"boolean"`
4078}
4079
4080// String returns the string representation
4081func (s Cluster) String() string {
4082	return awsutil.Prettify(s)
4083}
4084
4085// GoString returns the string representation
4086func (s Cluster) GoString() string {
4087	return s.String()
4088}
4089
4090// SetApplications sets the Applications field's value.
4091func (s *Cluster) SetApplications(v []*Application) *Cluster {
4092	s.Applications = v
4093	return s
4094}
4095
4096// SetAutoScalingRole sets the AutoScalingRole field's value.
4097func (s *Cluster) SetAutoScalingRole(v string) *Cluster {
4098	s.AutoScalingRole = &v
4099	return s
4100}
4101
4102// SetAutoTerminate sets the AutoTerminate field's value.
4103func (s *Cluster) SetAutoTerminate(v bool) *Cluster {
4104	s.AutoTerminate = &v
4105	return s
4106}
4107
4108// SetConfigurations sets the Configurations field's value.
4109func (s *Cluster) SetConfigurations(v []*Configuration) *Cluster {
4110	s.Configurations = v
4111	return s
4112}
4113
4114// SetCustomAmiId sets the CustomAmiId field's value.
4115func (s *Cluster) SetCustomAmiId(v string) *Cluster {
4116	s.CustomAmiId = &v
4117	return s
4118}
4119
4120// SetEbsRootVolumeSize sets the EbsRootVolumeSize field's value.
4121func (s *Cluster) SetEbsRootVolumeSize(v int64) *Cluster {
4122	s.EbsRootVolumeSize = &v
4123	return s
4124}
4125
4126// SetEc2InstanceAttributes sets the Ec2InstanceAttributes field's value.
4127func (s *Cluster) SetEc2InstanceAttributes(v *Ec2InstanceAttributes) *Cluster {
4128	s.Ec2InstanceAttributes = v
4129	return s
4130}
4131
4132// SetId sets the Id field's value.
4133func (s *Cluster) SetId(v string) *Cluster {
4134	s.Id = &v
4135	return s
4136}
4137
4138// SetInstanceCollectionType sets the InstanceCollectionType field's value.
4139func (s *Cluster) SetInstanceCollectionType(v string) *Cluster {
4140	s.InstanceCollectionType = &v
4141	return s
4142}
4143
4144// SetKerberosAttributes sets the KerberosAttributes field's value.
4145func (s *Cluster) SetKerberosAttributes(v *KerberosAttributes) *Cluster {
4146	s.KerberosAttributes = v
4147	return s
4148}
4149
4150// SetLogUri sets the LogUri field's value.
4151func (s *Cluster) SetLogUri(v string) *Cluster {
4152	s.LogUri = &v
4153	return s
4154}
4155
4156// SetMasterPublicDnsName sets the MasterPublicDnsName field's value.
4157func (s *Cluster) SetMasterPublicDnsName(v string) *Cluster {
4158	s.MasterPublicDnsName = &v
4159	return s
4160}
4161
4162// SetName sets the Name field's value.
4163func (s *Cluster) SetName(v string) *Cluster {
4164	s.Name = &v
4165	return s
4166}
4167
4168// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
4169func (s *Cluster) SetNormalizedInstanceHours(v int64) *Cluster {
4170	s.NormalizedInstanceHours = &v
4171	return s
4172}
4173
4174// SetReleaseLabel sets the ReleaseLabel field's value.
4175func (s *Cluster) SetReleaseLabel(v string) *Cluster {
4176	s.ReleaseLabel = &v
4177	return s
4178}
4179
4180// SetRepoUpgradeOnBoot sets the RepoUpgradeOnBoot field's value.
4181func (s *Cluster) SetRepoUpgradeOnBoot(v string) *Cluster {
4182	s.RepoUpgradeOnBoot = &v
4183	return s
4184}
4185
4186// SetRequestedAmiVersion sets the RequestedAmiVersion field's value.
4187func (s *Cluster) SetRequestedAmiVersion(v string) *Cluster {
4188	s.RequestedAmiVersion = &v
4189	return s
4190}
4191
4192// SetRunningAmiVersion sets the RunningAmiVersion field's value.
4193func (s *Cluster) SetRunningAmiVersion(v string) *Cluster {
4194	s.RunningAmiVersion = &v
4195	return s
4196}
4197
4198// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
4199func (s *Cluster) SetScaleDownBehavior(v string) *Cluster {
4200	s.ScaleDownBehavior = &v
4201	return s
4202}
4203
4204// SetSecurityConfiguration sets the SecurityConfiguration field's value.
4205func (s *Cluster) SetSecurityConfiguration(v string) *Cluster {
4206	s.SecurityConfiguration = &v
4207	return s
4208}
4209
4210// SetServiceRole sets the ServiceRole field's value.
4211func (s *Cluster) SetServiceRole(v string) *Cluster {
4212	s.ServiceRole = &v
4213	return s
4214}
4215
4216// SetStatus sets the Status field's value.
4217func (s *Cluster) SetStatus(v *ClusterStatus) *Cluster {
4218	s.Status = v
4219	return s
4220}
4221
4222// SetTags sets the Tags field's value.
4223func (s *Cluster) SetTags(v []*Tag) *Cluster {
4224	s.Tags = v
4225	return s
4226}
4227
4228// SetTerminationProtected sets the TerminationProtected field's value.
4229func (s *Cluster) SetTerminationProtected(v bool) *Cluster {
4230	s.TerminationProtected = &v
4231	return s
4232}
4233
4234// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
4235func (s *Cluster) SetVisibleToAllUsers(v bool) *Cluster {
4236	s.VisibleToAllUsers = &v
4237	return s
4238}
4239
4240// The reason that the cluster changed to its current state.
4241type ClusterStateChangeReason struct {
4242	_ struct{} `type:"structure"`
4243
4244	// The programmatic code for the state change reason.
4245	Code *string `type:"string" enum:"ClusterStateChangeReasonCode"`
4246
4247	// The descriptive message for the state change reason.
4248	Message *string `type:"string"`
4249}
4250
4251// String returns the string representation
4252func (s ClusterStateChangeReason) String() string {
4253	return awsutil.Prettify(s)
4254}
4255
4256// GoString returns the string representation
4257func (s ClusterStateChangeReason) GoString() string {
4258	return s.String()
4259}
4260
4261// SetCode sets the Code field's value.
4262func (s *ClusterStateChangeReason) SetCode(v string) *ClusterStateChangeReason {
4263	s.Code = &v
4264	return s
4265}
4266
4267// SetMessage sets the Message field's value.
4268func (s *ClusterStateChangeReason) SetMessage(v string) *ClusterStateChangeReason {
4269	s.Message = &v
4270	return s
4271}
4272
4273// The detailed status of the cluster.
4274type ClusterStatus struct {
4275	_ struct{} `type:"structure"`
4276
4277	// The current state of the cluster.
4278	State *string `type:"string" enum:"ClusterState"`
4279
4280	// The reason for the cluster status change.
4281	StateChangeReason *ClusterStateChangeReason `type:"structure"`
4282
4283	// A timeline that represents the status of a cluster over the lifetime of the
4284	// cluster.
4285	Timeline *ClusterTimeline `type:"structure"`
4286}
4287
4288// String returns the string representation
4289func (s ClusterStatus) String() string {
4290	return awsutil.Prettify(s)
4291}
4292
4293// GoString returns the string representation
4294func (s ClusterStatus) GoString() string {
4295	return s.String()
4296}
4297
4298// SetState sets the State field's value.
4299func (s *ClusterStatus) SetState(v string) *ClusterStatus {
4300	s.State = &v
4301	return s
4302}
4303
4304// SetStateChangeReason sets the StateChangeReason field's value.
4305func (s *ClusterStatus) SetStateChangeReason(v *ClusterStateChangeReason) *ClusterStatus {
4306	s.StateChangeReason = v
4307	return s
4308}
4309
4310// SetTimeline sets the Timeline field's value.
4311func (s *ClusterStatus) SetTimeline(v *ClusterTimeline) *ClusterStatus {
4312	s.Timeline = v
4313	return s
4314}
4315
4316// The summary description of the cluster.
4317type ClusterSummary struct {
4318	_ struct{} `type:"structure"`
4319
4320	// The unique identifier for the cluster.
4321	Id *string `type:"string"`
4322
4323	// The name of the cluster.
4324	Name *string `type:"string"`
4325
4326	// An approximation of the cost of the cluster, represented in m1.small/hours.
4327	// This value is incremented one time for every hour an m1.small instance runs.
4328	// Larger instances are weighted more, so an EC2 instance that is roughly four
4329	// times more expensive would result in the normalized instance hours being
4330	// incremented by four. This result is only an approximation and does not reflect
4331	// the actual billing rate.
4332	NormalizedInstanceHours *int64 `type:"integer"`
4333
4334	// The details about the current status of the cluster.
4335	Status *ClusterStatus `type:"structure"`
4336}
4337
4338// String returns the string representation
4339func (s ClusterSummary) String() string {
4340	return awsutil.Prettify(s)
4341}
4342
4343// GoString returns the string representation
4344func (s ClusterSummary) GoString() string {
4345	return s.String()
4346}
4347
4348// SetId sets the Id field's value.
4349func (s *ClusterSummary) SetId(v string) *ClusterSummary {
4350	s.Id = &v
4351	return s
4352}
4353
4354// SetName sets the Name field's value.
4355func (s *ClusterSummary) SetName(v string) *ClusterSummary {
4356	s.Name = &v
4357	return s
4358}
4359
4360// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
4361func (s *ClusterSummary) SetNormalizedInstanceHours(v int64) *ClusterSummary {
4362	s.NormalizedInstanceHours = &v
4363	return s
4364}
4365
4366// SetStatus sets the Status field's value.
4367func (s *ClusterSummary) SetStatus(v *ClusterStatus) *ClusterSummary {
4368	s.Status = v
4369	return s
4370}
4371
4372// Represents the timeline of the cluster's lifecycle.
4373type ClusterTimeline struct {
4374	_ struct{} `type:"structure"`
4375
4376	// The creation date and time of the cluster.
4377	CreationDateTime *time.Time `type:"timestamp"`
4378
4379	// The date and time when the cluster was terminated.
4380	EndDateTime *time.Time `type:"timestamp"`
4381
4382	// The date and time when the cluster was ready to execute steps.
4383	ReadyDateTime *time.Time `type:"timestamp"`
4384}
4385
4386// String returns the string representation
4387func (s ClusterTimeline) String() string {
4388	return awsutil.Prettify(s)
4389}
4390
4391// GoString returns the string representation
4392func (s ClusterTimeline) GoString() string {
4393	return s.String()
4394}
4395
4396// SetCreationDateTime sets the CreationDateTime field's value.
4397func (s *ClusterTimeline) SetCreationDateTime(v time.Time) *ClusterTimeline {
4398	s.CreationDateTime = &v
4399	return s
4400}
4401
4402// SetEndDateTime sets the EndDateTime field's value.
4403func (s *ClusterTimeline) SetEndDateTime(v time.Time) *ClusterTimeline {
4404	s.EndDateTime = &v
4405	return s
4406}
4407
4408// SetReadyDateTime sets the ReadyDateTime field's value.
4409func (s *ClusterTimeline) SetReadyDateTime(v time.Time) *ClusterTimeline {
4410	s.ReadyDateTime = &v
4411	return s
4412}
4413
4414// An entity describing an executable that runs on a cluster.
4415type Command struct {
4416	_ struct{} `type:"structure"`
4417
4418	// Arguments for Amazon EMR to pass to the command for execution.
4419	Args []*string `type:"list"`
4420
4421	// The name of the command.
4422	Name *string `type:"string"`
4423
4424	// The Amazon S3 location of the command script.
4425	ScriptPath *string `type:"string"`
4426}
4427
4428// String returns the string representation
4429func (s Command) String() string {
4430	return awsutil.Prettify(s)
4431}
4432
4433// GoString returns the string representation
4434func (s Command) GoString() string {
4435	return s.String()
4436}
4437
4438// SetArgs sets the Args field's value.
4439func (s *Command) SetArgs(v []*string) *Command {
4440	s.Args = v
4441	return s
4442}
4443
4444// SetName sets the Name field's value.
4445func (s *Command) SetName(v string) *Command {
4446	s.Name = &v
4447	return s
4448}
4449
4450// SetScriptPath sets the ScriptPath field's value.
4451func (s *Command) SetScriptPath(v string) *Command {
4452	s.ScriptPath = &v
4453	return s
4454}
4455
4456//
4457// Amazon EMR releases 4.x or later.
4458//
4459// An optional configuration specification to be used when provisioning cluster
4460// instances, which can include configurations for applications and software
4461// bundled with Amazon EMR. A configuration consists of a classification, properties,
4462// and optional nested configurations. A classification refers to an application-specific
4463// configuration file. Properties are the settings you want to change in that
4464// file. For more information, see Configuring Applications (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).
4465type Configuration struct {
4466	_ struct{} `type:"structure"`
4467
4468	// The classification within a configuration.
4469	Classification *string `type:"string"`
4470
4471	// A list of additional configurations to apply within a configuration object.
4472	Configurations []*Configuration `type:"list"`
4473
4474	// A set of properties specified within a configuration classification.
4475	Properties map[string]*string `type:"map"`
4476}
4477
4478// String returns the string representation
4479func (s Configuration) String() string {
4480	return awsutil.Prettify(s)
4481}
4482
4483// GoString returns the string representation
4484func (s Configuration) GoString() string {
4485	return s.String()
4486}
4487
4488// SetClassification sets the Classification field's value.
4489func (s *Configuration) SetClassification(v string) *Configuration {
4490	s.Classification = &v
4491	return s
4492}
4493
4494// SetConfigurations sets the Configurations field's value.
4495func (s *Configuration) SetConfigurations(v []*Configuration) *Configuration {
4496	s.Configurations = v
4497	return s
4498}
4499
4500// SetProperties sets the Properties field's value.
4501func (s *Configuration) SetProperties(v map[string]*string) *Configuration {
4502	s.Properties = v
4503	return s
4504}
4505
4506type CreateSecurityConfigurationInput struct {
4507	_ struct{} `type:"structure"`
4508
4509	// The name of the security configuration.
4510	//
4511	// Name is a required field
4512	Name *string `type:"string" required:"true"`
4513
4514	// The security configuration details in JSON format. For JSON parameters and
4515	// examples, see Use Security Configurations to Set Up Cluster Security (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html)
4516	// in the Amazon EMR Management Guide.
4517	//
4518	// SecurityConfiguration is a required field
4519	SecurityConfiguration *string `type:"string" required:"true"`
4520}
4521
4522// String returns the string representation
4523func (s CreateSecurityConfigurationInput) String() string {
4524	return awsutil.Prettify(s)
4525}
4526
4527// GoString returns the string representation
4528func (s CreateSecurityConfigurationInput) GoString() string {
4529	return s.String()
4530}
4531
4532// Validate inspects the fields of the type to determine if they are valid.
4533func (s *CreateSecurityConfigurationInput) Validate() error {
4534	invalidParams := request.ErrInvalidParams{Context: "CreateSecurityConfigurationInput"}
4535	if s.Name == nil {
4536		invalidParams.Add(request.NewErrParamRequired("Name"))
4537	}
4538	if s.SecurityConfiguration == nil {
4539		invalidParams.Add(request.NewErrParamRequired("SecurityConfiguration"))
4540	}
4541
4542	if invalidParams.Len() > 0 {
4543		return invalidParams
4544	}
4545	return nil
4546}
4547
4548// SetName sets the Name field's value.
4549func (s *CreateSecurityConfigurationInput) SetName(v string) *CreateSecurityConfigurationInput {
4550	s.Name = &v
4551	return s
4552}
4553
4554// SetSecurityConfiguration sets the SecurityConfiguration field's value.
4555func (s *CreateSecurityConfigurationInput) SetSecurityConfiguration(v string) *CreateSecurityConfigurationInput {
4556	s.SecurityConfiguration = &v
4557	return s
4558}
4559
4560type CreateSecurityConfigurationOutput struct {
4561	_ struct{} `type:"structure"`
4562
4563	// The date and time the security configuration was created.
4564	//
4565	// CreationDateTime is a required field
4566	CreationDateTime *time.Time `type:"timestamp" required:"true"`
4567
4568	// The name of the security configuration.
4569	//
4570	// Name is a required field
4571	Name *string `type:"string" required:"true"`
4572}
4573
4574// String returns the string representation
4575func (s CreateSecurityConfigurationOutput) String() string {
4576	return awsutil.Prettify(s)
4577}
4578
4579// GoString returns the string representation
4580func (s CreateSecurityConfigurationOutput) GoString() string {
4581	return s.String()
4582}
4583
4584// SetCreationDateTime sets the CreationDateTime field's value.
4585func (s *CreateSecurityConfigurationOutput) SetCreationDateTime(v time.Time) *CreateSecurityConfigurationOutput {
4586	s.CreationDateTime = &v
4587	return s
4588}
4589
4590// SetName sets the Name field's value.
4591func (s *CreateSecurityConfigurationOutput) SetName(v string) *CreateSecurityConfigurationOutput {
4592	s.Name = &v
4593	return s
4594}
4595
4596type DeleteSecurityConfigurationInput struct {
4597	_ struct{} `type:"structure"`
4598
4599	// The name of the security configuration.
4600	//
4601	// Name is a required field
4602	Name *string `type:"string" required:"true"`
4603}
4604
4605// String returns the string representation
4606func (s DeleteSecurityConfigurationInput) String() string {
4607	return awsutil.Prettify(s)
4608}
4609
4610// GoString returns the string representation
4611func (s DeleteSecurityConfigurationInput) GoString() string {
4612	return s.String()
4613}
4614
4615// Validate inspects the fields of the type to determine if they are valid.
4616func (s *DeleteSecurityConfigurationInput) Validate() error {
4617	invalidParams := request.ErrInvalidParams{Context: "DeleteSecurityConfigurationInput"}
4618	if s.Name == nil {
4619		invalidParams.Add(request.NewErrParamRequired("Name"))
4620	}
4621
4622	if invalidParams.Len() > 0 {
4623		return invalidParams
4624	}
4625	return nil
4626}
4627
4628// SetName sets the Name field's value.
4629func (s *DeleteSecurityConfigurationInput) SetName(v string) *DeleteSecurityConfigurationInput {
4630	s.Name = &v
4631	return s
4632}
4633
4634type DeleteSecurityConfigurationOutput struct {
4635	_ struct{} `type:"structure"`
4636}
4637
4638// String returns the string representation
4639func (s DeleteSecurityConfigurationOutput) String() string {
4640	return awsutil.Prettify(s)
4641}
4642
4643// GoString returns the string representation
4644func (s DeleteSecurityConfigurationOutput) GoString() string {
4645	return s.String()
4646}
4647
4648// This input determines which cluster to describe.
4649type DescribeClusterInput struct {
4650	_ struct{} `type:"structure"`
4651
4652	// The identifier of the cluster to describe.
4653	//
4654	// ClusterId is a required field
4655	ClusterId *string `type:"string" required:"true"`
4656}
4657
4658// String returns the string representation
4659func (s DescribeClusterInput) String() string {
4660	return awsutil.Prettify(s)
4661}
4662
4663// GoString returns the string representation
4664func (s DescribeClusterInput) GoString() string {
4665	return s.String()
4666}
4667
4668// Validate inspects the fields of the type to determine if they are valid.
4669func (s *DescribeClusterInput) Validate() error {
4670	invalidParams := request.ErrInvalidParams{Context: "DescribeClusterInput"}
4671	if s.ClusterId == nil {
4672		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
4673	}
4674
4675	if invalidParams.Len() > 0 {
4676		return invalidParams
4677	}
4678	return nil
4679}
4680
4681// SetClusterId sets the ClusterId field's value.
4682func (s *DescribeClusterInput) SetClusterId(v string) *DescribeClusterInput {
4683	s.ClusterId = &v
4684	return s
4685}
4686
4687// This output contains the description of the cluster.
4688type DescribeClusterOutput struct {
4689	_ struct{} `type:"structure"`
4690
4691	// This output contains the details for the requested cluster.
4692	Cluster *Cluster `type:"structure"`
4693}
4694
4695// String returns the string representation
4696func (s DescribeClusterOutput) String() string {
4697	return awsutil.Prettify(s)
4698}
4699
4700// GoString returns the string representation
4701func (s DescribeClusterOutput) GoString() string {
4702	return s.String()
4703}
4704
4705// SetCluster sets the Cluster field's value.
4706func (s *DescribeClusterOutput) SetCluster(v *Cluster) *DescribeClusterOutput {
4707	s.Cluster = v
4708	return s
4709}
4710
4711// The input for the DescribeJobFlows operation.
4712type DescribeJobFlowsInput struct {
4713	_ struct{} `type:"structure"`
4714
4715	// Return only job flows created after this date and time.
4716	CreatedAfter *time.Time `type:"timestamp"`
4717
4718	// Return only job flows created before this date and time.
4719	CreatedBefore *time.Time `type:"timestamp"`
4720
4721	// Return only job flows whose job flow ID is contained in this list.
4722	JobFlowIds []*string `type:"list"`
4723
4724	// Return only job flows whose state is contained in this list.
4725	JobFlowStates []*string `type:"list"`
4726}
4727
4728// String returns the string representation
4729func (s DescribeJobFlowsInput) String() string {
4730	return awsutil.Prettify(s)
4731}
4732
4733// GoString returns the string representation
4734func (s DescribeJobFlowsInput) GoString() string {
4735	return s.String()
4736}
4737
4738// SetCreatedAfter sets the CreatedAfter field's value.
4739func (s *DescribeJobFlowsInput) SetCreatedAfter(v time.Time) *DescribeJobFlowsInput {
4740	s.CreatedAfter = &v
4741	return s
4742}
4743
4744// SetCreatedBefore sets the CreatedBefore field's value.
4745func (s *DescribeJobFlowsInput) SetCreatedBefore(v time.Time) *DescribeJobFlowsInput {
4746	s.CreatedBefore = &v
4747	return s
4748}
4749
4750// SetJobFlowIds sets the JobFlowIds field's value.
4751func (s *DescribeJobFlowsInput) SetJobFlowIds(v []*string) *DescribeJobFlowsInput {
4752	s.JobFlowIds = v
4753	return s
4754}
4755
4756// SetJobFlowStates sets the JobFlowStates field's value.
4757func (s *DescribeJobFlowsInput) SetJobFlowStates(v []*string) *DescribeJobFlowsInput {
4758	s.JobFlowStates = v
4759	return s
4760}
4761
4762// The output for the DescribeJobFlows operation.
4763type DescribeJobFlowsOutput struct {
4764	_ struct{} `type:"structure"`
4765
4766	// A list of job flows matching the parameters supplied.
4767	JobFlows []*JobFlowDetail `type:"list"`
4768}
4769
4770// String returns the string representation
4771func (s DescribeJobFlowsOutput) String() string {
4772	return awsutil.Prettify(s)
4773}
4774
4775// GoString returns the string representation
4776func (s DescribeJobFlowsOutput) GoString() string {
4777	return s.String()
4778}
4779
4780// SetJobFlows sets the JobFlows field's value.
4781func (s *DescribeJobFlowsOutput) SetJobFlows(v []*JobFlowDetail) *DescribeJobFlowsOutput {
4782	s.JobFlows = v
4783	return s
4784}
4785
4786type DescribeSecurityConfigurationInput struct {
4787	_ struct{} `type:"structure"`
4788
4789	// The name of the security configuration.
4790	//
4791	// Name is a required field
4792	Name *string `type:"string" required:"true"`
4793}
4794
4795// String returns the string representation
4796func (s DescribeSecurityConfigurationInput) String() string {
4797	return awsutil.Prettify(s)
4798}
4799
4800// GoString returns the string representation
4801func (s DescribeSecurityConfigurationInput) GoString() string {
4802	return s.String()
4803}
4804
4805// Validate inspects the fields of the type to determine if they are valid.
4806func (s *DescribeSecurityConfigurationInput) Validate() error {
4807	invalidParams := request.ErrInvalidParams{Context: "DescribeSecurityConfigurationInput"}
4808	if s.Name == nil {
4809		invalidParams.Add(request.NewErrParamRequired("Name"))
4810	}
4811
4812	if invalidParams.Len() > 0 {
4813		return invalidParams
4814	}
4815	return nil
4816}
4817
4818// SetName sets the Name field's value.
4819func (s *DescribeSecurityConfigurationInput) SetName(v string) *DescribeSecurityConfigurationInput {
4820	s.Name = &v
4821	return s
4822}
4823
4824type DescribeSecurityConfigurationOutput struct {
4825	_ struct{} `type:"structure"`
4826
4827	// The date and time the security configuration was created
4828	CreationDateTime *time.Time `type:"timestamp"`
4829
4830	// The name of the security configuration.
4831	Name *string `type:"string"`
4832
4833	// The security configuration details in JSON format.
4834	SecurityConfiguration *string `type:"string"`
4835}
4836
4837// String returns the string representation
4838func (s DescribeSecurityConfigurationOutput) String() string {
4839	return awsutil.Prettify(s)
4840}
4841
4842// GoString returns the string representation
4843func (s DescribeSecurityConfigurationOutput) GoString() string {
4844	return s.String()
4845}
4846
4847// SetCreationDateTime sets the CreationDateTime field's value.
4848func (s *DescribeSecurityConfigurationOutput) SetCreationDateTime(v time.Time) *DescribeSecurityConfigurationOutput {
4849	s.CreationDateTime = &v
4850	return s
4851}
4852
4853// SetName sets the Name field's value.
4854func (s *DescribeSecurityConfigurationOutput) SetName(v string) *DescribeSecurityConfigurationOutput {
4855	s.Name = &v
4856	return s
4857}
4858
4859// SetSecurityConfiguration sets the SecurityConfiguration field's value.
4860func (s *DescribeSecurityConfigurationOutput) SetSecurityConfiguration(v string) *DescribeSecurityConfigurationOutput {
4861	s.SecurityConfiguration = &v
4862	return s
4863}
4864
4865// This input determines which step to describe.
4866type DescribeStepInput struct {
4867	_ struct{} `type:"structure"`
4868
4869	// The identifier of the cluster with steps to describe.
4870	//
4871	// ClusterId is a required field
4872	ClusterId *string `type:"string" required:"true"`
4873
4874	// The identifier of the step to describe.
4875	//
4876	// StepId is a required field
4877	StepId *string `type:"string" required:"true"`
4878}
4879
4880// String returns the string representation
4881func (s DescribeStepInput) String() string {
4882	return awsutil.Prettify(s)
4883}
4884
4885// GoString returns the string representation
4886func (s DescribeStepInput) GoString() string {
4887	return s.String()
4888}
4889
4890// Validate inspects the fields of the type to determine if they are valid.
4891func (s *DescribeStepInput) Validate() error {
4892	invalidParams := request.ErrInvalidParams{Context: "DescribeStepInput"}
4893	if s.ClusterId == nil {
4894		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
4895	}
4896	if s.StepId == nil {
4897		invalidParams.Add(request.NewErrParamRequired("StepId"))
4898	}
4899
4900	if invalidParams.Len() > 0 {
4901		return invalidParams
4902	}
4903	return nil
4904}
4905
4906// SetClusterId sets the ClusterId field's value.
4907func (s *DescribeStepInput) SetClusterId(v string) *DescribeStepInput {
4908	s.ClusterId = &v
4909	return s
4910}
4911
4912// SetStepId sets the StepId field's value.
4913func (s *DescribeStepInput) SetStepId(v string) *DescribeStepInput {
4914	s.StepId = &v
4915	return s
4916}
4917
4918// This output contains the description of the cluster step.
4919type DescribeStepOutput struct {
4920	_ struct{} `type:"structure"`
4921
4922	// The step details for the requested step identifier.
4923	Step *Step `type:"structure"`
4924}
4925
4926// String returns the string representation
4927func (s DescribeStepOutput) String() string {
4928	return awsutil.Prettify(s)
4929}
4930
4931// GoString returns the string representation
4932func (s DescribeStepOutput) GoString() string {
4933	return s.String()
4934}
4935
4936// SetStep sets the Step field's value.
4937func (s *DescribeStepOutput) SetStep(v *Step) *DescribeStepOutput {
4938	s.Step = v
4939	return s
4940}
4941
4942// Configuration of requested EBS block device associated with the instance
4943// group.
4944type EbsBlockDevice struct {
4945	_ struct{} `type:"structure"`
4946
4947	// The device name that is exposed to the instance, such as /dev/sdh.
4948	Device *string `type:"string"`
4949
4950	// EBS volume specifications such as volume type, IOPS, and size (GiB) that
4951	// will be requested for the EBS volume attached to an EC2 instance in the cluster.
4952	VolumeSpecification *VolumeSpecification `type:"structure"`
4953}
4954
4955// String returns the string representation
4956func (s EbsBlockDevice) String() string {
4957	return awsutil.Prettify(s)
4958}
4959
4960// GoString returns the string representation
4961func (s EbsBlockDevice) GoString() string {
4962	return s.String()
4963}
4964
4965// SetDevice sets the Device field's value.
4966func (s *EbsBlockDevice) SetDevice(v string) *EbsBlockDevice {
4967	s.Device = &v
4968	return s
4969}
4970
4971// SetVolumeSpecification sets the VolumeSpecification field's value.
4972func (s *EbsBlockDevice) SetVolumeSpecification(v *VolumeSpecification) *EbsBlockDevice {
4973	s.VolumeSpecification = v
4974	return s
4975}
4976
4977// Configuration of requested EBS block device associated with the instance
4978// group with count of volumes that will be associated to every instance.
4979type EbsBlockDeviceConfig struct {
4980	_ struct{} `type:"structure"`
4981
4982	// EBS volume specifications such as volume type, IOPS, and size (GiB) that
4983	// will be requested for the EBS volume attached to an EC2 instance in the cluster.
4984	//
4985	// VolumeSpecification is a required field
4986	VolumeSpecification *VolumeSpecification `type:"structure" required:"true"`
4987
4988	// Number of EBS volumes with a specific volume configuration that will be associated
4989	// with every instance in the instance group
4990	VolumesPerInstance *int64 `type:"integer"`
4991}
4992
4993// String returns the string representation
4994func (s EbsBlockDeviceConfig) String() string {
4995	return awsutil.Prettify(s)
4996}
4997
4998// GoString returns the string representation
4999func (s EbsBlockDeviceConfig) GoString() string {
5000	return s.String()
5001}
5002
5003// Validate inspects the fields of the type to determine if they are valid.
5004func (s *EbsBlockDeviceConfig) Validate() error {
5005	invalidParams := request.ErrInvalidParams{Context: "EbsBlockDeviceConfig"}
5006	if s.VolumeSpecification == nil {
5007		invalidParams.Add(request.NewErrParamRequired("VolumeSpecification"))
5008	}
5009	if s.VolumeSpecification != nil {
5010		if err := s.VolumeSpecification.Validate(); err != nil {
5011			invalidParams.AddNested("VolumeSpecification", err.(request.ErrInvalidParams))
5012		}
5013	}
5014
5015	if invalidParams.Len() > 0 {
5016		return invalidParams
5017	}
5018	return nil
5019}
5020
5021// SetVolumeSpecification sets the VolumeSpecification field's value.
5022func (s *EbsBlockDeviceConfig) SetVolumeSpecification(v *VolumeSpecification) *EbsBlockDeviceConfig {
5023	s.VolumeSpecification = v
5024	return s
5025}
5026
5027// SetVolumesPerInstance sets the VolumesPerInstance field's value.
5028func (s *EbsBlockDeviceConfig) SetVolumesPerInstance(v int64) *EbsBlockDeviceConfig {
5029	s.VolumesPerInstance = &v
5030	return s
5031}
5032
5033// The Amazon EBS configuration of a cluster instance.
5034type EbsConfiguration struct {
5035	_ struct{} `type:"structure"`
5036
5037	// An array of Amazon EBS volume specifications attached to a cluster instance.
5038	EbsBlockDeviceConfigs []*EbsBlockDeviceConfig `type:"list"`
5039
5040	// Indicates whether an Amazon EBS volume is EBS-optimized.
5041	EbsOptimized *bool `type:"boolean"`
5042}
5043
5044// String returns the string representation
5045func (s EbsConfiguration) String() string {
5046	return awsutil.Prettify(s)
5047}
5048
5049// GoString returns the string representation
5050func (s EbsConfiguration) GoString() string {
5051	return s.String()
5052}
5053
5054// Validate inspects the fields of the type to determine if they are valid.
5055func (s *EbsConfiguration) Validate() error {
5056	invalidParams := request.ErrInvalidParams{Context: "EbsConfiguration"}
5057	if s.EbsBlockDeviceConfigs != nil {
5058		for i, v := range s.EbsBlockDeviceConfigs {
5059			if v == nil {
5060				continue
5061			}
5062			if err := v.Validate(); err != nil {
5063				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EbsBlockDeviceConfigs", i), err.(request.ErrInvalidParams))
5064			}
5065		}
5066	}
5067
5068	if invalidParams.Len() > 0 {
5069		return invalidParams
5070	}
5071	return nil
5072}
5073
5074// SetEbsBlockDeviceConfigs sets the EbsBlockDeviceConfigs field's value.
5075func (s *EbsConfiguration) SetEbsBlockDeviceConfigs(v []*EbsBlockDeviceConfig) *EbsConfiguration {
5076	s.EbsBlockDeviceConfigs = v
5077	return s
5078}
5079
5080// SetEbsOptimized sets the EbsOptimized field's value.
5081func (s *EbsConfiguration) SetEbsOptimized(v bool) *EbsConfiguration {
5082	s.EbsOptimized = &v
5083	return s
5084}
5085
5086// EBS block device that's attached to an EC2 instance.
5087type EbsVolume struct {
5088	_ struct{} `type:"structure"`
5089
5090	// The device name that is exposed to the instance, such as /dev/sdh.
5091	Device *string `type:"string"`
5092
5093	// The volume identifier of the EBS volume.
5094	VolumeId *string `type:"string"`
5095}
5096
5097// String returns the string representation
5098func (s EbsVolume) String() string {
5099	return awsutil.Prettify(s)
5100}
5101
5102// GoString returns the string representation
5103func (s EbsVolume) GoString() string {
5104	return s.String()
5105}
5106
5107// SetDevice sets the Device field's value.
5108func (s *EbsVolume) SetDevice(v string) *EbsVolume {
5109	s.Device = &v
5110	return s
5111}
5112
5113// SetVolumeId sets the VolumeId field's value.
5114func (s *EbsVolume) SetVolumeId(v string) *EbsVolume {
5115	s.VolumeId = &v
5116	return s
5117}
5118
5119// Provides information about the EC2 instances in a cluster grouped by category.
5120// For example, key name, subnet ID, IAM instance profile, and so on.
5121type Ec2InstanceAttributes struct {
5122	_ struct{} `type:"structure"`
5123
5124	// A list of additional Amazon EC2 security group IDs for the master node.
5125	AdditionalMasterSecurityGroups []*string `type:"list"`
5126
5127	// A list of additional Amazon EC2 security group IDs for the core and task
5128	// nodes.
5129	AdditionalSlaveSecurityGroups []*string `type:"list"`
5130
5131	// The Availability Zone in which the cluster will run.
5132	Ec2AvailabilityZone *string `type:"string"`
5133
5134	// The name of the Amazon EC2 key pair to use when connecting with SSH into
5135	// the master node as a user named "hadoop".
5136	Ec2KeyName *string `type:"string"`
5137
5138	// Set this parameter to the identifier of the Amazon VPC subnet where you want
5139	// the cluster to launch. If you do not specify this value, and your account
5140	// supports EC2-Classic, the cluster launches in EC2-Classic.
5141	Ec2SubnetId *string `type:"string"`
5142
5143	// The identifier of the Amazon EC2 security group for the master node.
5144	EmrManagedMasterSecurityGroup *string `type:"string"`
5145
5146	// The identifier of the Amazon EC2 security group for the core and task nodes.
5147	EmrManagedSlaveSecurityGroup *string `type:"string"`
5148
5149	// The IAM role that was specified when the cluster was launched. The EC2 instances
5150	// of the cluster assume this role.
5151	IamInstanceProfile *string `type:"string"`
5152
5153	// Applies to clusters configured with the instance fleets option. Specifies
5154	// one or more Availability Zones in which to launch EC2 cluster instances when
5155	// the EC2-Classic network configuration is supported. Amazon EMR chooses the
5156	// Availability Zone with the best fit from among the list of RequestedEc2AvailabilityZones,
5157	// and then launches all cluster instances within that Availability Zone. If
5158	// you do not specify this value, Amazon EMR chooses the Availability Zone for
5159	// you. RequestedEc2SubnetIDs and RequestedEc2AvailabilityZones cannot be specified
5160	// together.
5161	RequestedEc2AvailabilityZones []*string `type:"list"`
5162
5163	// Applies to clusters configured with the instance fleets option. Specifies
5164	// the unique identifier of one or more Amazon EC2 subnets in which to launch
5165	// EC2 cluster instances. Subnets must exist within the same VPC. Amazon EMR
5166	// chooses the EC2 subnet with the best fit from among the list of RequestedEc2SubnetIds,
5167	// and then launches all cluster instances within that Subnet. If this value
5168	// is not specified, and the account and Region support EC2-Classic networks,
5169	// the cluster launches instances in the EC2-Classic network and uses RequestedEc2AvailabilityZones
5170	// instead of this setting. If EC2-Classic is not supported, and no Subnet is
5171	// specified, Amazon EMR chooses the subnet for you. RequestedEc2SubnetIDs and
5172	// RequestedEc2AvailabilityZones cannot be specified together.
5173	RequestedEc2SubnetIds []*string `type:"list"`
5174
5175	// The identifier of the Amazon EC2 security group for the Amazon EMR service
5176	// to access clusters in VPC private subnets.
5177	ServiceAccessSecurityGroup *string `type:"string"`
5178}
5179
5180// String returns the string representation
5181func (s Ec2InstanceAttributes) String() string {
5182	return awsutil.Prettify(s)
5183}
5184
5185// GoString returns the string representation
5186func (s Ec2InstanceAttributes) GoString() string {
5187	return s.String()
5188}
5189
5190// SetAdditionalMasterSecurityGroups sets the AdditionalMasterSecurityGroups field's value.
5191func (s *Ec2InstanceAttributes) SetAdditionalMasterSecurityGroups(v []*string) *Ec2InstanceAttributes {
5192	s.AdditionalMasterSecurityGroups = v
5193	return s
5194}
5195
5196// SetAdditionalSlaveSecurityGroups sets the AdditionalSlaveSecurityGroups field's value.
5197func (s *Ec2InstanceAttributes) SetAdditionalSlaveSecurityGroups(v []*string) *Ec2InstanceAttributes {
5198	s.AdditionalSlaveSecurityGroups = v
5199	return s
5200}
5201
5202// SetEc2AvailabilityZone sets the Ec2AvailabilityZone field's value.
5203func (s *Ec2InstanceAttributes) SetEc2AvailabilityZone(v string) *Ec2InstanceAttributes {
5204	s.Ec2AvailabilityZone = &v
5205	return s
5206}
5207
5208// SetEc2KeyName sets the Ec2KeyName field's value.
5209func (s *Ec2InstanceAttributes) SetEc2KeyName(v string) *Ec2InstanceAttributes {
5210	s.Ec2KeyName = &v
5211	return s
5212}
5213
5214// SetEc2SubnetId sets the Ec2SubnetId field's value.
5215func (s *Ec2InstanceAttributes) SetEc2SubnetId(v string) *Ec2InstanceAttributes {
5216	s.Ec2SubnetId = &v
5217	return s
5218}
5219
5220// SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value.
5221func (s *Ec2InstanceAttributes) SetEmrManagedMasterSecurityGroup(v string) *Ec2InstanceAttributes {
5222	s.EmrManagedMasterSecurityGroup = &v
5223	return s
5224}
5225
5226// SetEmrManagedSlaveSecurityGroup sets the EmrManagedSlaveSecurityGroup field's value.
5227func (s *Ec2InstanceAttributes) SetEmrManagedSlaveSecurityGroup(v string) *Ec2InstanceAttributes {
5228	s.EmrManagedSlaveSecurityGroup = &v
5229	return s
5230}
5231
5232// SetIamInstanceProfile sets the IamInstanceProfile field's value.
5233func (s *Ec2InstanceAttributes) SetIamInstanceProfile(v string) *Ec2InstanceAttributes {
5234	s.IamInstanceProfile = &v
5235	return s
5236}
5237
5238// SetRequestedEc2AvailabilityZones sets the RequestedEc2AvailabilityZones field's value.
5239func (s *Ec2InstanceAttributes) SetRequestedEc2AvailabilityZones(v []*string) *Ec2InstanceAttributes {
5240	s.RequestedEc2AvailabilityZones = v
5241	return s
5242}
5243
5244// SetRequestedEc2SubnetIds sets the RequestedEc2SubnetIds field's value.
5245func (s *Ec2InstanceAttributes) SetRequestedEc2SubnetIds(v []*string) *Ec2InstanceAttributes {
5246	s.RequestedEc2SubnetIds = v
5247	return s
5248}
5249
5250// SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value.
5251func (s *Ec2InstanceAttributes) SetServiceAccessSecurityGroup(v string) *Ec2InstanceAttributes {
5252	s.ServiceAccessSecurityGroup = &v
5253	return s
5254}
5255
5256// The details of the step failure. The service attempts to detect the root
5257// cause for many common failures.
5258type FailureDetails struct {
5259	_ struct{} `type:"structure"`
5260
5261	// The path to the log file where the step failure root cause was originally
5262	// recorded.
5263	LogFile *string `type:"string"`
5264
5265	// The descriptive message including the error the EMR service has identified
5266	// as the cause of step failure. This is text from an error log that describes
5267	// the root cause of the failure.
5268	Message *string `type:"string"`
5269
5270	// The reason for the step failure. In the case where the service cannot successfully
5271	// determine the root cause of the failure, it returns "Unknown Error" as a
5272	// reason.
5273	Reason *string `type:"string"`
5274}
5275
5276// String returns the string representation
5277func (s FailureDetails) String() string {
5278	return awsutil.Prettify(s)
5279}
5280
5281// GoString returns the string representation
5282func (s FailureDetails) GoString() string {
5283	return s.String()
5284}
5285
5286// SetLogFile sets the LogFile field's value.
5287func (s *FailureDetails) SetLogFile(v string) *FailureDetails {
5288	s.LogFile = &v
5289	return s
5290}
5291
5292// SetMessage sets the Message field's value.
5293func (s *FailureDetails) SetMessage(v string) *FailureDetails {
5294	s.Message = &v
5295	return s
5296}
5297
5298// SetReason sets the Reason field's value.
5299func (s *FailureDetails) SetReason(v string) *FailureDetails {
5300	s.Reason = &v
5301	return s
5302}
5303
5304type GetBlockPublicAccessConfigurationInput struct {
5305	_ struct{} `type:"structure"`
5306}
5307
5308// String returns the string representation
5309func (s GetBlockPublicAccessConfigurationInput) String() string {
5310	return awsutil.Prettify(s)
5311}
5312
5313// GoString returns the string representation
5314func (s GetBlockPublicAccessConfigurationInput) GoString() string {
5315	return s.String()
5316}
5317
5318type GetBlockPublicAccessConfigurationOutput struct {
5319	_ struct{} `type:"structure"`
5320
5321	// A configuration for Amazon EMR block public access. The configuration applies
5322	// to all clusters created in your account for the current Region. The configuration
5323	// specifies whether block public access is enabled. If block public access
5324	// is enabled, security groups associated with the cluster cannot have rules
5325	// that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port
5326	// is specified as an exception using PermittedPublicSecurityGroupRuleRanges
5327	// in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception,
5328	// and public access is allowed on this port. You can change this by updating
5329	// the block public access configuration to remove the exception.
5330	//
5331	// BlockPublicAccessConfiguration is a required field
5332	BlockPublicAccessConfiguration *BlockPublicAccessConfiguration `type:"structure" required:"true"`
5333
5334	// Properties that describe the AWS principal that created the BlockPublicAccessConfiguration
5335	// using the PutBlockPublicAccessConfiguration action as well as the date and
5336	// time that the configuration was created. Each time a configuration for block
5337	// public access is updated, Amazon EMR updates this metadata.
5338	//
5339	// BlockPublicAccessConfigurationMetadata is a required field
5340	BlockPublicAccessConfigurationMetadata *BlockPublicAccessConfigurationMetadata `type:"structure" required:"true"`
5341}
5342
5343// String returns the string representation
5344func (s GetBlockPublicAccessConfigurationOutput) String() string {
5345	return awsutil.Prettify(s)
5346}
5347
5348// GoString returns the string representation
5349func (s GetBlockPublicAccessConfigurationOutput) GoString() string {
5350	return s.String()
5351}
5352
5353// SetBlockPublicAccessConfiguration sets the BlockPublicAccessConfiguration field's value.
5354func (s *GetBlockPublicAccessConfigurationOutput) SetBlockPublicAccessConfiguration(v *BlockPublicAccessConfiguration) *GetBlockPublicAccessConfigurationOutput {
5355	s.BlockPublicAccessConfiguration = v
5356	return s
5357}
5358
5359// SetBlockPublicAccessConfigurationMetadata sets the BlockPublicAccessConfigurationMetadata field's value.
5360func (s *GetBlockPublicAccessConfigurationOutput) SetBlockPublicAccessConfigurationMetadata(v *BlockPublicAccessConfigurationMetadata) *GetBlockPublicAccessConfigurationOutput {
5361	s.BlockPublicAccessConfigurationMetadata = v
5362	return s
5363}
5364
5365// A job flow step consisting of a JAR file whose main function will be executed.
5366// The main function submits a job for Hadoop to execute and waits for the job
5367// to finish or fail.
5368type HadoopJarStepConfig struct {
5369	_ struct{} `type:"structure"`
5370
5371	// A list of command line arguments passed to the JAR file's main function when
5372	// executed.
5373	Args []*string `type:"list"`
5374
5375	// A path to a JAR file run during the step.
5376	//
5377	// Jar is a required field
5378	Jar *string `type:"string" required:"true"`
5379
5380	// The name of the main class in the specified Java file. If not specified,
5381	// the JAR file should specify a Main-Class in its manifest file.
5382	MainClass *string `type:"string"`
5383
5384	// A list of Java properties that are set when the step runs. You can use these
5385	// properties to pass key value pairs to your main function.
5386	Properties []*KeyValue `type:"list"`
5387}
5388
5389// String returns the string representation
5390func (s HadoopJarStepConfig) String() string {
5391	return awsutil.Prettify(s)
5392}
5393
5394// GoString returns the string representation
5395func (s HadoopJarStepConfig) GoString() string {
5396	return s.String()
5397}
5398
5399// Validate inspects the fields of the type to determine if they are valid.
5400func (s *HadoopJarStepConfig) Validate() error {
5401	invalidParams := request.ErrInvalidParams{Context: "HadoopJarStepConfig"}
5402	if s.Jar == nil {
5403		invalidParams.Add(request.NewErrParamRequired("Jar"))
5404	}
5405
5406	if invalidParams.Len() > 0 {
5407		return invalidParams
5408	}
5409	return nil
5410}
5411
5412// SetArgs sets the Args field's value.
5413func (s *HadoopJarStepConfig) SetArgs(v []*string) *HadoopJarStepConfig {
5414	s.Args = v
5415	return s
5416}
5417
5418// SetJar sets the Jar field's value.
5419func (s *HadoopJarStepConfig) SetJar(v string) *HadoopJarStepConfig {
5420	s.Jar = &v
5421	return s
5422}
5423
5424// SetMainClass sets the MainClass field's value.
5425func (s *HadoopJarStepConfig) SetMainClass(v string) *HadoopJarStepConfig {
5426	s.MainClass = &v
5427	return s
5428}
5429
5430// SetProperties sets the Properties field's value.
5431func (s *HadoopJarStepConfig) SetProperties(v []*KeyValue) *HadoopJarStepConfig {
5432	s.Properties = v
5433	return s
5434}
5435
5436// A cluster step consisting of a JAR file whose main function will be executed.
5437// The main function submits a job for Hadoop to execute and waits for the job
5438// to finish or fail.
5439type HadoopStepConfig struct {
5440	_ struct{} `type:"structure"`
5441
5442	// The list of command line arguments to pass to the JAR file's main function
5443	// for execution.
5444	Args []*string `type:"list"`
5445
5446	// The path to the JAR file that runs during the step.
5447	Jar *string `type:"string"`
5448
5449	// The name of the main class in the specified Java file. If not specified,
5450	// the JAR file should specify a main class in its manifest file.
5451	MainClass *string `type:"string"`
5452
5453	// The list of Java properties that are set when the step runs. You can use
5454	// these properties to pass key value pairs to your main function.
5455	Properties map[string]*string `type:"map"`
5456}
5457
5458// String returns the string representation
5459func (s HadoopStepConfig) String() string {
5460	return awsutil.Prettify(s)
5461}
5462
5463// GoString returns the string representation
5464func (s HadoopStepConfig) GoString() string {
5465	return s.String()
5466}
5467
5468// SetArgs sets the Args field's value.
5469func (s *HadoopStepConfig) SetArgs(v []*string) *HadoopStepConfig {
5470	s.Args = v
5471	return s
5472}
5473
5474// SetJar sets the Jar field's value.
5475func (s *HadoopStepConfig) SetJar(v string) *HadoopStepConfig {
5476	s.Jar = &v
5477	return s
5478}
5479
5480// SetMainClass sets the MainClass field's value.
5481func (s *HadoopStepConfig) SetMainClass(v string) *HadoopStepConfig {
5482	s.MainClass = &v
5483	return s
5484}
5485
5486// SetProperties sets the Properties field's value.
5487func (s *HadoopStepConfig) SetProperties(v map[string]*string) *HadoopStepConfig {
5488	s.Properties = v
5489	return s
5490}
5491
5492// Represents an EC2 instance provisioned as part of cluster.
5493type Instance struct {
5494	_ struct{} `type:"structure"`
5495
5496	// The list of EBS volumes that are attached to this instance.
5497	EbsVolumes []*EbsVolume `type:"list"`
5498
5499	// The unique identifier of the instance in Amazon EC2.
5500	Ec2InstanceId *string `type:"string"`
5501
5502	// The unique identifier for the instance in Amazon EMR.
5503	Id *string `type:"string"`
5504
5505	// The unique identifier of the instance fleet to which an EC2 instance belongs.
5506	InstanceFleetId *string `type:"string"`
5507
5508	// The identifier of the instance group to which this instance belongs.
5509	InstanceGroupId *string `type:"string"`
5510
5511	// The EC2 instance type, for example m3.xlarge.
5512	InstanceType *string `min:"1" type:"string"`
5513
5514	// The instance purchasing option. Valid values are ON_DEMAND or SPOT.
5515	Market *string `type:"string" enum:"MarketType"`
5516
5517	// The private DNS name of the instance.
5518	PrivateDnsName *string `type:"string"`
5519
5520	// The private IP address of the instance.
5521	PrivateIpAddress *string `type:"string"`
5522
5523	// The public DNS name of the instance.
5524	PublicDnsName *string `type:"string"`
5525
5526	// The public IP address of the instance.
5527	PublicIpAddress *string `type:"string"`
5528
5529	// The current status of the instance.
5530	Status *InstanceStatus `type:"structure"`
5531}
5532
5533// String returns the string representation
5534func (s Instance) String() string {
5535	return awsutil.Prettify(s)
5536}
5537
5538// GoString returns the string representation
5539func (s Instance) GoString() string {
5540	return s.String()
5541}
5542
5543// SetEbsVolumes sets the EbsVolumes field's value.
5544func (s *Instance) SetEbsVolumes(v []*EbsVolume) *Instance {
5545	s.EbsVolumes = v
5546	return s
5547}
5548
5549// SetEc2InstanceId sets the Ec2InstanceId field's value.
5550func (s *Instance) SetEc2InstanceId(v string) *Instance {
5551	s.Ec2InstanceId = &v
5552	return s
5553}
5554
5555// SetId sets the Id field's value.
5556func (s *Instance) SetId(v string) *Instance {
5557	s.Id = &v
5558	return s
5559}
5560
5561// SetInstanceFleetId sets the InstanceFleetId field's value.
5562func (s *Instance) SetInstanceFleetId(v string) *Instance {
5563	s.InstanceFleetId = &v
5564	return s
5565}
5566
5567// SetInstanceGroupId sets the InstanceGroupId field's value.
5568func (s *Instance) SetInstanceGroupId(v string) *Instance {
5569	s.InstanceGroupId = &v
5570	return s
5571}
5572
5573// SetInstanceType sets the InstanceType field's value.
5574func (s *Instance) SetInstanceType(v string) *Instance {
5575	s.InstanceType = &v
5576	return s
5577}
5578
5579// SetMarket sets the Market field's value.
5580func (s *Instance) SetMarket(v string) *Instance {
5581	s.Market = &v
5582	return s
5583}
5584
5585// SetPrivateDnsName sets the PrivateDnsName field's value.
5586func (s *Instance) SetPrivateDnsName(v string) *Instance {
5587	s.PrivateDnsName = &v
5588	return s
5589}
5590
5591// SetPrivateIpAddress sets the PrivateIpAddress field's value.
5592func (s *Instance) SetPrivateIpAddress(v string) *Instance {
5593	s.PrivateIpAddress = &v
5594	return s
5595}
5596
5597// SetPublicDnsName sets the PublicDnsName field's value.
5598func (s *Instance) SetPublicDnsName(v string) *Instance {
5599	s.PublicDnsName = &v
5600	return s
5601}
5602
5603// SetPublicIpAddress sets the PublicIpAddress field's value.
5604func (s *Instance) SetPublicIpAddress(v string) *Instance {
5605	s.PublicIpAddress = &v
5606	return s
5607}
5608
5609// SetStatus sets the Status field's value.
5610func (s *Instance) SetStatus(v *InstanceStatus) *Instance {
5611	s.Status = v
5612	return s
5613}
5614
5615// Describes an instance fleet, which is a group of EC2 instances that host
5616// a particular node type (master, core, or task) in an Amazon EMR cluster.
5617// Instance fleets can consist of a mix of instance types and On-Demand and
5618// Spot instances, which are provisioned to meet a defined target capacity.
5619//
5620// The instance fleet configuration is available only in Amazon EMR versions
5621// 4.8.0 and later, excluding 5.0.x versions.
5622type InstanceFleet struct {
5623	_ struct{} `type:"structure"`
5624
5625	// The unique identifier of the instance fleet.
5626	Id *string `type:"string"`
5627
5628	// The node type that the instance fleet hosts. Valid values are MASTER, CORE,
5629	// or TASK.
5630	InstanceFleetType *string `type:"string" enum:"InstanceFleetType"`
5631
5632	// The specification for the instance types that comprise an instance fleet.
5633	// Up to five unique instance specifications may be defined for each instance
5634	// fleet.
5635	InstanceTypeSpecifications []*InstanceTypeSpecification `type:"list"`
5636
5637	// Describes the launch specification for an instance fleet.
5638	LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"`
5639
5640	// A friendly name for the instance fleet.
5641	Name *string `type:"string"`
5642
5643	// The number of On-Demand units that have been provisioned for the instance
5644	// fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might
5645	// be less than or greater than TargetOnDemandCapacity.
5646	ProvisionedOnDemandCapacity *int64 `type:"integer"`
5647
5648	// The number of Spot units that have been provisioned for this instance fleet
5649	// to fulfill TargetSpotCapacity. This provisioned capacity might be less than
5650	// or greater than TargetSpotCapacity.
5651	ProvisionedSpotCapacity *int64 `type:"integer"`
5652
5653	// The current status of the instance fleet.
5654	Status *InstanceFleetStatus `type:"structure"`
5655
5656	// The target capacity of On-Demand units for the instance fleet, which determines
5657	// how many On-Demand instances to provision. When the instance fleet launches,
5658	// Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig.
5659	// Each instance configuration has a specified WeightedCapacity. When an On-Demand
5660	// instance is provisioned, the WeightedCapacity units count toward the target
5661	// capacity. Amazon EMR provisions instances until the target capacity is totally
5662	// fulfilled, even if this results in an overage. For example, if there are
5663	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5664	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5665	// and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedOnDemandCapacity
5666	// to determine the Spot capacity units that have been provisioned for the instance
5667	// fleet.
5668	//
5669	// If not specified or set to 0, only Spot instances are provisioned for the
5670	// instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity
5671	// and TargetOnDemandCapacity should be greater than 0. For a master instance
5672	// fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified,
5673	// and its value must be 1.
5674	TargetOnDemandCapacity *int64 `type:"integer"`
5675
5676	// The target capacity of Spot units for the instance fleet, which determines
5677	// how many Spot instances to provision. When the instance fleet launches, Amazon
5678	// EMR tries to provision Spot instances as specified by InstanceTypeConfig.
5679	// Each instance configuration has a specified WeightedCapacity. When a Spot
5680	// instance is provisioned, the WeightedCapacity units count toward the target
5681	// capacity. Amazon EMR provisions instances until the target capacity is totally
5682	// fulfilled, even if this results in an overage. For example, if there are
5683	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5684	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5685	// and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedSpotCapacity
5686	// to determine the Spot capacity units that have been provisioned for the instance
5687	// fleet.
5688	//
5689	// If not specified or set to 0, only On-Demand instances are provisioned for
5690	// the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity
5691	// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
5692	// and TargetOnDemandCapacity can be specified, and its value must be 1.
5693	TargetSpotCapacity *int64 `type:"integer"`
5694}
5695
5696// String returns the string representation
5697func (s InstanceFleet) String() string {
5698	return awsutil.Prettify(s)
5699}
5700
5701// GoString returns the string representation
5702func (s InstanceFleet) GoString() string {
5703	return s.String()
5704}
5705
5706// SetId sets the Id field's value.
5707func (s *InstanceFleet) SetId(v string) *InstanceFleet {
5708	s.Id = &v
5709	return s
5710}
5711
5712// SetInstanceFleetType sets the InstanceFleetType field's value.
5713func (s *InstanceFleet) SetInstanceFleetType(v string) *InstanceFleet {
5714	s.InstanceFleetType = &v
5715	return s
5716}
5717
5718// SetInstanceTypeSpecifications sets the InstanceTypeSpecifications field's value.
5719func (s *InstanceFleet) SetInstanceTypeSpecifications(v []*InstanceTypeSpecification) *InstanceFleet {
5720	s.InstanceTypeSpecifications = v
5721	return s
5722}
5723
5724// SetLaunchSpecifications sets the LaunchSpecifications field's value.
5725func (s *InstanceFleet) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleet {
5726	s.LaunchSpecifications = v
5727	return s
5728}
5729
5730// SetName sets the Name field's value.
5731func (s *InstanceFleet) SetName(v string) *InstanceFleet {
5732	s.Name = &v
5733	return s
5734}
5735
5736// SetProvisionedOnDemandCapacity sets the ProvisionedOnDemandCapacity field's value.
5737func (s *InstanceFleet) SetProvisionedOnDemandCapacity(v int64) *InstanceFleet {
5738	s.ProvisionedOnDemandCapacity = &v
5739	return s
5740}
5741
5742// SetProvisionedSpotCapacity sets the ProvisionedSpotCapacity field's value.
5743func (s *InstanceFleet) SetProvisionedSpotCapacity(v int64) *InstanceFleet {
5744	s.ProvisionedSpotCapacity = &v
5745	return s
5746}
5747
5748// SetStatus sets the Status field's value.
5749func (s *InstanceFleet) SetStatus(v *InstanceFleetStatus) *InstanceFleet {
5750	s.Status = v
5751	return s
5752}
5753
5754// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
5755func (s *InstanceFleet) SetTargetOnDemandCapacity(v int64) *InstanceFleet {
5756	s.TargetOnDemandCapacity = &v
5757	return s
5758}
5759
5760// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
5761func (s *InstanceFleet) SetTargetSpotCapacity(v int64) *InstanceFleet {
5762	s.TargetSpotCapacity = &v
5763	return s
5764}
5765
5766// The configuration that defines an instance fleet.
5767//
5768// The instance fleet configuration is available only in Amazon EMR versions
5769// 4.8.0 and later, excluding 5.0.x versions.
5770type InstanceFleetConfig struct {
5771	_ struct{} `type:"structure"`
5772
5773	// The node type that the instance fleet hosts. Valid values are MASTER,CORE,and
5774	// TASK.
5775	//
5776	// InstanceFleetType is a required field
5777	InstanceFleetType *string `type:"string" required:"true" enum:"InstanceFleetType"`
5778
5779	// The instance type configurations that define the EC2 instances in the instance
5780	// fleet.
5781	InstanceTypeConfigs []*InstanceTypeConfig `type:"list"`
5782
5783	// The launch specification for the instance fleet.
5784	LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"`
5785
5786	// The friendly name of the instance fleet.
5787	Name *string `type:"string"`
5788
5789	// The target capacity of On-Demand units for the instance fleet, which determines
5790	// how many On-Demand instances to provision. When the instance fleet launches,
5791	// Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig.
5792	// Each instance configuration has a specified WeightedCapacity. When an On-Demand
5793	// instance is provisioned, the WeightedCapacity units count toward the target
5794	// capacity. Amazon EMR provisions instances until the target capacity is totally
5795	// fulfilled, even if this results in an overage. For example, if there are
5796	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5797	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5798	// and the target capacity is exceeded by 3 units.
5799	//
5800	// If not specified or set to 0, only Spot instances are provisioned for the
5801	// instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity
5802	// and TargetOnDemandCapacity should be greater than 0. For a master instance
5803	// fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified,
5804	// and its value must be 1.
5805	TargetOnDemandCapacity *int64 `type:"integer"`
5806
5807	// The target capacity of Spot units for the instance fleet, which determines
5808	// how many Spot instances to provision. When the instance fleet launches, Amazon
5809	// EMR tries to provision Spot instances as specified by InstanceTypeConfig.
5810	// Each instance configuration has a specified WeightedCapacity. When a Spot
5811	// instance is provisioned, the WeightedCapacity units count toward the target
5812	// capacity. Amazon EMR provisions instances until the target capacity is totally
5813	// fulfilled, even if this results in an overage. For example, if there are
5814	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5815	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5816	// and the target capacity is exceeded by 3 units.
5817	//
5818	// If not specified or set to 0, only On-Demand instances are provisioned for
5819	// the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity
5820	// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
5821	// and TargetOnDemandCapacity can be specified, and its value must be 1.
5822	TargetSpotCapacity *int64 `type:"integer"`
5823}
5824
5825// String returns the string representation
5826func (s InstanceFleetConfig) String() string {
5827	return awsutil.Prettify(s)
5828}
5829
5830// GoString returns the string representation
5831func (s InstanceFleetConfig) GoString() string {
5832	return s.String()
5833}
5834
5835// Validate inspects the fields of the type to determine if they are valid.
5836func (s *InstanceFleetConfig) Validate() error {
5837	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetConfig"}
5838	if s.InstanceFleetType == nil {
5839		invalidParams.Add(request.NewErrParamRequired("InstanceFleetType"))
5840	}
5841	if s.InstanceTypeConfigs != nil {
5842		for i, v := range s.InstanceTypeConfigs {
5843			if v == nil {
5844				continue
5845			}
5846			if err := v.Validate(); err != nil {
5847				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceTypeConfigs", i), err.(request.ErrInvalidParams))
5848			}
5849		}
5850	}
5851	if s.LaunchSpecifications != nil {
5852		if err := s.LaunchSpecifications.Validate(); err != nil {
5853			invalidParams.AddNested("LaunchSpecifications", err.(request.ErrInvalidParams))
5854		}
5855	}
5856
5857	if invalidParams.Len() > 0 {
5858		return invalidParams
5859	}
5860	return nil
5861}
5862
5863// SetInstanceFleetType sets the InstanceFleetType field's value.
5864func (s *InstanceFleetConfig) SetInstanceFleetType(v string) *InstanceFleetConfig {
5865	s.InstanceFleetType = &v
5866	return s
5867}
5868
5869// SetInstanceTypeConfigs sets the InstanceTypeConfigs field's value.
5870func (s *InstanceFleetConfig) SetInstanceTypeConfigs(v []*InstanceTypeConfig) *InstanceFleetConfig {
5871	s.InstanceTypeConfigs = v
5872	return s
5873}
5874
5875// SetLaunchSpecifications sets the LaunchSpecifications field's value.
5876func (s *InstanceFleetConfig) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleetConfig {
5877	s.LaunchSpecifications = v
5878	return s
5879}
5880
5881// SetName sets the Name field's value.
5882func (s *InstanceFleetConfig) SetName(v string) *InstanceFleetConfig {
5883	s.Name = &v
5884	return s
5885}
5886
5887// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
5888func (s *InstanceFleetConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetConfig {
5889	s.TargetOnDemandCapacity = &v
5890	return s
5891}
5892
5893// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
5894func (s *InstanceFleetConfig) SetTargetSpotCapacity(v int64) *InstanceFleetConfig {
5895	s.TargetSpotCapacity = &v
5896	return s
5897}
5898
5899// Configuration parameters for an instance fleet modification request.
5900//
5901// The instance fleet configuration is available only in Amazon EMR versions
5902// 4.8.0 and later, excluding 5.0.x versions.
5903type InstanceFleetModifyConfig struct {
5904	_ struct{} `type:"structure"`
5905
5906	// A unique identifier for the instance fleet.
5907	//
5908	// InstanceFleetId is a required field
5909	InstanceFleetId *string `type:"string" required:"true"`
5910
5911	// The target capacity of On-Demand units for the instance fleet. For more information
5912	// see InstanceFleetConfig$TargetOnDemandCapacity.
5913	TargetOnDemandCapacity *int64 `type:"integer"`
5914
5915	// The target capacity of Spot units for the instance fleet. For more information,
5916	// see InstanceFleetConfig$TargetSpotCapacity.
5917	TargetSpotCapacity *int64 `type:"integer"`
5918}
5919
5920// String returns the string representation
5921func (s InstanceFleetModifyConfig) String() string {
5922	return awsutil.Prettify(s)
5923}
5924
5925// GoString returns the string representation
5926func (s InstanceFleetModifyConfig) GoString() string {
5927	return s.String()
5928}
5929
5930// Validate inspects the fields of the type to determine if they are valid.
5931func (s *InstanceFleetModifyConfig) Validate() error {
5932	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetModifyConfig"}
5933	if s.InstanceFleetId == nil {
5934		invalidParams.Add(request.NewErrParamRequired("InstanceFleetId"))
5935	}
5936
5937	if invalidParams.Len() > 0 {
5938		return invalidParams
5939	}
5940	return nil
5941}
5942
5943// SetInstanceFleetId sets the InstanceFleetId field's value.
5944func (s *InstanceFleetModifyConfig) SetInstanceFleetId(v string) *InstanceFleetModifyConfig {
5945	s.InstanceFleetId = &v
5946	return s
5947}
5948
5949// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
5950func (s *InstanceFleetModifyConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetModifyConfig {
5951	s.TargetOnDemandCapacity = &v
5952	return s
5953}
5954
5955// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
5956func (s *InstanceFleetModifyConfig) SetTargetSpotCapacity(v int64) *InstanceFleetModifyConfig {
5957	s.TargetSpotCapacity = &v
5958	return s
5959}
5960
5961// The launch specification for Spot instances in the fleet, which determines
5962// the defined duration and provisioning timeout behavior.
5963//
5964// The instance fleet configuration is available only in Amazon EMR versions
5965// 4.8.0 and later, excluding 5.0.x versions.
5966type InstanceFleetProvisioningSpecifications struct {
5967	_ struct{} `type:"structure"`
5968
5969	// The launch specification for Spot instances in the fleet, which determines
5970	// the defined duration and provisioning timeout behavior.
5971	//
5972	// SpotSpecification is a required field
5973	SpotSpecification *SpotProvisioningSpecification `type:"structure" required:"true"`
5974}
5975
5976// String returns the string representation
5977func (s InstanceFleetProvisioningSpecifications) String() string {
5978	return awsutil.Prettify(s)
5979}
5980
5981// GoString returns the string representation
5982func (s InstanceFleetProvisioningSpecifications) GoString() string {
5983	return s.String()
5984}
5985
5986// Validate inspects the fields of the type to determine if they are valid.
5987func (s *InstanceFleetProvisioningSpecifications) Validate() error {
5988	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetProvisioningSpecifications"}
5989	if s.SpotSpecification == nil {
5990		invalidParams.Add(request.NewErrParamRequired("SpotSpecification"))
5991	}
5992	if s.SpotSpecification != nil {
5993		if err := s.SpotSpecification.Validate(); err != nil {
5994			invalidParams.AddNested("SpotSpecification", err.(request.ErrInvalidParams))
5995		}
5996	}
5997
5998	if invalidParams.Len() > 0 {
5999		return invalidParams
6000	}
6001	return nil
6002}
6003
6004// SetSpotSpecification sets the SpotSpecification field's value.
6005func (s *InstanceFleetProvisioningSpecifications) SetSpotSpecification(v *SpotProvisioningSpecification) *InstanceFleetProvisioningSpecifications {
6006	s.SpotSpecification = v
6007	return s
6008}
6009
6010// Provides status change reason details for the instance fleet.
6011//
6012// The instance fleet configuration is available only in Amazon EMR versions
6013// 4.8.0 and later, excluding 5.0.x versions.
6014type InstanceFleetStateChangeReason struct {
6015	_ struct{} `type:"structure"`
6016
6017	// A code corresponding to the reason the state change occurred.
6018	Code *string `type:"string" enum:"InstanceFleetStateChangeReasonCode"`
6019
6020	// An explanatory message.
6021	Message *string `type:"string"`
6022}
6023
6024// String returns the string representation
6025func (s InstanceFleetStateChangeReason) String() string {
6026	return awsutil.Prettify(s)
6027}
6028
6029// GoString returns the string representation
6030func (s InstanceFleetStateChangeReason) GoString() string {
6031	return s.String()
6032}
6033
6034// SetCode sets the Code field's value.
6035func (s *InstanceFleetStateChangeReason) SetCode(v string) *InstanceFleetStateChangeReason {
6036	s.Code = &v
6037	return s
6038}
6039
6040// SetMessage sets the Message field's value.
6041func (s *InstanceFleetStateChangeReason) SetMessage(v string) *InstanceFleetStateChangeReason {
6042	s.Message = &v
6043	return s
6044}
6045
6046// The status of the instance fleet.
6047//
6048// The instance fleet configuration is available only in Amazon EMR versions
6049// 4.8.0 and later, excluding 5.0.x versions.
6050type InstanceFleetStatus struct {
6051	_ struct{} `type:"structure"`
6052
6053	// A code representing the instance fleet status.
6054	//
6055	//    * PROVISIONING—The instance fleet is provisioning EC2 resources and
6056	//    is not yet ready to run jobs.
6057	//
6058	//    * BOOTSTRAPPING—EC2 instances and other resources have been provisioned
6059	//    and the bootstrap actions specified for the instances are underway.
6060	//
6061	//    * RUNNING—EC2 instances and other resources are running. They are either
6062	//    executing jobs or waiting to execute jobs.
6063	//
6064	//    * RESIZING—A resize operation is underway. EC2 instances are either
6065	//    being added or removed.
6066	//
6067	//    * SUSPENDED—A resize operation could not complete. Existing EC2 instances
6068	//    are running, but instances can't be added or removed.
6069	//
6070	//    * TERMINATING—The instance fleet is terminating EC2 instances.
6071	//
6072	//    * TERMINATED—The instance fleet is no longer active, and all EC2 instances
6073	//    have been terminated.
6074	State *string `type:"string" enum:"InstanceFleetState"`
6075
6076	// Provides status change reason details for the instance fleet.
6077	StateChangeReason *InstanceFleetStateChangeReason `type:"structure"`
6078
6079	// Provides historical timestamps for the instance fleet, including the time
6080	// of creation, the time it became ready to run jobs, and the time of termination.
6081	Timeline *InstanceFleetTimeline `type:"structure"`
6082}
6083
6084// String returns the string representation
6085func (s InstanceFleetStatus) String() string {
6086	return awsutil.Prettify(s)
6087}
6088
6089// GoString returns the string representation
6090func (s InstanceFleetStatus) GoString() string {
6091	return s.String()
6092}
6093
6094// SetState sets the State field's value.
6095func (s *InstanceFleetStatus) SetState(v string) *InstanceFleetStatus {
6096	s.State = &v
6097	return s
6098}
6099
6100// SetStateChangeReason sets the StateChangeReason field's value.
6101func (s *InstanceFleetStatus) SetStateChangeReason(v *InstanceFleetStateChangeReason) *InstanceFleetStatus {
6102	s.StateChangeReason = v
6103	return s
6104}
6105
6106// SetTimeline sets the Timeline field's value.
6107func (s *InstanceFleetStatus) SetTimeline(v *InstanceFleetTimeline) *InstanceFleetStatus {
6108	s.Timeline = v
6109	return s
6110}
6111
6112// Provides historical timestamps for the instance fleet, including the time
6113// of creation, the time it became ready to run jobs, and the time of termination.
6114//
6115// The instance fleet configuration is available only in Amazon EMR versions
6116// 4.8.0 and later, excluding 5.0.x versions.
6117type InstanceFleetTimeline struct {
6118	_ struct{} `type:"structure"`
6119
6120	// The time and date the instance fleet was created.
6121	CreationDateTime *time.Time `type:"timestamp"`
6122
6123	// The time and date the instance fleet terminated.
6124	EndDateTime *time.Time `type:"timestamp"`
6125
6126	// The time and date the instance fleet was ready to run jobs.
6127	ReadyDateTime *time.Time `type:"timestamp"`
6128}
6129
6130// String returns the string representation
6131func (s InstanceFleetTimeline) String() string {
6132	return awsutil.Prettify(s)
6133}
6134
6135// GoString returns the string representation
6136func (s InstanceFleetTimeline) GoString() string {
6137	return s.String()
6138}
6139
6140// SetCreationDateTime sets the CreationDateTime field's value.
6141func (s *InstanceFleetTimeline) SetCreationDateTime(v time.Time) *InstanceFleetTimeline {
6142	s.CreationDateTime = &v
6143	return s
6144}
6145
6146// SetEndDateTime sets the EndDateTime field's value.
6147func (s *InstanceFleetTimeline) SetEndDateTime(v time.Time) *InstanceFleetTimeline {
6148	s.EndDateTime = &v
6149	return s
6150}
6151
6152// SetReadyDateTime sets the ReadyDateTime field's value.
6153func (s *InstanceFleetTimeline) SetReadyDateTime(v time.Time) *InstanceFleetTimeline {
6154	s.ReadyDateTime = &v
6155	return s
6156}
6157
6158// This entity represents an instance group, which is a group of instances that
6159// have common purpose. For example, CORE instance group is used for HDFS.
6160type InstanceGroup struct {
6161	_ struct{} `type:"structure"`
6162
6163	// An automatic scaling policy for a core instance group or task instance group
6164	// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
6165	// group dynamically adds and terminates EC2 instances in response to the value
6166	// of a CloudWatch metric. See PutAutoScalingPolicy.
6167	AutoScalingPolicy *AutoScalingPolicyDescription `type:"structure"`
6168
6169	// The maximum Spot price your are willing to pay for EC2 instances.
6170	//
6171	// An optional, nullable field that applies if the MarketType for the instance
6172	// group is specified as SPOT. Specify the maximum spot price in USD. If the
6173	// value is NULL and SPOT is specified, the maximum Spot price is set equal
6174	// to the On-Demand price.
6175	BidPrice *string `type:"string"`
6176
6177	//
6178	// Amazon EMR releases 4.x or later.
6179	//
6180	// The list of configurations supplied for an EMR cluster instance group. You
6181	// can specify a separate configuration for each instance group (master, core,
6182	// and task).
6183	Configurations []*Configuration `type:"list"`
6184
6185	// The version number of the requested configuration specification for this
6186	// instance group.
6187	ConfigurationsVersion *int64 `type:"long"`
6188
6189	// The EBS block devices that are mapped to this instance group.
6190	EbsBlockDevices []*EbsBlockDevice `type:"list"`
6191
6192	// If the instance group is EBS-optimized. An Amazon EBS-optimized instance
6193	// uses an optimized configuration stack and provides additional, dedicated
6194	// capacity for Amazon EBS I/O.
6195	EbsOptimized *bool `type:"boolean"`
6196
6197	// The identifier of the instance group.
6198	Id *string `type:"string"`
6199
6200	// The type of the instance group. Valid values are MASTER, CORE or TASK.
6201	InstanceGroupType *string `type:"string" enum:"InstanceGroupType"`
6202
6203	// The EC2 instance type for all instances in the instance group.
6204	InstanceType *string `min:"1" type:"string"`
6205
6206	// A list of configurations that were successfully applied for an instance group
6207	// last time.
6208	LastSuccessfullyAppliedConfigurations []*Configuration `type:"list"`
6209
6210	// The version number of a configuration specification that was successfully
6211	// applied for an instance group last time.
6212	LastSuccessfullyAppliedConfigurationsVersion *int64 `type:"long"`
6213
6214	// The marketplace to provision instances for this group. Valid values are ON_DEMAND
6215	// or SPOT.
6216	Market *string `type:"string" enum:"MarketType"`
6217
6218	// The name of the instance group.
6219	Name *string `type:"string"`
6220
6221	// The target number of instances for the instance group.
6222	RequestedInstanceCount *int64 `type:"integer"`
6223
6224	// The number of instances currently running in this instance group.
6225	RunningInstanceCount *int64 `type:"integer"`
6226
6227	// Policy for customizing shrink operations.
6228	ShrinkPolicy *ShrinkPolicy `type:"structure"`
6229
6230	// The current status of the instance group.
6231	Status *InstanceGroupStatus `type:"structure"`
6232}
6233
6234// String returns the string representation
6235func (s InstanceGroup) String() string {
6236	return awsutil.Prettify(s)
6237}
6238
6239// GoString returns the string representation
6240func (s InstanceGroup) GoString() string {
6241	return s.String()
6242}
6243
6244// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
6245func (s *InstanceGroup) SetAutoScalingPolicy(v *AutoScalingPolicyDescription) *InstanceGroup {
6246	s.AutoScalingPolicy = v
6247	return s
6248}
6249
6250// SetBidPrice sets the BidPrice field's value.
6251func (s *InstanceGroup) SetBidPrice(v string) *InstanceGroup {
6252	s.BidPrice = &v
6253	return s
6254}
6255
6256// SetConfigurations sets the Configurations field's value.
6257func (s *InstanceGroup) SetConfigurations(v []*Configuration) *InstanceGroup {
6258	s.Configurations = v
6259	return s
6260}
6261
6262// SetConfigurationsVersion sets the ConfigurationsVersion field's value.
6263func (s *InstanceGroup) SetConfigurationsVersion(v int64) *InstanceGroup {
6264	s.ConfigurationsVersion = &v
6265	return s
6266}
6267
6268// SetEbsBlockDevices sets the EbsBlockDevices field's value.
6269func (s *InstanceGroup) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceGroup {
6270	s.EbsBlockDevices = v
6271	return s
6272}
6273
6274// SetEbsOptimized sets the EbsOptimized field's value.
6275func (s *InstanceGroup) SetEbsOptimized(v bool) *InstanceGroup {
6276	s.EbsOptimized = &v
6277	return s
6278}
6279
6280// SetId sets the Id field's value.
6281func (s *InstanceGroup) SetId(v string) *InstanceGroup {
6282	s.Id = &v
6283	return s
6284}
6285
6286// SetInstanceGroupType sets the InstanceGroupType field's value.
6287func (s *InstanceGroup) SetInstanceGroupType(v string) *InstanceGroup {
6288	s.InstanceGroupType = &v
6289	return s
6290}
6291
6292// SetInstanceType sets the InstanceType field's value.
6293func (s *InstanceGroup) SetInstanceType(v string) *InstanceGroup {
6294	s.InstanceType = &v
6295	return s
6296}
6297
6298// SetLastSuccessfullyAppliedConfigurations sets the LastSuccessfullyAppliedConfigurations field's value.
6299func (s *InstanceGroup) SetLastSuccessfullyAppliedConfigurations(v []*Configuration) *InstanceGroup {
6300	s.LastSuccessfullyAppliedConfigurations = v
6301	return s
6302}
6303
6304// SetLastSuccessfullyAppliedConfigurationsVersion sets the LastSuccessfullyAppliedConfigurationsVersion field's value.
6305func (s *InstanceGroup) SetLastSuccessfullyAppliedConfigurationsVersion(v int64) *InstanceGroup {
6306	s.LastSuccessfullyAppliedConfigurationsVersion = &v
6307	return s
6308}
6309
6310// SetMarket sets the Market field's value.
6311func (s *InstanceGroup) SetMarket(v string) *InstanceGroup {
6312	s.Market = &v
6313	return s
6314}
6315
6316// SetName sets the Name field's value.
6317func (s *InstanceGroup) SetName(v string) *InstanceGroup {
6318	s.Name = &v
6319	return s
6320}
6321
6322// SetRequestedInstanceCount sets the RequestedInstanceCount field's value.
6323func (s *InstanceGroup) SetRequestedInstanceCount(v int64) *InstanceGroup {
6324	s.RequestedInstanceCount = &v
6325	return s
6326}
6327
6328// SetRunningInstanceCount sets the RunningInstanceCount field's value.
6329func (s *InstanceGroup) SetRunningInstanceCount(v int64) *InstanceGroup {
6330	s.RunningInstanceCount = &v
6331	return s
6332}
6333
6334// SetShrinkPolicy sets the ShrinkPolicy field's value.
6335func (s *InstanceGroup) SetShrinkPolicy(v *ShrinkPolicy) *InstanceGroup {
6336	s.ShrinkPolicy = v
6337	return s
6338}
6339
6340// SetStatus sets the Status field's value.
6341func (s *InstanceGroup) SetStatus(v *InstanceGroupStatus) *InstanceGroup {
6342	s.Status = v
6343	return s
6344}
6345
6346// Configuration defining a new instance group.
6347type InstanceGroupConfig struct {
6348	_ struct{} `type:"structure"`
6349
6350	// An automatic scaling policy for a core instance group or task instance group
6351	// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
6352	// group dynamically adds and terminates EC2 instances in response to the value
6353	// of a CloudWatch metric. See PutAutoScalingPolicy.
6354	AutoScalingPolicy *AutoScalingPolicy `type:"structure"`
6355
6356	// The maximum Spot price your are willing to pay for EC2 instances.
6357	//
6358	// An optional, nullable field that applies if the MarketType for the instance
6359	// group is specified as SPOT. Specify the maximum spot price in USD. If the
6360	// value is NULL and SPOT is specified, the maximum Spot price is set equal
6361	// to the On-Demand price.
6362	BidPrice *string `type:"string"`
6363
6364	//
6365	// Amazon EMR releases 4.x or later.
6366	//
6367	// The list of configurations supplied for an EMR cluster instance group. You
6368	// can specify a separate configuration for each instance group (master, core,
6369	// and task).
6370	Configurations []*Configuration `type:"list"`
6371
6372	// EBS configurations that will be attached to each EC2 instance in the instance
6373	// group.
6374	EbsConfiguration *EbsConfiguration `type:"structure"`
6375
6376	// Target number of instances for the instance group.
6377	//
6378	// InstanceCount is a required field
6379	InstanceCount *int64 `type:"integer" required:"true"`
6380
6381	// The role of the instance group in the cluster.
6382	//
6383	// InstanceRole is a required field
6384	InstanceRole *string `type:"string" required:"true" enum:"InstanceRoleType"`
6385
6386	// The EC2 instance type for all instances in the instance group.
6387	//
6388	// InstanceType is a required field
6389	InstanceType *string `min:"1" type:"string" required:"true"`
6390
6391	// Market type of the EC2 instances used to create a cluster node.
6392	Market *string `type:"string" enum:"MarketType"`
6393
6394	// Friendly name given to the instance group.
6395	Name *string `type:"string"`
6396}
6397
6398// String returns the string representation
6399func (s InstanceGroupConfig) String() string {
6400	return awsutil.Prettify(s)
6401}
6402
6403// GoString returns the string representation
6404func (s InstanceGroupConfig) GoString() string {
6405	return s.String()
6406}
6407
6408// Validate inspects the fields of the type to determine if they are valid.
6409func (s *InstanceGroupConfig) Validate() error {
6410	invalidParams := request.ErrInvalidParams{Context: "InstanceGroupConfig"}
6411	if s.InstanceCount == nil {
6412		invalidParams.Add(request.NewErrParamRequired("InstanceCount"))
6413	}
6414	if s.InstanceRole == nil {
6415		invalidParams.Add(request.NewErrParamRequired("InstanceRole"))
6416	}
6417	if s.InstanceType == nil {
6418		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
6419	}
6420	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
6421		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
6422	}
6423	if s.AutoScalingPolicy != nil {
6424		if err := s.AutoScalingPolicy.Validate(); err != nil {
6425			invalidParams.AddNested("AutoScalingPolicy", err.(request.ErrInvalidParams))
6426		}
6427	}
6428	if s.EbsConfiguration != nil {
6429		if err := s.EbsConfiguration.Validate(); err != nil {
6430			invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams))
6431		}
6432	}
6433
6434	if invalidParams.Len() > 0 {
6435		return invalidParams
6436	}
6437	return nil
6438}
6439
6440// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
6441func (s *InstanceGroupConfig) SetAutoScalingPolicy(v *AutoScalingPolicy) *InstanceGroupConfig {
6442	s.AutoScalingPolicy = v
6443	return s
6444}
6445
6446// SetBidPrice sets the BidPrice field's value.
6447func (s *InstanceGroupConfig) SetBidPrice(v string) *InstanceGroupConfig {
6448	s.BidPrice = &v
6449	return s
6450}
6451
6452// SetConfigurations sets the Configurations field's value.
6453func (s *InstanceGroupConfig) SetConfigurations(v []*Configuration) *InstanceGroupConfig {
6454	s.Configurations = v
6455	return s
6456}
6457
6458// SetEbsConfiguration sets the EbsConfiguration field's value.
6459func (s *InstanceGroupConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceGroupConfig {
6460	s.EbsConfiguration = v
6461	return s
6462}
6463
6464// SetInstanceCount sets the InstanceCount field's value.
6465func (s *InstanceGroupConfig) SetInstanceCount(v int64) *InstanceGroupConfig {
6466	s.InstanceCount = &v
6467	return s
6468}
6469
6470// SetInstanceRole sets the InstanceRole field's value.
6471func (s *InstanceGroupConfig) SetInstanceRole(v string) *InstanceGroupConfig {
6472	s.InstanceRole = &v
6473	return s
6474}
6475
6476// SetInstanceType sets the InstanceType field's value.
6477func (s *InstanceGroupConfig) SetInstanceType(v string) *InstanceGroupConfig {
6478	s.InstanceType = &v
6479	return s
6480}
6481
6482// SetMarket sets the Market field's value.
6483func (s *InstanceGroupConfig) SetMarket(v string) *InstanceGroupConfig {
6484	s.Market = &v
6485	return s
6486}
6487
6488// SetName sets the Name field's value.
6489func (s *InstanceGroupConfig) SetName(v string) *InstanceGroupConfig {
6490	s.Name = &v
6491	return s
6492}
6493
6494// Detailed information about an instance group.
6495type InstanceGroupDetail struct {
6496	_ struct{} `type:"structure"`
6497
6498	// The maximum Spot price your are willing to pay for EC2 instances.
6499	//
6500	// An optional, nullable field that applies if the MarketType for the instance
6501	// group is specified as SPOT. Specified in USD. If the value is NULL and SPOT
6502	// is specified, the maximum Spot price is set equal to the On-Demand price.
6503	BidPrice *string `type:"string"`
6504
6505	// The date/time the instance group was created.
6506	//
6507	// CreationDateTime is a required field
6508	CreationDateTime *time.Time `type:"timestamp" required:"true"`
6509
6510	// The date/time the instance group was terminated.
6511	EndDateTime *time.Time `type:"timestamp"`
6512
6513	// Unique identifier for the instance group.
6514	InstanceGroupId *string `type:"string"`
6515
6516	// Target number of instances to run in the instance group.
6517	//
6518	// InstanceRequestCount is a required field
6519	InstanceRequestCount *int64 `type:"integer" required:"true"`
6520
6521	// Instance group role in the cluster
6522	//
6523	// InstanceRole is a required field
6524	InstanceRole *string `type:"string" required:"true" enum:"InstanceRoleType"`
6525
6526	// Actual count of running instances.
6527	//
6528	// InstanceRunningCount is a required field
6529	InstanceRunningCount *int64 `type:"integer" required:"true"`
6530
6531	// EC2 instance type.
6532	//
6533	// InstanceType is a required field
6534	InstanceType *string `min:"1" type:"string" required:"true"`
6535
6536	// Details regarding the state of the instance group.
6537	LastStateChangeReason *string `type:"string"`
6538
6539	// Market type of the EC2 instances used to create a cluster node.
6540	//
6541	// Market is a required field
6542	Market *string `type:"string" required:"true" enum:"MarketType"`
6543
6544	// Friendly name for the instance group.
6545	Name *string `type:"string"`
6546
6547	// The date/time the instance group was available to the cluster.
6548	ReadyDateTime *time.Time `type:"timestamp"`
6549
6550	// The date/time the instance group was started.
6551	StartDateTime *time.Time `type:"timestamp"`
6552
6553	// State of instance group. The following values are deprecated: STARTING, TERMINATED,
6554	// and FAILED.
6555	//
6556	// State is a required field
6557	State *string `type:"string" required:"true" enum:"InstanceGroupState"`
6558}
6559
6560// String returns the string representation
6561func (s InstanceGroupDetail) String() string {
6562	return awsutil.Prettify(s)
6563}
6564
6565// GoString returns the string representation
6566func (s InstanceGroupDetail) GoString() string {
6567	return s.String()
6568}
6569
6570// SetBidPrice sets the BidPrice field's value.
6571func (s *InstanceGroupDetail) SetBidPrice(v string) *InstanceGroupDetail {
6572	s.BidPrice = &v
6573	return s
6574}
6575
6576// SetCreationDateTime sets the CreationDateTime field's value.
6577func (s *InstanceGroupDetail) SetCreationDateTime(v time.Time) *InstanceGroupDetail {
6578	s.CreationDateTime = &v
6579	return s
6580}
6581
6582// SetEndDateTime sets the EndDateTime field's value.
6583func (s *InstanceGroupDetail) SetEndDateTime(v time.Time) *InstanceGroupDetail {
6584	s.EndDateTime = &v
6585	return s
6586}
6587
6588// SetInstanceGroupId sets the InstanceGroupId field's value.
6589func (s *InstanceGroupDetail) SetInstanceGroupId(v string) *InstanceGroupDetail {
6590	s.InstanceGroupId = &v
6591	return s
6592}
6593
6594// SetInstanceRequestCount sets the InstanceRequestCount field's value.
6595func (s *InstanceGroupDetail) SetInstanceRequestCount(v int64) *InstanceGroupDetail {
6596	s.InstanceRequestCount = &v
6597	return s
6598}
6599
6600// SetInstanceRole sets the InstanceRole field's value.
6601func (s *InstanceGroupDetail) SetInstanceRole(v string) *InstanceGroupDetail {
6602	s.InstanceRole = &v
6603	return s
6604}
6605
6606// SetInstanceRunningCount sets the InstanceRunningCount field's value.
6607func (s *InstanceGroupDetail) SetInstanceRunningCount(v int64) *InstanceGroupDetail {
6608	s.InstanceRunningCount = &v
6609	return s
6610}
6611
6612// SetInstanceType sets the InstanceType field's value.
6613func (s *InstanceGroupDetail) SetInstanceType(v string) *InstanceGroupDetail {
6614	s.InstanceType = &v
6615	return s
6616}
6617
6618// SetLastStateChangeReason sets the LastStateChangeReason field's value.
6619func (s *InstanceGroupDetail) SetLastStateChangeReason(v string) *InstanceGroupDetail {
6620	s.LastStateChangeReason = &v
6621	return s
6622}
6623
6624// SetMarket sets the Market field's value.
6625func (s *InstanceGroupDetail) SetMarket(v string) *InstanceGroupDetail {
6626	s.Market = &v
6627	return s
6628}
6629
6630// SetName sets the Name field's value.
6631func (s *InstanceGroupDetail) SetName(v string) *InstanceGroupDetail {
6632	s.Name = &v
6633	return s
6634}
6635
6636// SetReadyDateTime sets the ReadyDateTime field's value.
6637func (s *InstanceGroupDetail) SetReadyDateTime(v time.Time) *InstanceGroupDetail {
6638	s.ReadyDateTime = &v
6639	return s
6640}
6641
6642// SetStartDateTime sets the StartDateTime field's value.
6643func (s *InstanceGroupDetail) SetStartDateTime(v time.Time) *InstanceGroupDetail {
6644	s.StartDateTime = &v
6645	return s
6646}
6647
6648// SetState sets the State field's value.
6649func (s *InstanceGroupDetail) SetState(v string) *InstanceGroupDetail {
6650	s.State = &v
6651	return s
6652}
6653
6654// Modify the size or configurations of an instance group.
6655type InstanceGroupModifyConfig struct {
6656	_ struct{} `type:"structure"`
6657
6658	// A list of new or modified configurations to apply for an instance group.
6659	Configurations []*Configuration `type:"list"`
6660
6661	// The EC2 InstanceIds to terminate. After you terminate the instances, the
6662	// instance group will not return to its original requested size.
6663	EC2InstanceIdsToTerminate []*string `type:"list"`
6664
6665	// Target size for the instance group.
6666	InstanceCount *int64 `type:"integer"`
6667
6668	// Unique ID of the instance group to expand or shrink.
6669	//
6670	// InstanceGroupId is a required field
6671	InstanceGroupId *string `type:"string" required:"true"`
6672
6673	// Policy for customizing shrink operations.
6674	ShrinkPolicy *ShrinkPolicy `type:"structure"`
6675}
6676
6677// String returns the string representation
6678func (s InstanceGroupModifyConfig) String() string {
6679	return awsutil.Prettify(s)
6680}
6681
6682// GoString returns the string representation
6683func (s InstanceGroupModifyConfig) GoString() string {
6684	return s.String()
6685}
6686
6687// Validate inspects the fields of the type to determine if they are valid.
6688func (s *InstanceGroupModifyConfig) Validate() error {
6689	invalidParams := request.ErrInvalidParams{Context: "InstanceGroupModifyConfig"}
6690	if s.InstanceGroupId == nil {
6691		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
6692	}
6693
6694	if invalidParams.Len() > 0 {
6695		return invalidParams
6696	}
6697	return nil
6698}
6699
6700// SetConfigurations sets the Configurations field's value.
6701func (s *InstanceGroupModifyConfig) SetConfigurations(v []*Configuration) *InstanceGroupModifyConfig {
6702	s.Configurations = v
6703	return s
6704}
6705
6706// SetEC2InstanceIdsToTerminate sets the EC2InstanceIdsToTerminate field's value.
6707func (s *InstanceGroupModifyConfig) SetEC2InstanceIdsToTerminate(v []*string) *InstanceGroupModifyConfig {
6708	s.EC2InstanceIdsToTerminate = v
6709	return s
6710}
6711
6712// SetInstanceCount sets the InstanceCount field's value.
6713func (s *InstanceGroupModifyConfig) SetInstanceCount(v int64) *InstanceGroupModifyConfig {
6714	s.InstanceCount = &v
6715	return s
6716}
6717
6718// SetInstanceGroupId sets the InstanceGroupId field's value.
6719func (s *InstanceGroupModifyConfig) SetInstanceGroupId(v string) *InstanceGroupModifyConfig {
6720	s.InstanceGroupId = &v
6721	return s
6722}
6723
6724// SetShrinkPolicy sets the ShrinkPolicy field's value.
6725func (s *InstanceGroupModifyConfig) SetShrinkPolicy(v *ShrinkPolicy) *InstanceGroupModifyConfig {
6726	s.ShrinkPolicy = v
6727	return s
6728}
6729
6730// The status change reason details for the instance group.
6731type InstanceGroupStateChangeReason struct {
6732	_ struct{} `type:"structure"`
6733
6734	// The programmable code for the state change reason.
6735	Code *string `type:"string" enum:"InstanceGroupStateChangeReasonCode"`
6736
6737	// The status change reason description.
6738	Message *string `type:"string"`
6739}
6740
6741// String returns the string representation
6742func (s InstanceGroupStateChangeReason) String() string {
6743	return awsutil.Prettify(s)
6744}
6745
6746// GoString returns the string representation
6747func (s InstanceGroupStateChangeReason) GoString() string {
6748	return s.String()
6749}
6750
6751// SetCode sets the Code field's value.
6752func (s *InstanceGroupStateChangeReason) SetCode(v string) *InstanceGroupStateChangeReason {
6753	s.Code = &v
6754	return s
6755}
6756
6757// SetMessage sets the Message field's value.
6758func (s *InstanceGroupStateChangeReason) SetMessage(v string) *InstanceGroupStateChangeReason {
6759	s.Message = &v
6760	return s
6761}
6762
6763// The details of the instance group status.
6764type InstanceGroupStatus struct {
6765	_ struct{} `type:"structure"`
6766
6767	// The current state of the instance group.
6768	State *string `type:"string" enum:"InstanceGroupState"`
6769
6770	// The status change reason details for the instance group.
6771	StateChangeReason *InstanceGroupStateChangeReason `type:"structure"`
6772
6773	// The timeline of the instance group status over time.
6774	Timeline *InstanceGroupTimeline `type:"structure"`
6775}
6776
6777// String returns the string representation
6778func (s InstanceGroupStatus) String() string {
6779	return awsutil.Prettify(s)
6780}
6781
6782// GoString returns the string representation
6783func (s InstanceGroupStatus) GoString() string {
6784	return s.String()
6785}
6786
6787// SetState sets the State field's value.
6788func (s *InstanceGroupStatus) SetState(v string) *InstanceGroupStatus {
6789	s.State = &v
6790	return s
6791}
6792
6793// SetStateChangeReason sets the StateChangeReason field's value.
6794func (s *InstanceGroupStatus) SetStateChangeReason(v *InstanceGroupStateChangeReason) *InstanceGroupStatus {
6795	s.StateChangeReason = v
6796	return s
6797}
6798
6799// SetTimeline sets the Timeline field's value.
6800func (s *InstanceGroupStatus) SetTimeline(v *InstanceGroupTimeline) *InstanceGroupStatus {
6801	s.Timeline = v
6802	return s
6803}
6804
6805// The timeline of the instance group lifecycle.
6806type InstanceGroupTimeline struct {
6807	_ struct{} `type:"structure"`
6808
6809	// The creation date and time of the instance group.
6810	CreationDateTime *time.Time `type:"timestamp"`
6811
6812	// The date and time when the instance group terminated.
6813	EndDateTime *time.Time `type:"timestamp"`
6814
6815	// The date and time when the instance group became ready to perform tasks.
6816	ReadyDateTime *time.Time `type:"timestamp"`
6817}
6818
6819// String returns the string representation
6820func (s InstanceGroupTimeline) String() string {
6821	return awsutil.Prettify(s)
6822}
6823
6824// GoString returns the string representation
6825func (s InstanceGroupTimeline) GoString() string {
6826	return s.String()
6827}
6828
6829// SetCreationDateTime sets the CreationDateTime field's value.
6830func (s *InstanceGroupTimeline) SetCreationDateTime(v time.Time) *InstanceGroupTimeline {
6831	s.CreationDateTime = &v
6832	return s
6833}
6834
6835// SetEndDateTime sets the EndDateTime field's value.
6836func (s *InstanceGroupTimeline) SetEndDateTime(v time.Time) *InstanceGroupTimeline {
6837	s.EndDateTime = &v
6838	return s
6839}
6840
6841// SetReadyDateTime sets the ReadyDateTime field's value.
6842func (s *InstanceGroupTimeline) SetReadyDateTime(v time.Time) *InstanceGroupTimeline {
6843	s.ReadyDateTime = &v
6844	return s
6845}
6846
6847// Custom policy for requesting termination protection or termination of specific
6848// instances when shrinking an instance group.
6849type InstanceResizePolicy struct {
6850	_ struct{} `type:"structure"`
6851
6852	// Decommissioning timeout override for the specific list of instances to be
6853	// terminated.
6854	InstanceTerminationTimeout *int64 `type:"integer"`
6855
6856	// Specific list of instances to be protected when shrinking an instance group.
6857	InstancesToProtect []*string `type:"list"`
6858
6859	// Specific list of instances to be terminated when shrinking an instance group.
6860	InstancesToTerminate []*string `type:"list"`
6861}
6862
6863// String returns the string representation
6864func (s InstanceResizePolicy) String() string {
6865	return awsutil.Prettify(s)
6866}
6867
6868// GoString returns the string representation
6869func (s InstanceResizePolicy) GoString() string {
6870	return s.String()
6871}
6872
6873// SetInstanceTerminationTimeout sets the InstanceTerminationTimeout field's value.
6874func (s *InstanceResizePolicy) SetInstanceTerminationTimeout(v int64) *InstanceResizePolicy {
6875	s.InstanceTerminationTimeout = &v
6876	return s
6877}
6878
6879// SetInstancesToProtect sets the InstancesToProtect field's value.
6880func (s *InstanceResizePolicy) SetInstancesToProtect(v []*string) *InstanceResizePolicy {
6881	s.InstancesToProtect = v
6882	return s
6883}
6884
6885// SetInstancesToTerminate sets the InstancesToTerminate field's value.
6886func (s *InstanceResizePolicy) SetInstancesToTerminate(v []*string) *InstanceResizePolicy {
6887	s.InstancesToTerminate = v
6888	return s
6889}
6890
6891// The details of the status change reason for the instance.
6892type InstanceStateChangeReason struct {
6893	_ struct{} `type:"structure"`
6894
6895	// The programmable code for the state change reason.
6896	Code *string `type:"string" enum:"InstanceStateChangeReasonCode"`
6897
6898	// The status change reason description.
6899	Message *string `type:"string"`
6900}
6901
6902// String returns the string representation
6903func (s InstanceStateChangeReason) String() string {
6904	return awsutil.Prettify(s)
6905}
6906
6907// GoString returns the string representation
6908func (s InstanceStateChangeReason) GoString() string {
6909	return s.String()
6910}
6911
6912// SetCode sets the Code field's value.
6913func (s *InstanceStateChangeReason) SetCode(v string) *InstanceStateChangeReason {
6914	s.Code = &v
6915	return s
6916}
6917
6918// SetMessage sets the Message field's value.
6919func (s *InstanceStateChangeReason) SetMessage(v string) *InstanceStateChangeReason {
6920	s.Message = &v
6921	return s
6922}
6923
6924// The instance status details.
6925type InstanceStatus struct {
6926	_ struct{} `type:"structure"`
6927
6928	// The current state of the instance.
6929	State *string `type:"string" enum:"InstanceState"`
6930
6931	// The details of the status change reason for the instance.
6932	StateChangeReason *InstanceStateChangeReason `type:"structure"`
6933
6934	// The timeline of the instance status over time.
6935	Timeline *InstanceTimeline `type:"structure"`
6936}
6937
6938// String returns the string representation
6939func (s InstanceStatus) String() string {
6940	return awsutil.Prettify(s)
6941}
6942
6943// GoString returns the string representation
6944func (s InstanceStatus) GoString() string {
6945	return s.String()
6946}
6947
6948// SetState sets the State field's value.
6949func (s *InstanceStatus) SetState(v string) *InstanceStatus {
6950	s.State = &v
6951	return s
6952}
6953
6954// SetStateChangeReason sets the StateChangeReason field's value.
6955func (s *InstanceStatus) SetStateChangeReason(v *InstanceStateChangeReason) *InstanceStatus {
6956	s.StateChangeReason = v
6957	return s
6958}
6959
6960// SetTimeline sets the Timeline field's value.
6961func (s *InstanceStatus) SetTimeline(v *InstanceTimeline) *InstanceStatus {
6962	s.Timeline = v
6963	return s
6964}
6965
6966// The timeline of the instance lifecycle.
6967type InstanceTimeline struct {
6968	_ struct{} `type:"structure"`
6969
6970	// The creation date and time of the instance.
6971	CreationDateTime *time.Time `type:"timestamp"`
6972
6973	// The date and time when the instance was terminated.
6974	EndDateTime *time.Time `type:"timestamp"`
6975
6976	// The date and time when the instance was ready to perform tasks.
6977	ReadyDateTime *time.Time `type:"timestamp"`
6978}
6979
6980// String returns the string representation
6981func (s InstanceTimeline) String() string {
6982	return awsutil.Prettify(s)
6983}
6984
6985// GoString returns the string representation
6986func (s InstanceTimeline) GoString() string {
6987	return s.String()
6988}
6989
6990// SetCreationDateTime sets the CreationDateTime field's value.
6991func (s *InstanceTimeline) SetCreationDateTime(v time.Time) *InstanceTimeline {
6992	s.CreationDateTime = &v
6993	return s
6994}
6995
6996// SetEndDateTime sets the EndDateTime field's value.
6997func (s *InstanceTimeline) SetEndDateTime(v time.Time) *InstanceTimeline {
6998	s.EndDateTime = &v
6999	return s
7000}
7001
7002// SetReadyDateTime sets the ReadyDateTime field's value.
7003func (s *InstanceTimeline) SetReadyDateTime(v time.Time) *InstanceTimeline {
7004	s.ReadyDateTime = &v
7005	return s
7006}
7007
7008// An instance type configuration for each instance type in an instance fleet,
7009// which determines the EC2 instances Amazon EMR attempts to provision to fulfill
7010// On-Demand and Spot target capacities. There can be a maximum of 5 instance
7011// type configurations in a fleet.
7012//
7013// The instance fleet configuration is available only in Amazon EMR versions
7014// 4.8.0 and later, excluding 5.0.x versions.
7015type InstanceTypeConfig struct {
7016	_ struct{} `type:"structure"`
7017
7018	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7019	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
7020	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7021	BidPrice *string `type:"string"`
7022
7023	// The bid price, as a percentage of On-Demand price, for each EC2 Spot instance
7024	// as defined by InstanceType. Expressed as a number (for example, 20 specifies
7025	// 20%). If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice is provided,
7026	// BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7027	BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"`
7028
7029	// A configuration classification that applies when provisioning cluster instances,
7030	// which can include configurations for applications and software that run on
7031	// the cluster.
7032	Configurations []*Configuration `type:"list"`
7033
7034	// The configuration of Amazon Elastic Block Storage (EBS) attached to each
7035	// instance as defined by InstanceType.
7036	EbsConfiguration *EbsConfiguration `type:"structure"`
7037
7038	// An EC2 instance type, such as m3.xlarge.
7039	//
7040	// InstanceType is a required field
7041	InstanceType *string `min:"1" type:"string" required:"true"`
7042
7043	// The number of units that a provisioned instance of this type provides toward
7044	// fulfilling the target capacities defined in InstanceFleetConfig. This value
7045	// is 1 for a master instance fleet, and must be 1 or greater for core and task
7046	// instance fleets. Defaults to 1 if not specified.
7047	WeightedCapacity *int64 `type:"integer"`
7048}
7049
7050// String returns the string representation
7051func (s InstanceTypeConfig) String() string {
7052	return awsutil.Prettify(s)
7053}
7054
7055// GoString returns the string representation
7056func (s InstanceTypeConfig) GoString() string {
7057	return s.String()
7058}
7059
7060// Validate inspects the fields of the type to determine if they are valid.
7061func (s *InstanceTypeConfig) Validate() error {
7062	invalidParams := request.ErrInvalidParams{Context: "InstanceTypeConfig"}
7063	if s.InstanceType == nil {
7064		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
7065	}
7066	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
7067		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
7068	}
7069	if s.EbsConfiguration != nil {
7070		if err := s.EbsConfiguration.Validate(); err != nil {
7071			invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams))
7072		}
7073	}
7074
7075	if invalidParams.Len() > 0 {
7076		return invalidParams
7077	}
7078	return nil
7079}
7080
7081// SetBidPrice sets the BidPrice field's value.
7082func (s *InstanceTypeConfig) SetBidPrice(v string) *InstanceTypeConfig {
7083	s.BidPrice = &v
7084	return s
7085}
7086
7087// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value.
7088func (s *InstanceTypeConfig) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeConfig {
7089	s.BidPriceAsPercentageOfOnDemandPrice = &v
7090	return s
7091}
7092
7093// SetConfigurations sets the Configurations field's value.
7094func (s *InstanceTypeConfig) SetConfigurations(v []*Configuration) *InstanceTypeConfig {
7095	s.Configurations = v
7096	return s
7097}
7098
7099// SetEbsConfiguration sets the EbsConfiguration field's value.
7100func (s *InstanceTypeConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceTypeConfig {
7101	s.EbsConfiguration = v
7102	return s
7103}
7104
7105// SetInstanceType sets the InstanceType field's value.
7106func (s *InstanceTypeConfig) SetInstanceType(v string) *InstanceTypeConfig {
7107	s.InstanceType = &v
7108	return s
7109}
7110
7111// SetWeightedCapacity sets the WeightedCapacity field's value.
7112func (s *InstanceTypeConfig) SetWeightedCapacity(v int64) *InstanceTypeConfig {
7113	s.WeightedCapacity = &v
7114	return s
7115}
7116
7117// The configuration specification for each instance type in an instance fleet.
7118//
7119// The instance fleet configuration is available only in Amazon EMR versions
7120// 4.8.0 and later, excluding 5.0.x versions.
7121type InstanceTypeSpecification struct {
7122	_ struct{} `type:"structure"`
7123
7124	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7125	// Expressed in USD.
7126	BidPrice *string `type:"string"`
7127
7128	// The bid price, as a percentage of On-Demand price, for each EC2 Spot instance
7129	// as defined by InstanceType. Expressed as a number (for example, 20 specifies
7130	// 20%).
7131	BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"`
7132
7133	// A configuration classification that applies when provisioning cluster instances,
7134	// which can include configurations for applications and software bundled with
7135	// Amazon EMR.
7136	Configurations []*Configuration `type:"list"`
7137
7138	// The configuration of Amazon Elastic Block Storage (EBS) attached to each
7139	// instance as defined by InstanceType.
7140	EbsBlockDevices []*EbsBlockDevice `type:"list"`
7141
7142	// Evaluates to TRUE when the specified InstanceType is EBS-optimized.
7143	EbsOptimized *bool `type:"boolean"`
7144
7145	// The EC2 instance type, for example m3.xlarge.
7146	InstanceType *string `min:"1" type:"string"`
7147
7148	// The number of units that a provisioned instance of this type provides toward
7149	// fulfilling the target capacities defined in InstanceFleetConfig. Capacity
7150	// values represent performance characteristics such as vCPUs, memory, or I/O.
7151	// If not specified, the default value is 1.
7152	WeightedCapacity *int64 `type:"integer"`
7153}
7154
7155// String returns the string representation
7156func (s InstanceTypeSpecification) String() string {
7157	return awsutil.Prettify(s)
7158}
7159
7160// GoString returns the string representation
7161func (s InstanceTypeSpecification) GoString() string {
7162	return s.String()
7163}
7164
7165// SetBidPrice sets the BidPrice field's value.
7166func (s *InstanceTypeSpecification) SetBidPrice(v string) *InstanceTypeSpecification {
7167	s.BidPrice = &v
7168	return s
7169}
7170
7171// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value.
7172func (s *InstanceTypeSpecification) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeSpecification {
7173	s.BidPriceAsPercentageOfOnDemandPrice = &v
7174	return s
7175}
7176
7177// SetConfigurations sets the Configurations field's value.
7178func (s *InstanceTypeSpecification) SetConfigurations(v []*Configuration) *InstanceTypeSpecification {
7179	s.Configurations = v
7180	return s
7181}
7182
7183// SetEbsBlockDevices sets the EbsBlockDevices field's value.
7184func (s *InstanceTypeSpecification) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceTypeSpecification {
7185	s.EbsBlockDevices = v
7186	return s
7187}
7188
7189// SetEbsOptimized sets the EbsOptimized field's value.
7190func (s *InstanceTypeSpecification) SetEbsOptimized(v bool) *InstanceTypeSpecification {
7191	s.EbsOptimized = &v
7192	return s
7193}
7194
7195// SetInstanceType sets the InstanceType field's value.
7196func (s *InstanceTypeSpecification) SetInstanceType(v string) *InstanceTypeSpecification {
7197	s.InstanceType = &v
7198	return s
7199}
7200
7201// SetWeightedCapacity sets the WeightedCapacity field's value.
7202func (s *InstanceTypeSpecification) SetWeightedCapacity(v int64) *InstanceTypeSpecification {
7203	s.WeightedCapacity = &v
7204	return s
7205}
7206
7207// A description of a cluster (job flow).
7208type JobFlowDetail struct {
7209	_ struct{} `type:"structure"`
7210
7211	// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
7212	// 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.
7213	AmiVersion *string `type:"string"`
7214
7215	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
7216	// The IAM role provides a way for the automatic scaling feature to get the
7217	// required permissions it needs to launch and terminate EC2 instances in an
7218	// instance group.
7219	AutoScalingRole *string `type:"string"`
7220
7221	// A list of the bootstrap actions run by the job flow.
7222	BootstrapActions []*BootstrapActionDetail `type:"list"`
7223
7224	// Describes the execution status of the job flow.
7225	//
7226	// ExecutionStatusDetail is a required field
7227	ExecutionStatusDetail *JobFlowExecutionStatusDetail `type:"structure" required:"true"`
7228
7229	// Describes the Amazon EC2 instances of the job flow.
7230	//
7231	// Instances is a required field
7232	Instances *JobFlowInstancesDetail `type:"structure" required:"true"`
7233
7234	// The job flow identifier.
7235	//
7236	// JobFlowId is a required field
7237	JobFlowId *string `type:"string" required:"true"`
7238
7239	// The IAM role that was specified when the job flow was launched. The EC2 instances
7240	// of the job flow assume this role.
7241	JobFlowRole *string `type:"string"`
7242
7243	// The location in Amazon S3 where log files for the job are stored.
7244	LogUri *string `type:"string"`
7245
7246	// The name of the job flow.
7247	//
7248	// Name is a required field
7249	Name *string `type:"string" required:"true"`
7250
7251	// The way that individual Amazon EC2 instances terminate when an automatic
7252	// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
7253	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
7254	// regardless of when the request to terminate the instance was submitted. This
7255	// option is only available with Amazon EMR 5.1.0 and later and is the default
7256	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
7257	// that Amazon EMR blacklists and drains tasks from nodes before terminating
7258	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
7259	// either behavior, Amazon EMR removes the least active nodes first and blocks
7260	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
7261	// available only in Amazon EMR version 4.1.0 and later, and is the default
7262	// for versions of Amazon EMR earlier than 5.1.0.
7263	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
7264
7265	// The IAM role that will be assumed by the Amazon EMR service to access AWS
7266	// resources on your behalf.
7267	ServiceRole *string `type:"string"`
7268
7269	// A list of steps run by the job flow.
7270	Steps []*StepDetail `type:"list"`
7271
7272	// A list of strings set by third party software when the job flow is launched.
7273	// If you are not using third party software to manage the job flow this value
7274	// is empty.
7275	SupportedProducts []*string `type:"list"`
7276
7277	// This member will be deprecated.
7278	//
7279	// Specifies whether the cluster is visible to all IAM users of the AWS account
7280	// associated with the cluster. If this value is set to true, all IAM users
7281	// of that AWS account can view and (if they have the proper policy permissions
7282	// set) manage the cluster. If it is set to false, only the IAM user that created
7283	// the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers
7284	// action.
7285	VisibleToAllUsers *bool `type:"boolean"`
7286}
7287
7288// String returns the string representation
7289func (s JobFlowDetail) String() string {
7290	return awsutil.Prettify(s)
7291}
7292
7293// GoString returns the string representation
7294func (s JobFlowDetail) GoString() string {
7295	return s.String()
7296}
7297
7298// SetAmiVersion sets the AmiVersion field's value.
7299func (s *JobFlowDetail) SetAmiVersion(v string) *JobFlowDetail {
7300	s.AmiVersion = &v
7301	return s
7302}
7303
7304// SetAutoScalingRole sets the AutoScalingRole field's value.
7305func (s *JobFlowDetail) SetAutoScalingRole(v string) *JobFlowDetail {
7306	s.AutoScalingRole = &v
7307	return s
7308}
7309
7310// SetBootstrapActions sets the BootstrapActions field's value.
7311func (s *JobFlowDetail) SetBootstrapActions(v []*BootstrapActionDetail) *JobFlowDetail {
7312	s.BootstrapActions = v
7313	return s
7314}
7315
7316// SetExecutionStatusDetail sets the ExecutionStatusDetail field's value.
7317func (s *JobFlowDetail) SetExecutionStatusDetail(v *JobFlowExecutionStatusDetail) *JobFlowDetail {
7318	s.ExecutionStatusDetail = v
7319	return s
7320}
7321
7322// SetInstances sets the Instances field's value.
7323func (s *JobFlowDetail) SetInstances(v *JobFlowInstancesDetail) *JobFlowDetail {
7324	s.Instances = v
7325	return s
7326}
7327
7328// SetJobFlowId sets the JobFlowId field's value.
7329func (s *JobFlowDetail) SetJobFlowId(v string) *JobFlowDetail {
7330	s.JobFlowId = &v
7331	return s
7332}
7333
7334// SetJobFlowRole sets the JobFlowRole field's value.
7335func (s *JobFlowDetail) SetJobFlowRole(v string) *JobFlowDetail {
7336	s.JobFlowRole = &v
7337	return s
7338}
7339
7340// SetLogUri sets the LogUri field's value.
7341func (s *JobFlowDetail) SetLogUri(v string) *JobFlowDetail {
7342	s.LogUri = &v
7343	return s
7344}
7345
7346// SetName sets the Name field's value.
7347func (s *JobFlowDetail) SetName(v string) *JobFlowDetail {
7348	s.Name = &v
7349	return s
7350}
7351
7352// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
7353func (s *JobFlowDetail) SetScaleDownBehavior(v string) *JobFlowDetail {
7354	s.ScaleDownBehavior = &v
7355	return s
7356}
7357
7358// SetServiceRole sets the ServiceRole field's value.
7359func (s *JobFlowDetail) SetServiceRole(v string) *JobFlowDetail {
7360	s.ServiceRole = &v
7361	return s
7362}
7363
7364// SetSteps sets the Steps field's value.
7365func (s *JobFlowDetail) SetSteps(v []*StepDetail) *JobFlowDetail {
7366	s.Steps = v
7367	return s
7368}
7369
7370// SetSupportedProducts sets the SupportedProducts field's value.
7371func (s *JobFlowDetail) SetSupportedProducts(v []*string) *JobFlowDetail {
7372	s.SupportedProducts = v
7373	return s
7374}
7375
7376// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
7377func (s *JobFlowDetail) SetVisibleToAllUsers(v bool) *JobFlowDetail {
7378	s.VisibleToAllUsers = &v
7379	return s
7380}
7381
7382// Describes the status of the cluster (job flow).
7383type JobFlowExecutionStatusDetail struct {
7384	_ struct{} `type:"structure"`
7385
7386	// The creation date and time of the job flow.
7387	//
7388	// CreationDateTime is a required field
7389	CreationDateTime *time.Time `type:"timestamp" required:"true"`
7390
7391	// The completion date and time of the job flow.
7392	EndDateTime *time.Time `type:"timestamp"`
7393
7394	// Description of the job flow last changed state.
7395	LastStateChangeReason *string `type:"string"`
7396
7397	// The date and time when the job flow was ready to start running bootstrap
7398	// actions.
7399	ReadyDateTime *time.Time `type:"timestamp"`
7400
7401	// The start date and time of the job flow.
7402	StartDateTime *time.Time `type:"timestamp"`
7403
7404	// The state of the job flow.
7405	//
7406	// State is a required field
7407	State *string `type:"string" required:"true" enum:"JobFlowExecutionState"`
7408}
7409
7410// String returns the string representation
7411func (s JobFlowExecutionStatusDetail) String() string {
7412	return awsutil.Prettify(s)
7413}
7414
7415// GoString returns the string representation
7416func (s JobFlowExecutionStatusDetail) GoString() string {
7417	return s.String()
7418}
7419
7420// SetCreationDateTime sets the CreationDateTime field's value.
7421func (s *JobFlowExecutionStatusDetail) SetCreationDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7422	s.CreationDateTime = &v
7423	return s
7424}
7425
7426// SetEndDateTime sets the EndDateTime field's value.
7427func (s *JobFlowExecutionStatusDetail) SetEndDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7428	s.EndDateTime = &v
7429	return s
7430}
7431
7432// SetLastStateChangeReason sets the LastStateChangeReason field's value.
7433func (s *JobFlowExecutionStatusDetail) SetLastStateChangeReason(v string) *JobFlowExecutionStatusDetail {
7434	s.LastStateChangeReason = &v
7435	return s
7436}
7437
7438// SetReadyDateTime sets the ReadyDateTime field's value.
7439func (s *JobFlowExecutionStatusDetail) SetReadyDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7440	s.ReadyDateTime = &v
7441	return s
7442}
7443
7444// SetStartDateTime sets the StartDateTime field's value.
7445func (s *JobFlowExecutionStatusDetail) SetStartDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7446	s.StartDateTime = &v
7447	return s
7448}
7449
7450// SetState sets the State field's value.
7451func (s *JobFlowExecutionStatusDetail) SetState(v string) *JobFlowExecutionStatusDetail {
7452	s.State = &v
7453	return s
7454}
7455
7456// A description of the Amazon EC2 instance on which the cluster (job flow)
7457// runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or
7458// InstanceFleets, which is the recommended configuration. They cannot be used
7459// together. You may also have MasterInstanceType, SlaveInstanceType, and InstanceCount
7460// (all three must be present), but we don't recommend this configuration.
7461type JobFlowInstancesConfig struct {
7462	_ struct{} `type:"structure"`
7463
7464	// A list of additional Amazon EC2 security group IDs for the master node.
7465	AdditionalMasterSecurityGroups []*string `type:"list"`
7466
7467	// A list of additional Amazon EC2 security group IDs for the core and task
7468	// nodes.
7469	AdditionalSlaveSecurityGroups []*string `type:"list"`
7470
7471	// The name of the EC2 key pair that can be used to ssh to the master node as
7472	// the user called "hadoop."
7473	Ec2KeyName *string `type:"string"`
7474
7475	// Applies to clusters that use the uniform instance group configuration. To
7476	// launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
7477	// parameter to the identifier of the Amazon VPC subnet where you want the cluster
7478	// to launch. If you do not specify this value and your account supports EC2-Classic,
7479	// the cluster launches in EC2-Classic.
7480	Ec2SubnetId *string `type:"string"`
7481
7482	// Applies to clusters that use the instance fleet configuration. When multiple
7483	// EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
7484	// in the optimal subnet.
7485	//
7486	// The instance fleet configuration is available only in Amazon EMR versions
7487	// 4.8.0 and later, excluding 5.0.x versions.
7488	Ec2SubnetIds []*string `type:"list"`
7489
7490	// The identifier of the Amazon EC2 security group for the master node.
7491	EmrManagedMasterSecurityGroup *string `type:"string"`
7492
7493	// The identifier of the Amazon EC2 security group for the core and task nodes.
7494	EmrManagedSlaveSecurityGroup *string `type:"string"`
7495
7496	// Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
7497	// version for the cluster. Valid inputs are "0.18" (deprecated), "0.20" (deprecated),
7498	// "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set
7499	// this value, the default of 0.18 is used, unless the AmiVersion parameter
7500	// is set in the RunJobFlow call, in which case the default version of Hadoop
7501	// for that AMI version is used.
7502	HadoopVersion *string `type:"string"`
7503
7504	// The number of EC2 instances in the cluster.
7505	InstanceCount *int64 `type:"integer"`
7506
7507	//
7508	// The instance fleet configuration is available only in Amazon EMR versions
7509	// 4.8.0 and later, excluding 5.0.x versions.
7510	//
7511	// Describes the EC2 instances and instance configurations for clusters that
7512	// use the instance fleet configuration.
7513	InstanceFleets []*InstanceFleetConfig `type:"list"`
7514
7515	// Configuration for the instance groups in a cluster.
7516	InstanceGroups []*InstanceGroupConfig `type:"list"`
7517
7518	// Specifies whether the cluster should remain available after completing all
7519	// steps.
7520	KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"`
7521
7522	// The EC2 instance type of the master node.
7523	MasterInstanceType *string `min:"1" type:"string"`
7524
7525	// The Availability Zone in which the cluster runs.
7526	Placement *PlacementType `type:"structure"`
7527
7528	// The identifier of the Amazon EC2 security group for the Amazon EMR service
7529	// to access clusters in VPC private subnets.
7530	ServiceAccessSecurityGroup *string `type:"string"`
7531
7532	// The EC2 instance type of the core and task nodes.
7533	SlaveInstanceType *string `min:"1" type:"string"`
7534
7535	// Specifies whether to lock the cluster to prevent the Amazon EC2 instances
7536	// from being terminated by API call, user intervention, or in the event of
7537	// a job-flow error.
7538	TerminationProtected *bool `type:"boolean"`
7539}
7540
7541// String returns the string representation
7542func (s JobFlowInstancesConfig) String() string {
7543	return awsutil.Prettify(s)
7544}
7545
7546// GoString returns the string representation
7547func (s JobFlowInstancesConfig) GoString() string {
7548	return s.String()
7549}
7550
7551// Validate inspects the fields of the type to determine if they are valid.
7552func (s *JobFlowInstancesConfig) Validate() error {
7553	invalidParams := request.ErrInvalidParams{Context: "JobFlowInstancesConfig"}
7554	if s.MasterInstanceType != nil && len(*s.MasterInstanceType) < 1 {
7555		invalidParams.Add(request.NewErrParamMinLen("MasterInstanceType", 1))
7556	}
7557	if s.SlaveInstanceType != nil && len(*s.SlaveInstanceType) < 1 {
7558		invalidParams.Add(request.NewErrParamMinLen("SlaveInstanceType", 1))
7559	}
7560	if s.InstanceFleets != nil {
7561		for i, v := range s.InstanceFleets {
7562			if v == nil {
7563				continue
7564			}
7565			if err := v.Validate(); err != nil {
7566				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceFleets", i), err.(request.ErrInvalidParams))
7567			}
7568		}
7569	}
7570	if s.InstanceGroups != nil {
7571		for i, v := range s.InstanceGroups {
7572			if v == nil {
7573				continue
7574			}
7575			if err := v.Validate(); err != nil {
7576				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
7577			}
7578		}
7579	}
7580
7581	if invalidParams.Len() > 0 {
7582		return invalidParams
7583	}
7584	return nil
7585}
7586
7587// SetAdditionalMasterSecurityGroups sets the AdditionalMasterSecurityGroups field's value.
7588func (s *JobFlowInstancesConfig) SetAdditionalMasterSecurityGroups(v []*string) *JobFlowInstancesConfig {
7589	s.AdditionalMasterSecurityGroups = v
7590	return s
7591}
7592
7593// SetAdditionalSlaveSecurityGroups sets the AdditionalSlaveSecurityGroups field's value.
7594func (s *JobFlowInstancesConfig) SetAdditionalSlaveSecurityGroups(v []*string) *JobFlowInstancesConfig {
7595	s.AdditionalSlaveSecurityGroups = v
7596	return s
7597}
7598
7599// SetEc2KeyName sets the Ec2KeyName field's value.
7600func (s *JobFlowInstancesConfig) SetEc2KeyName(v string) *JobFlowInstancesConfig {
7601	s.Ec2KeyName = &v
7602	return s
7603}
7604
7605// SetEc2SubnetId sets the Ec2SubnetId field's value.
7606func (s *JobFlowInstancesConfig) SetEc2SubnetId(v string) *JobFlowInstancesConfig {
7607	s.Ec2SubnetId = &v
7608	return s
7609}
7610
7611// SetEc2SubnetIds sets the Ec2SubnetIds field's value.
7612func (s *JobFlowInstancesConfig) SetEc2SubnetIds(v []*string) *JobFlowInstancesConfig {
7613	s.Ec2SubnetIds = v
7614	return s
7615}
7616
7617// SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value.
7618func (s *JobFlowInstancesConfig) SetEmrManagedMasterSecurityGroup(v string) *JobFlowInstancesConfig {
7619	s.EmrManagedMasterSecurityGroup = &v
7620	return s
7621}
7622
7623// SetEmrManagedSlaveSecurityGroup sets the EmrManagedSlaveSecurityGroup field's value.
7624func (s *JobFlowInstancesConfig) SetEmrManagedSlaveSecurityGroup(v string) *JobFlowInstancesConfig {
7625	s.EmrManagedSlaveSecurityGroup = &v
7626	return s
7627}
7628
7629// SetHadoopVersion sets the HadoopVersion field's value.
7630func (s *JobFlowInstancesConfig) SetHadoopVersion(v string) *JobFlowInstancesConfig {
7631	s.HadoopVersion = &v
7632	return s
7633}
7634
7635// SetInstanceCount sets the InstanceCount field's value.
7636func (s *JobFlowInstancesConfig) SetInstanceCount(v int64) *JobFlowInstancesConfig {
7637	s.InstanceCount = &v
7638	return s
7639}
7640
7641// SetInstanceFleets sets the InstanceFleets field's value.
7642func (s *JobFlowInstancesConfig) SetInstanceFleets(v []*InstanceFleetConfig) *JobFlowInstancesConfig {
7643	s.InstanceFleets = v
7644	return s
7645}
7646
7647// SetInstanceGroups sets the InstanceGroups field's value.
7648func (s *JobFlowInstancesConfig) SetInstanceGroups(v []*InstanceGroupConfig) *JobFlowInstancesConfig {
7649	s.InstanceGroups = v
7650	return s
7651}
7652
7653// SetKeepJobFlowAliveWhenNoSteps sets the KeepJobFlowAliveWhenNoSteps field's value.
7654func (s *JobFlowInstancesConfig) SetKeepJobFlowAliveWhenNoSteps(v bool) *JobFlowInstancesConfig {
7655	s.KeepJobFlowAliveWhenNoSteps = &v
7656	return s
7657}
7658
7659// SetMasterInstanceType sets the MasterInstanceType field's value.
7660func (s *JobFlowInstancesConfig) SetMasterInstanceType(v string) *JobFlowInstancesConfig {
7661	s.MasterInstanceType = &v
7662	return s
7663}
7664
7665// SetPlacement sets the Placement field's value.
7666func (s *JobFlowInstancesConfig) SetPlacement(v *PlacementType) *JobFlowInstancesConfig {
7667	s.Placement = v
7668	return s
7669}
7670
7671// SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value.
7672func (s *JobFlowInstancesConfig) SetServiceAccessSecurityGroup(v string) *JobFlowInstancesConfig {
7673	s.ServiceAccessSecurityGroup = &v
7674	return s
7675}
7676
7677// SetSlaveInstanceType sets the SlaveInstanceType field's value.
7678func (s *JobFlowInstancesConfig) SetSlaveInstanceType(v string) *JobFlowInstancesConfig {
7679	s.SlaveInstanceType = &v
7680	return s
7681}
7682
7683// SetTerminationProtected sets the TerminationProtected field's value.
7684func (s *JobFlowInstancesConfig) SetTerminationProtected(v bool) *JobFlowInstancesConfig {
7685	s.TerminationProtected = &v
7686	return s
7687}
7688
7689// Specify the type of Amazon EC2 instances that the cluster (job flow) runs
7690// on.
7691type JobFlowInstancesDetail struct {
7692	_ struct{} `type:"structure"`
7693
7694	// The name of an Amazon EC2 key pair that can be used to ssh to the master
7695	// node.
7696	Ec2KeyName *string `type:"string"`
7697
7698	// For clusters launched within Amazon Virtual Private Cloud, this is the identifier
7699	// of the subnet where the cluster was launched.
7700	Ec2SubnetId *string `type:"string"`
7701
7702	// The Hadoop version for the cluster.
7703	HadoopVersion *string `type:"string"`
7704
7705	// The number of Amazon EC2 instances in the cluster. If the value is 1, the
7706	// same instance serves as both the master and core and task node. If the value
7707	// is greater than 1, one instance is the master node and all others are core
7708	// and task nodes.
7709	//
7710	// InstanceCount is a required field
7711	InstanceCount *int64 `type:"integer" required:"true"`
7712
7713	// Details about the instance groups in a cluster.
7714	InstanceGroups []*InstanceGroupDetail `type:"list"`
7715
7716	// Specifies whether the cluster should remain available after completing all
7717	// steps.
7718	KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"`
7719
7720	// The Amazon EC2 instance identifier of the master node.
7721	MasterInstanceId *string `type:"string"`
7722
7723	// The Amazon EC2 master node instance type.
7724	//
7725	// MasterInstanceType is a required field
7726	MasterInstanceType *string `min:"1" type:"string" required:"true"`
7727
7728	// The DNS name of the master node. If the cluster is on a private subnet, this
7729	// is the private DNS name. On a public subnet, this is the public DNS name.
7730	MasterPublicDnsName *string `type:"string"`
7731
7732	// An approximation of the cost of the cluster, represented in m1.small/hours.
7733	// This value is incremented one time for every hour that an m1.small runs.
7734	// Larger instances are weighted more, so an Amazon EC2 instance that is roughly
7735	// four times more expensive would result in the normalized instance hours being
7736	// incremented by four. This result is only an approximation and does not reflect
7737	// the actual billing rate.
7738	NormalizedInstanceHours *int64 `type:"integer"`
7739
7740	// The Amazon EC2 Availability Zone for the cluster.
7741	Placement *PlacementType `type:"structure"`
7742
7743	// The Amazon EC2 core and task node instance type.
7744	//
7745	// SlaveInstanceType is a required field
7746	SlaveInstanceType *string `min:"1" type:"string" required:"true"`
7747
7748	// Specifies whether the Amazon EC2 instances in the cluster are protected from
7749	// termination by API calls, user intervention, or in the event of a job-flow
7750	// error.
7751	TerminationProtected *bool `type:"boolean"`
7752}
7753
7754// String returns the string representation
7755func (s JobFlowInstancesDetail) String() string {
7756	return awsutil.Prettify(s)
7757}
7758
7759// GoString returns the string representation
7760func (s JobFlowInstancesDetail) GoString() string {
7761	return s.String()
7762}
7763
7764// SetEc2KeyName sets the Ec2KeyName field's value.
7765func (s *JobFlowInstancesDetail) SetEc2KeyName(v string) *JobFlowInstancesDetail {
7766	s.Ec2KeyName = &v
7767	return s
7768}
7769
7770// SetEc2SubnetId sets the Ec2SubnetId field's value.
7771func (s *JobFlowInstancesDetail) SetEc2SubnetId(v string) *JobFlowInstancesDetail {
7772	s.Ec2SubnetId = &v
7773	return s
7774}
7775
7776// SetHadoopVersion sets the HadoopVersion field's value.
7777func (s *JobFlowInstancesDetail) SetHadoopVersion(v string) *JobFlowInstancesDetail {
7778	s.HadoopVersion = &v
7779	return s
7780}
7781
7782// SetInstanceCount sets the InstanceCount field's value.
7783func (s *JobFlowInstancesDetail) SetInstanceCount(v int64) *JobFlowInstancesDetail {
7784	s.InstanceCount = &v
7785	return s
7786}
7787
7788// SetInstanceGroups sets the InstanceGroups field's value.
7789func (s *JobFlowInstancesDetail) SetInstanceGroups(v []*InstanceGroupDetail) *JobFlowInstancesDetail {
7790	s.InstanceGroups = v
7791	return s
7792}
7793
7794// SetKeepJobFlowAliveWhenNoSteps sets the KeepJobFlowAliveWhenNoSteps field's value.
7795func (s *JobFlowInstancesDetail) SetKeepJobFlowAliveWhenNoSteps(v bool) *JobFlowInstancesDetail {
7796	s.KeepJobFlowAliveWhenNoSteps = &v
7797	return s
7798}
7799
7800// SetMasterInstanceId sets the MasterInstanceId field's value.
7801func (s *JobFlowInstancesDetail) SetMasterInstanceId(v string) *JobFlowInstancesDetail {
7802	s.MasterInstanceId = &v
7803	return s
7804}
7805
7806// SetMasterInstanceType sets the MasterInstanceType field's value.
7807func (s *JobFlowInstancesDetail) SetMasterInstanceType(v string) *JobFlowInstancesDetail {
7808	s.MasterInstanceType = &v
7809	return s
7810}
7811
7812// SetMasterPublicDnsName sets the MasterPublicDnsName field's value.
7813func (s *JobFlowInstancesDetail) SetMasterPublicDnsName(v string) *JobFlowInstancesDetail {
7814	s.MasterPublicDnsName = &v
7815	return s
7816}
7817
7818// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
7819func (s *JobFlowInstancesDetail) SetNormalizedInstanceHours(v int64) *JobFlowInstancesDetail {
7820	s.NormalizedInstanceHours = &v
7821	return s
7822}
7823
7824// SetPlacement sets the Placement field's value.
7825func (s *JobFlowInstancesDetail) SetPlacement(v *PlacementType) *JobFlowInstancesDetail {
7826	s.Placement = v
7827	return s
7828}
7829
7830// SetSlaveInstanceType sets the SlaveInstanceType field's value.
7831func (s *JobFlowInstancesDetail) SetSlaveInstanceType(v string) *JobFlowInstancesDetail {
7832	s.SlaveInstanceType = &v
7833	return s
7834}
7835
7836// SetTerminationProtected sets the TerminationProtected field's value.
7837func (s *JobFlowInstancesDetail) SetTerminationProtected(v bool) *JobFlowInstancesDetail {
7838	s.TerminationProtected = &v
7839	return s
7840}
7841
7842// Attributes for Kerberos configuration when Kerberos authentication is enabled
7843// using a security configuration. For more information see Use Kerberos Authentication
7844// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
7845// in the EMR Management Guide.
7846type KerberosAttributes struct {
7847	_ struct{} `type:"structure"`
7848
7849	// The Active Directory password for ADDomainJoinUser.
7850	ADDomainJoinPassword *string `type:"string"`
7851
7852	// Required only when establishing a cross-realm trust with an Active Directory
7853	// domain. A user with sufficient privileges to join resources to the domain.
7854	ADDomainJoinUser *string `type:"string"`
7855
7856	// Required only when establishing a cross-realm trust with a KDC in a different
7857	// realm. The cross-realm principal password, which must be identical across
7858	// realms.
7859	CrossRealmTrustPrincipalPassword *string `type:"string"`
7860
7861	// The password used within the cluster for the kadmin service on the cluster-dedicated
7862	// KDC, which maintains Kerberos principals, password policies, and keytabs
7863	// for the cluster.
7864	//
7865	// KdcAdminPassword is a required field
7866	KdcAdminPassword *string `type:"string" required:"true"`
7867
7868	// The name of the Kerberos realm to which all nodes in a cluster belong. For
7869	// example, EC2.INTERNAL.
7870	//
7871	// Realm is a required field
7872	Realm *string `type:"string" required:"true"`
7873}
7874
7875// String returns the string representation
7876func (s KerberosAttributes) String() string {
7877	return awsutil.Prettify(s)
7878}
7879
7880// GoString returns the string representation
7881func (s KerberosAttributes) GoString() string {
7882	return s.String()
7883}
7884
7885// Validate inspects the fields of the type to determine if they are valid.
7886func (s *KerberosAttributes) Validate() error {
7887	invalidParams := request.ErrInvalidParams{Context: "KerberosAttributes"}
7888	if s.KdcAdminPassword == nil {
7889		invalidParams.Add(request.NewErrParamRequired("KdcAdminPassword"))
7890	}
7891	if s.Realm == nil {
7892		invalidParams.Add(request.NewErrParamRequired("Realm"))
7893	}
7894
7895	if invalidParams.Len() > 0 {
7896		return invalidParams
7897	}
7898	return nil
7899}
7900
7901// SetADDomainJoinPassword sets the ADDomainJoinPassword field's value.
7902func (s *KerberosAttributes) SetADDomainJoinPassword(v string) *KerberosAttributes {
7903	s.ADDomainJoinPassword = &v
7904	return s
7905}
7906
7907// SetADDomainJoinUser sets the ADDomainJoinUser field's value.
7908func (s *KerberosAttributes) SetADDomainJoinUser(v string) *KerberosAttributes {
7909	s.ADDomainJoinUser = &v
7910	return s
7911}
7912
7913// SetCrossRealmTrustPrincipalPassword sets the CrossRealmTrustPrincipalPassword field's value.
7914func (s *KerberosAttributes) SetCrossRealmTrustPrincipalPassword(v string) *KerberosAttributes {
7915	s.CrossRealmTrustPrincipalPassword = &v
7916	return s
7917}
7918
7919// SetKdcAdminPassword sets the KdcAdminPassword field's value.
7920func (s *KerberosAttributes) SetKdcAdminPassword(v string) *KerberosAttributes {
7921	s.KdcAdminPassword = &v
7922	return s
7923}
7924
7925// SetRealm sets the Realm field's value.
7926func (s *KerberosAttributes) SetRealm(v string) *KerberosAttributes {
7927	s.Realm = &v
7928	return s
7929}
7930
7931// A key value pair.
7932type KeyValue struct {
7933	_ struct{} `type:"structure"`
7934
7935	// The unique identifier of a key value pair.
7936	Key *string `type:"string"`
7937
7938	// The value part of the identified key.
7939	Value *string `type:"string"`
7940}
7941
7942// String returns the string representation
7943func (s KeyValue) String() string {
7944	return awsutil.Prettify(s)
7945}
7946
7947// GoString returns the string representation
7948func (s KeyValue) GoString() string {
7949	return s.String()
7950}
7951
7952// SetKey sets the Key field's value.
7953func (s *KeyValue) SetKey(v string) *KeyValue {
7954	s.Key = &v
7955	return s
7956}
7957
7958// SetValue sets the Value field's value.
7959func (s *KeyValue) SetValue(v string) *KeyValue {
7960	s.Value = &v
7961	return s
7962}
7963
7964// This input determines which bootstrap actions to retrieve.
7965type ListBootstrapActionsInput struct {
7966	_ struct{} `type:"structure"`
7967
7968	// The cluster identifier for the bootstrap actions to list.
7969	//
7970	// ClusterId is a required field
7971	ClusterId *string `type:"string" required:"true"`
7972
7973	// The pagination token that indicates the next set of results to retrieve.
7974	Marker *string `type:"string"`
7975}
7976
7977// String returns the string representation
7978func (s ListBootstrapActionsInput) String() string {
7979	return awsutil.Prettify(s)
7980}
7981
7982// GoString returns the string representation
7983func (s ListBootstrapActionsInput) GoString() string {
7984	return s.String()
7985}
7986
7987// Validate inspects the fields of the type to determine if they are valid.
7988func (s *ListBootstrapActionsInput) Validate() error {
7989	invalidParams := request.ErrInvalidParams{Context: "ListBootstrapActionsInput"}
7990	if s.ClusterId == nil {
7991		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
7992	}
7993
7994	if invalidParams.Len() > 0 {
7995		return invalidParams
7996	}
7997	return nil
7998}
7999
8000// SetClusterId sets the ClusterId field's value.
8001func (s *ListBootstrapActionsInput) SetClusterId(v string) *ListBootstrapActionsInput {
8002	s.ClusterId = &v
8003	return s
8004}
8005
8006// SetMarker sets the Marker field's value.
8007func (s *ListBootstrapActionsInput) SetMarker(v string) *ListBootstrapActionsInput {
8008	s.Marker = &v
8009	return s
8010}
8011
8012// This output contains the bootstrap actions detail.
8013type ListBootstrapActionsOutput struct {
8014	_ struct{} `type:"structure"`
8015
8016	// The bootstrap actions associated with the cluster.
8017	BootstrapActions []*Command `type:"list"`
8018
8019	// The pagination token that indicates the next set of results to retrieve.
8020	Marker *string `type:"string"`
8021}
8022
8023// String returns the string representation
8024func (s ListBootstrapActionsOutput) String() string {
8025	return awsutil.Prettify(s)
8026}
8027
8028// GoString returns the string representation
8029func (s ListBootstrapActionsOutput) GoString() string {
8030	return s.String()
8031}
8032
8033// SetBootstrapActions sets the BootstrapActions field's value.
8034func (s *ListBootstrapActionsOutput) SetBootstrapActions(v []*Command) *ListBootstrapActionsOutput {
8035	s.BootstrapActions = v
8036	return s
8037}
8038
8039// SetMarker sets the Marker field's value.
8040func (s *ListBootstrapActionsOutput) SetMarker(v string) *ListBootstrapActionsOutput {
8041	s.Marker = &v
8042	return s
8043}
8044
8045// This input determines how the ListClusters action filters the list of clusters
8046// that it returns.
8047type ListClustersInput struct {
8048	_ struct{} `type:"structure"`
8049
8050	// The cluster state filters to apply when listing clusters.
8051	ClusterStates []*string `type:"list"`
8052
8053	// The creation date and time beginning value filter for listing clusters.
8054	CreatedAfter *time.Time `type:"timestamp"`
8055
8056	// The creation date and time end value filter for listing clusters.
8057	CreatedBefore *time.Time `type:"timestamp"`
8058
8059	// The pagination token that indicates the next set of results to retrieve.
8060	Marker *string `type:"string"`
8061}
8062
8063// String returns the string representation
8064func (s ListClustersInput) String() string {
8065	return awsutil.Prettify(s)
8066}
8067
8068// GoString returns the string representation
8069func (s ListClustersInput) GoString() string {
8070	return s.String()
8071}
8072
8073// SetClusterStates sets the ClusterStates field's value.
8074func (s *ListClustersInput) SetClusterStates(v []*string) *ListClustersInput {
8075	s.ClusterStates = v
8076	return s
8077}
8078
8079// SetCreatedAfter sets the CreatedAfter field's value.
8080func (s *ListClustersInput) SetCreatedAfter(v time.Time) *ListClustersInput {
8081	s.CreatedAfter = &v
8082	return s
8083}
8084
8085// SetCreatedBefore sets the CreatedBefore field's value.
8086func (s *ListClustersInput) SetCreatedBefore(v time.Time) *ListClustersInput {
8087	s.CreatedBefore = &v
8088	return s
8089}
8090
8091// SetMarker sets the Marker field's value.
8092func (s *ListClustersInput) SetMarker(v string) *ListClustersInput {
8093	s.Marker = &v
8094	return s
8095}
8096
8097// This contains a ClusterSummaryList with the cluster details; for example,
8098// the cluster IDs, names, and status.
8099type ListClustersOutput struct {
8100	_ struct{} `type:"structure"`
8101
8102	// The list of clusters for the account based on the given filters.
8103	Clusters []*ClusterSummary `type:"list"`
8104
8105	// The pagination token that indicates the next set of results to retrieve.
8106	Marker *string `type:"string"`
8107}
8108
8109// String returns the string representation
8110func (s ListClustersOutput) String() string {
8111	return awsutil.Prettify(s)
8112}
8113
8114// GoString returns the string representation
8115func (s ListClustersOutput) GoString() string {
8116	return s.String()
8117}
8118
8119// SetClusters sets the Clusters field's value.
8120func (s *ListClustersOutput) SetClusters(v []*ClusterSummary) *ListClustersOutput {
8121	s.Clusters = v
8122	return s
8123}
8124
8125// SetMarker sets the Marker field's value.
8126func (s *ListClustersOutput) SetMarker(v string) *ListClustersOutput {
8127	s.Marker = &v
8128	return s
8129}
8130
8131type ListInstanceFleetsInput struct {
8132	_ struct{} `type:"structure"`
8133
8134	// The unique identifier of the cluster.
8135	//
8136	// ClusterId is a required field
8137	ClusterId *string `type:"string" required:"true"`
8138
8139	// The pagination token that indicates the next set of results to retrieve.
8140	Marker *string `type:"string"`
8141}
8142
8143// String returns the string representation
8144func (s ListInstanceFleetsInput) String() string {
8145	return awsutil.Prettify(s)
8146}
8147
8148// GoString returns the string representation
8149func (s ListInstanceFleetsInput) GoString() string {
8150	return s.String()
8151}
8152
8153// Validate inspects the fields of the type to determine if they are valid.
8154func (s *ListInstanceFleetsInput) Validate() error {
8155	invalidParams := request.ErrInvalidParams{Context: "ListInstanceFleetsInput"}
8156	if s.ClusterId == nil {
8157		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8158	}
8159
8160	if invalidParams.Len() > 0 {
8161		return invalidParams
8162	}
8163	return nil
8164}
8165
8166// SetClusterId sets the ClusterId field's value.
8167func (s *ListInstanceFleetsInput) SetClusterId(v string) *ListInstanceFleetsInput {
8168	s.ClusterId = &v
8169	return s
8170}
8171
8172// SetMarker sets the Marker field's value.
8173func (s *ListInstanceFleetsInput) SetMarker(v string) *ListInstanceFleetsInput {
8174	s.Marker = &v
8175	return s
8176}
8177
8178type ListInstanceFleetsOutput struct {
8179	_ struct{} `type:"structure"`
8180
8181	// The list of instance fleets for the cluster and given filters.
8182	InstanceFleets []*InstanceFleet `type:"list"`
8183
8184	// The pagination token that indicates the next set of results to retrieve.
8185	Marker *string `type:"string"`
8186}
8187
8188// String returns the string representation
8189func (s ListInstanceFleetsOutput) String() string {
8190	return awsutil.Prettify(s)
8191}
8192
8193// GoString returns the string representation
8194func (s ListInstanceFleetsOutput) GoString() string {
8195	return s.String()
8196}
8197
8198// SetInstanceFleets sets the InstanceFleets field's value.
8199func (s *ListInstanceFleetsOutput) SetInstanceFleets(v []*InstanceFleet) *ListInstanceFleetsOutput {
8200	s.InstanceFleets = v
8201	return s
8202}
8203
8204// SetMarker sets the Marker field's value.
8205func (s *ListInstanceFleetsOutput) SetMarker(v string) *ListInstanceFleetsOutput {
8206	s.Marker = &v
8207	return s
8208}
8209
8210// This input determines which instance groups to retrieve.
8211type ListInstanceGroupsInput struct {
8212	_ struct{} `type:"structure"`
8213
8214	// The identifier of the cluster for which to list the instance groups.
8215	//
8216	// ClusterId is a required field
8217	ClusterId *string `type:"string" required:"true"`
8218
8219	// The pagination token that indicates the next set of results to retrieve.
8220	Marker *string `type:"string"`
8221}
8222
8223// String returns the string representation
8224func (s ListInstanceGroupsInput) String() string {
8225	return awsutil.Prettify(s)
8226}
8227
8228// GoString returns the string representation
8229func (s ListInstanceGroupsInput) GoString() string {
8230	return s.String()
8231}
8232
8233// Validate inspects the fields of the type to determine if they are valid.
8234func (s *ListInstanceGroupsInput) Validate() error {
8235	invalidParams := request.ErrInvalidParams{Context: "ListInstanceGroupsInput"}
8236	if s.ClusterId == nil {
8237		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8238	}
8239
8240	if invalidParams.Len() > 0 {
8241		return invalidParams
8242	}
8243	return nil
8244}
8245
8246// SetClusterId sets the ClusterId field's value.
8247func (s *ListInstanceGroupsInput) SetClusterId(v string) *ListInstanceGroupsInput {
8248	s.ClusterId = &v
8249	return s
8250}
8251
8252// SetMarker sets the Marker field's value.
8253func (s *ListInstanceGroupsInput) SetMarker(v string) *ListInstanceGroupsInput {
8254	s.Marker = &v
8255	return s
8256}
8257
8258// This input determines which instance groups to retrieve.
8259type ListInstanceGroupsOutput struct {
8260	_ struct{} `type:"structure"`
8261
8262	// The list of instance groups for the cluster and given filters.
8263	InstanceGroups []*InstanceGroup `type:"list"`
8264
8265	// The pagination token that indicates the next set of results to retrieve.
8266	Marker *string `type:"string"`
8267}
8268
8269// String returns the string representation
8270func (s ListInstanceGroupsOutput) String() string {
8271	return awsutil.Prettify(s)
8272}
8273
8274// GoString returns the string representation
8275func (s ListInstanceGroupsOutput) GoString() string {
8276	return s.String()
8277}
8278
8279// SetInstanceGroups sets the InstanceGroups field's value.
8280func (s *ListInstanceGroupsOutput) SetInstanceGroups(v []*InstanceGroup) *ListInstanceGroupsOutput {
8281	s.InstanceGroups = v
8282	return s
8283}
8284
8285// SetMarker sets the Marker field's value.
8286func (s *ListInstanceGroupsOutput) SetMarker(v string) *ListInstanceGroupsOutput {
8287	s.Marker = &v
8288	return s
8289}
8290
8291// This input determines which instances to list.
8292type ListInstancesInput struct {
8293	_ struct{} `type:"structure"`
8294
8295	// The identifier of the cluster for which to list the instances.
8296	//
8297	// ClusterId is a required field
8298	ClusterId *string `type:"string" required:"true"`
8299
8300	// The unique identifier of the instance fleet.
8301	InstanceFleetId *string `type:"string"`
8302
8303	// The node type of the instance fleet. For example MASTER, CORE, or TASK.
8304	InstanceFleetType *string `type:"string" enum:"InstanceFleetType"`
8305
8306	// The identifier of the instance group for which to list the instances.
8307	InstanceGroupId *string `type:"string"`
8308
8309	// The type of instance group for which to list the instances.
8310	InstanceGroupTypes []*string `type:"list"`
8311
8312	// A list of instance states that will filter the instances returned with this
8313	// request.
8314	InstanceStates []*string `type:"list"`
8315
8316	// The pagination token that indicates the next set of results to retrieve.
8317	Marker *string `type:"string"`
8318}
8319
8320// String returns the string representation
8321func (s ListInstancesInput) String() string {
8322	return awsutil.Prettify(s)
8323}
8324
8325// GoString returns the string representation
8326func (s ListInstancesInput) GoString() string {
8327	return s.String()
8328}
8329
8330// Validate inspects the fields of the type to determine if they are valid.
8331func (s *ListInstancesInput) Validate() error {
8332	invalidParams := request.ErrInvalidParams{Context: "ListInstancesInput"}
8333	if s.ClusterId == nil {
8334		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8335	}
8336
8337	if invalidParams.Len() > 0 {
8338		return invalidParams
8339	}
8340	return nil
8341}
8342
8343// SetClusterId sets the ClusterId field's value.
8344func (s *ListInstancesInput) SetClusterId(v string) *ListInstancesInput {
8345	s.ClusterId = &v
8346	return s
8347}
8348
8349// SetInstanceFleetId sets the InstanceFleetId field's value.
8350func (s *ListInstancesInput) SetInstanceFleetId(v string) *ListInstancesInput {
8351	s.InstanceFleetId = &v
8352	return s
8353}
8354
8355// SetInstanceFleetType sets the InstanceFleetType field's value.
8356func (s *ListInstancesInput) SetInstanceFleetType(v string) *ListInstancesInput {
8357	s.InstanceFleetType = &v
8358	return s
8359}
8360
8361// SetInstanceGroupId sets the InstanceGroupId field's value.
8362func (s *ListInstancesInput) SetInstanceGroupId(v string) *ListInstancesInput {
8363	s.InstanceGroupId = &v
8364	return s
8365}
8366
8367// SetInstanceGroupTypes sets the InstanceGroupTypes field's value.
8368func (s *ListInstancesInput) SetInstanceGroupTypes(v []*string) *ListInstancesInput {
8369	s.InstanceGroupTypes = v
8370	return s
8371}
8372
8373// SetInstanceStates sets the InstanceStates field's value.
8374func (s *ListInstancesInput) SetInstanceStates(v []*string) *ListInstancesInput {
8375	s.InstanceStates = v
8376	return s
8377}
8378
8379// SetMarker sets the Marker field's value.
8380func (s *ListInstancesInput) SetMarker(v string) *ListInstancesInput {
8381	s.Marker = &v
8382	return s
8383}
8384
8385// This output contains the list of instances.
8386type ListInstancesOutput struct {
8387	_ struct{} `type:"structure"`
8388
8389	// The list of instances for the cluster and given filters.
8390	Instances []*Instance `type:"list"`
8391
8392	// The pagination token that indicates the next set of results to retrieve.
8393	Marker *string `type:"string"`
8394}
8395
8396// String returns the string representation
8397func (s ListInstancesOutput) String() string {
8398	return awsutil.Prettify(s)
8399}
8400
8401// GoString returns the string representation
8402func (s ListInstancesOutput) GoString() string {
8403	return s.String()
8404}
8405
8406// SetInstances sets the Instances field's value.
8407func (s *ListInstancesOutput) SetInstances(v []*Instance) *ListInstancesOutput {
8408	s.Instances = v
8409	return s
8410}
8411
8412// SetMarker sets the Marker field's value.
8413func (s *ListInstancesOutput) SetMarker(v string) *ListInstancesOutput {
8414	s.Marker = &v
8415	return s
8416}
8417
8418type ListSecurityConfigurationsInput struct {
8419	_ struct{} `type:"structure"`
8420
8421	// The pagination token that indicates the set of results to retrieve.
8422	Marker *string `type:"string"`
8423}
8424
8425// String returns the string representation
8426func (s ListSecurityConfigurationsInput) String() string {
8427	return awsutil.Prettify(s)
8428}
8429
8430// GoString returns the string representation
8431func (s ListSecurityConfigurationsInput) GoString() string {
8432	return s.String()
8433}
8434
8435// SetMarker sets the Marker field's value.
8436func (s *ListSecurityConfigurationsInput) SetMarker(v string) *ListSecurityConfigurationsInput {
8437	s.Marker = &v
8438	return s
8439}
8440
8441type ListSecurityConfigurationsOutput struct {
8442	_ struct{} `type:"structure"`
8443
8444	// A pagination token that indicates the next set of results to retrieve. Include
8445	// the marker in the next ListSecurityConfiguration call to retrieve the next
8446	// page of results, if required.
8447	Marker *string `type:"string"`
8448
8449	// The creation date and time, and name, of each security configuration.
8450	SecurityConfigurations []*SecurityConfigurationSummary `type:"list"`
8451}
8452
8453// String returns the string representation
8454func (s ListSecurityConfigurationsOutput) String() string {
8455	return awsutil.Prettify(s)
8456}
8457
8458// GoString returns the string representation
8459func (s ListSecurityConfigurationsOutput) GoString() string {
8460	return s.String()
8461}
8462
8463// SetMarker sets the Marker field's value.
8464func (s *ListSecurityConfigurationsOutput) SetMarker(v string) *ListSecurityConfigurationsOutput {
8465	s.Marker = &v
8466	return s
8467}
8468
8469// SetSecurityConfigurations sets the SecurityConfigurations field's value.
8470func (s *ListSecurityConfigurationsOutput) SetSecurityConfigurations(v []*SecurityConfigurationSummary) *ListSecurityConfigurationsOutput {
8471	s.SecurityConfigurations = v
8472	return s
8473}
8474
8475// This input determines which steps to list.
8476type ListStepsInput struct {
8477	_ struct{} `type:"structure"`
8478
8479	// The identifier of the cluster for which to list the steps.
8480	//
8481	// ClusterId is a required field
8482	ClusterId *string `type:"string" required:"true"`
8483
8484	// The pagination token that indicates the next set of results to retrieve.
8485	Marker *string `type:"string"`
8486
8487	// The filter to limit the step list based on the identifier of the steps.
8488	StepIds []*string `type:"list"`
8489
8490	// The filter to limit the step list based on certain states.
8491	StepStates []*string `type:"list"`
8492}
8493
8494// String returns the string representation
8495func (s ListStepsInput) String() string {
8496	return awsutil.Prettify(s)
8497}
8498
8499// GoString returns the string representation
8500func (s ListStepsInput) GoString() string {
8501	return s.String()
8502}
8503
8504// Validate inspects the fields of the type to determine if they are valid.
8505func (s *ListStepsInput) Validate() error {
8506	invalidParams := request.ErrInvalidParams{Context: "ListStepsInput"}
8507	if s.ClusterId == nil {
8508		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8509	}
8510
8511	if invalidParams.Len() > 0 {
8512		return invalidParams
8513	}
8514	return nil
8515}
8516
8517// SetClusterId sets the ClusterId field's value.
8518func (s *ListStepsInput) SetClusterId(v string) *ListStepsInput {
8519	s.ClusterId = &v
8520	return s
8521}
8522
8523// SetMarker sets the Marker field's value.
8524func (s *ListStepsInput) SetMarker(v string) *ListStepsInput {
8525	s.Marker = &v
8526	return s
8527}
8528
8529// SetStepIds sets the StepIds field's value.
8530func (s *ListStepsInput) SetStepIds(v []*string) *ListStepsInput {
8531	s.StepIds = v
8532	return s
8533}
8534
8535// SetStepStates sets the StepStates field's value.
8536func (s *ListStepsInput) SetStepStates(v []*string) *ListStepsInput {
8537	s.StepStates = v
8538	return s
8539}
8540
8541// This output contains the list of steps returned in reverse order. This means
8542// that the last step is the first element in the list.
8543type ListStepsOutput struct {
8544	_ struct{} `type:"structure"`
8545
8546	// The pagination token that indicates the next set of results to retrieve.
8547	Marker *string `type:"string"`
8548
8549	// The filtered list of steps for the cluster.
8550	Steps []*StepSummary `type:"list"`
8551}
8552
8553// String returns the string representation
8554func (s ListStepsOutput) String() string {
8555	return awsutil.Prettify(s)
8556}
8557
8558// GoString returns the string representation
8559func (s ListStepsOutput) GoString() string {
8560	return s.String()
8561}
8562
8563// SetMarker sets the Marker field's value.
8564func (s *ListStepsOutput) SetMarker(v string) *ListStepsOutput {
8565	s.Marker = &v
8566	return s
8567}
8568
8569// SetSteps sets the Steps field's value.
8570func (s *ListStepsOutput) SetSteps(v []*StepSummary) *ListStepsOutput {
8571	s.Steps = v
8572	return s
8573}
8574
8575// A CloudWatch dimension, which is specified using a Key (known as a Name in
8576// CloudWatch), Value pair. By default, Amazon EMR uses one dimension whose
8577// Key is JobFlowID and Value is a variable representing the cluster ID, which
8578// is ${emr.clusterId}. This enables the rule to bootstrap when the cluster
8579// ID becomes available.
8580type MetricDimension struct {
8581	_ struct{} `type:"structure"`
8582
8583	// The dimension name.
8584	Key *string `type:"string"`
8585
8586	// The dimension value.
8587	Value *string `type:"string"`
8588}
8589
8590// String returns the string representation
8591func (s MetricDimension) String() string {
8592	return awsutil.Prettify(s)
8593}
8594
8595// GoString returns the string representation
8596func (s MetricDimension) GoString() string {
8597	return s.String()
8598}
8599
8600// SetKey sets the Key field's value.
8601func (s *MetricDimension) SetKey(v string) *MetricDimension {
8602	s.Key = &v
8603	return s
8604}
8605
8606// SetValue sets the Value field's value.
8607func (s *MetricDimension) SetValue(v string) *MetricDimension {
8608	s.Value = &v
8609	return s
8610}
8611
8612type ModifyInstanceFleetInput struct {
8613	_ struct{} `type:"structure"`
8614
8615	// The unique identifier of the cluster.
8616	//
8617	// ClusterId is a required field
8618	ClusterId *string `type:"string" required:"true"`
8619
8620	// The unique identifier of the instance fleet.
8621	//
8622	// InstanceFleet is a required field
8623	InstanceFleet *InstanceFleetModifyConfig `type:"structure" required:"true"`
8624}
8625
8626// String returns the string representation
8627func (s ModifyInstanceFleetInput) String() string {
8628	return awsutil.Prettify(s)
8629}
8630
8631// GoString returns the string representation
8632func (s ModifyInstanceFleetInput) GoString() string {
8633	return s.String()
8634}
8635
8636// Validate inspects the fields of the type to determine if they are valid.
8637func (s *ModifyInstanceFleetInput) Validate() error {
8638	invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceFleetInput"}
8639	if s.ClusterId == nil {
8640		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8641	}
8642	if s.InstanceFleet == nil {
8643		invalidParams.Add(request.NewErrParamRequired("InstanceFleet"))
8644	}
8645	if s.InstanceFleet != nil {
8646		if err := s.InstanceFleet.Validate(); err != nil {
8647			invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams))
8648		}
8649	}
8650
8651	if invalidParams.Len() > 0 {
8652		return invalidParams
8653	}
8654	return nil
8655}
8656
8657// SetClusterId sets the ClusterId field's value.
8658func (s *ModifyInstanceFleetInput) SetClusterId(v string) *ModifyInstanceFleetInput {
8659	s.ClusterId = &v
8660	return s
8661}
8662
8663// SetInstanceFleet sets the InstanceFleet field's value.
8664func (s *ModifyInstanceFleetInput) SetInstanceFleet(v *InstanceFleetModifyConfig) *ModifyInstanceFleetInput {
8665	s.InstanceFleet = v
8666	return s
8667}
8668
8669type ModifyInstanceFleetOutput struct {
8670	_ struct{} `type:"structure"`
8671}
8672
8673// String returns the string representation
8674func (s ModifyInstanceFleetOutput) String() string {
8675	return awsutil.Prettify(s)
8676}
8677
8678// GoString returns the string representation
8679func (s ModifyInstanceFleetOutput) GoString() string {
8680	return s.String()
8681}
8682
8683// Change the size of some instance groups.
8684type ModifyInstanceGroupsInput struct {
8685	_ struct{} `type:"structure"`
8686
8687	// The ID of the cluster to which the instance group belongs.
8688	ClusterId *string `type:"string"`
8689
8690	// Instance groups to change.
8691	InstanceGroups []*InstanceGroupModifyConfig `type:"list"`
8692}
8693
8694// String returns the string representation
8695func (s ModifyInstanceGroupsInput) String() string {
8696	return awsutil.Prettify(s)
8697}
8698
8699// GoString returns the string representation
8700func (s ModifyInstanceGroupsInput) GoString() string {
8701	return s.String()
8702}
8703
8704// Validate inspects the fields of the type to determine if they are valid.
8705func (s *ModifyInstanceGroupsInput) Validate() error {
8706	invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceGroupsInput"}
8707	if s.InstanceGroups != nil {
8708		for i, v := range s.InstanceGroups {
8709			if v == nil {
8710				continue
8711			}
8712			if err := v.Validate(); err != nil {
8713				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
8714			}
8715		}
8716	}
8717
8718	if invalidParams.Len() > 0 {
8719		return invalidParams
8720	}
8721	return nil
8722}
8723
8724// SetClusterId sets the ClusterId field's value.
8725func (s *ModifyInstanceGroupsInput) SetClusterId(v string) *ModifyInstanceGroupsInput {
8726	s.ClusterId = &v
8727	return s
8728}
8729
8730// SetInstanceGroups sets the InstanceGroups field's value.
8731func (s *ModifyInstanceGroupsInput) SetInstanceGroups(v []*InstanceGroupModifyConfig) *ModifyInstanceGroupsInput {
8732	s.InstanceGroups = v
8733	return s
8734}
8735
8736type ModifyInstanceGroupsOutput struct {
8737	_ struct{} `type:"structure"`
8738}
8739
8740// String returns the string representation
8741func (s ModifyInstanceGroupsOutput) String() string {
8742	return awsutil.Prettify(s)
8743}
8744
8745// GoString returns the string representation
8746func (s ModifyInstanceGroupsOutput) GoString() string {
8747	return s.String()
8748}
8749
8750// The Amazon EC2 Availability Zone configuration of the cluster (job flow).
8751type PlacementType struct {
8752	_ struct{} `type:"structure"`
8753
8754	// The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used
8755	// for uniform instance groups, while AvailabilityZones (plural) is used for
8756	// instance fleets.
8757	AvailabilityZone *string `type:"string"`
8758
8759	// When multiple Availability Zones are specified, Amazon EMR evaluates them
8760	// and launches instances in the optimal Availability Zone. AvailabilityZones
8761	// is used for instance fleets, while AvailabilityZone (singular) is used for
8762	// uniform instance groups.
8763	//
8764	// The instance fleet configuration is available only in Amazon EMR versions
8765	// 4.8.0 and later, excluding 5.0.x versions.
8766	AvailabilityZones []*string `type:"list"`
8767}
8768
8769// String returns the string representation
8770func (s PlacementType) String() string {
8771	return awsutil.Prettify(s)
8772}
8773
8774// GoString returns the string representation
8775func (s PlacementType) GoString() string {
8776	return s.String()
8777}
8778
8779// SetAvailabilityZone sets the AvailabilityZone field's value.
8780func (s *PlacementType) SetAvailabilityZone(v string) *PlacementType {
8781	s.AvailabilityZone = &v
8782	return s
8783}
8784
8785// SetAvailabilityZones sets the AvailabilityZones field's value.
8786func (s *PlacementType) SetAvailabilityZones(v []*string) *PlacementType {
8787	s.AvailabilityZones = v
8788	return s
8789}
8790
8791// A list of port ranges that are permitted to allow inbound traffic from all
8792// public IP addresses. To specify a single port, use the same value for MinRange
8793// and MaxRange.
8794type PortRange struct {
8795	_ struct{} `type:"structure"`
8796
8797	// The smallest port number in a specified range of port numbers.
8798	MaxRange *int64 `type:"integer"`
8799
8800	// The smallest port number in a specified range of port numbers.
8801	//
8802	// MinRange is a required field
8803	MinRange *int64 `type:"integer" required:"true"`
8804}
8805
8806// String returns the string representation
8807func (s PortRange) String() string {
8808	return awsutil.Prettify(s)
8809}
8810
8811// GoString returns the string representation
8812func (s PortRange) GoString() string {
8813	return s.String()
8814}
8815
8816// Validate inspects the fields of the type to determine if they are valid.
8817func (s *PortRange) Validate() error {
8818	invalidParams := request.ErrInvalidParams{Context: "PortRange"}
8819	if s.MinRange == nil {
8820		invalidParams.Add(request.NewErrParamRequired("MinRange"))
8821	}
8822
8823	if invalidParams.Len() > 0 {
8824		return invalidParams
8825	}
8826	return nil
8827}
8828
8829// SetMaxRange sets the MaxRange field's value.
8830func (s *PortRange) SetMaxRange(v int64) *PortRange {
8831	s.MaxRange = &v
8832	return s
8833}
8834
8835// SetMinRange sets the MinRange field's value.
8836func (s *PortRange) SetMinRange(v int64) *PortRange {
8837	s.MinRange = &v
8838	return s
8839}
8840
8841type PutAutoScalingPolicyInput struct {
8842	_ struct{} `type:"structure"`
8843
8844	// Specifies the definition of the automatic scaling policy.
8845	//
8846	// AutoScalingPolicy is a required field
8847	AutoScalingPolicy *AutoScalingPolicy `type:"structure" required:"true"`
8848
8849	// Specifies the ID of a cluster. The instance group to which the automatic
8850	// scaling policy is applied is within this cluster.
8851	//
8852	// ClusterId is a required field
8853	ClusterId *string `type:"string" required:"true"`
8854
8855	// Specifies the ID of the instance group to which the automatic scaling policy
8856	// is applied.
8857	//
8858	// InstanceGroupId is a required field
8859	InstanceGroupId *string `type:"string" required:"true"`
8860}
8861
8862// String returns the string representation
8863func (s PutAutoScalingPolicyInput) String() string {
8864	return awsutil.Prettify(s)
8865}
8866
8867// GoString returns the string representation
8868func (s PutAutoScalingPolicyInput) GoString() string {
8869	return s.String()
8870}
8871
8872// Validate inspects the fields of the type to determine if they are valid.
8873func (s *PutAutoScalingPolicyInput) Validate() error {
8874	invalidParams := request.ErrInvalidParams{Context: "PutAutoScalingPolicyInput"}
8875	if s.AutoScalingPolicy == nil {
8876		invalidParams.Add(request.NewErrParamRequired("AutoScalingPolicy"))
8877	}
8878	if s.ClusterId == nil {
8879		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8880	}
8881	if s.InstanceGroupId == nil {
8882		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
8883	}
8884	if s.AutoScalingPolicy != nil {
8885		if err := s.AutoScalingPolicy.Validate(); err != nil {
8886			invalidParams.AddNested("AutoScalingPolicy", err.(request.ErrInvalidParams))
8887		}
8888	}
8889
8890	if invalidParams.Len() > 0 {
8891		return invalidParams
8892	}
8893	return nil
8894}
8895
8896// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
8897func (s *PutAutoScalingPolicyInput) SetAutoScalingPolicy(v *AutoScalingPolicy) *PutAutoScalingPolicyInput {
8898	s.AutoScalingPolicy = v
8899	return s
8900}
8901
8902// SetClusterId sets the ClusterId field's value.
8903func (s *PutAutoScalingPolicyInput) SetClusterId(v string) *PutAutoScalingPolicyInput {
8904	s.ClusterId = &v
8905	return s
8906}
8907
8908// SetInstanceGroupId sets the InstanceGroupId field's value.
8909func (s *PutAutoScalingPolicyInput) SetInstanceGroupId(v string) *PutAutoScalingPolicyInput {
8910	s.InstanceGroupId = &v
8911	return s
8912}
8913
8914type PutAutoScalingPolicyOutput struct {
8915	_ struct{} `type:"structure"`
8916
8917	// The automatic scaling policy definition.
8918	AutoScalingPolicy *AutoScalingPolicyDescription `type:"structure"`
8919
8920	// Specifies the ID of a cluster. The instance group to which the automatic
8921	// scaling policy is applied is within this cluster.
8922	ClusterId *string `type:"string"`
8923
8924	// Specifies the ID of the instance group to which the scaling policy is applied.
8925	InstanceGroupId *string `type:"string"`
8926}
8927
8928// String returns the string representation
8929func (s PutAutoScalingPolicyOutput) String() string {
8930	return awsutil.Prettify(s)
8931}
8932
8933// GoString returns the string representation
8934func (s PutAutoScalingPolicyOutput) GoString() string {
8935	return s.String()
8936}
8937
8938// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
8939func (s *PutAutoScalingPolicyOutput) SetAutoScalingPolicy(v *AutoScalingPolicyDescription) *PutAutoScalingPolicyOutput {
8940	s.AutoScalingPolicy = v
8941	return s
8942}
8943
8944// SetClusterId sets the ClusterId field's value.
8945func (s *PutAutoScalingPolicyOutput) SetClusterId(v string) *PutAutoScalingPolicyOutput {
8946	s.ClusterId = &v
8947	return s
8948}
8949
8950// SetInstanceGroupId sets the InstanceGroupId field's value.
8951func (s *PutAutoScalingPolicyOutput) SetInstanceGroupId(v string) *PutAutoScalingPolicyOutput {
8952	s.InstanceGroupId = &v
8953	return s
8954}
8955
8956type PutBlockPublicAccessConfigurationInput struct {
8957	_ struct{} `type:"structure"`
8958
8959	// A configuration for Amazon EMR block public access. The configuration applies
8960	// to all clusters created in your account for the current Region. The configuration
8961	// specifies whether block public access is enabled. If block public access
8962	// is enabled, security groups associated with the cluster cannot have rules
8963	// that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port
8964	// is specified as an exception using PermittedPublicSecurityGroupRuleRanges
8965	// in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception,
8966	// and public access is allowed on this port. You can change this by updating
8967	// BlockPublicSecurityGroupRules to remove the exception.
8968	//
8969	// BlockPublicAccessConfiguration is a required field
8970	BlockPublicAccessConfiguration *BlockPublicAccessConfiguration `type:"structure" required:"true"`
8971}
8972
8973// String returns the string representation
8974func (s PutBlockPublicAccessConfigurationInput) String() string {
8975	return awsutil.Prettify(s)
8976}
8977
8978// GoString returns the string representation
8979func (s PutBlockPublicAccessConfigurationInput) GoString() string {
8980	return s.String()
8981}
8982
8983// Validate inspects the fields of the type to determine if they are valid.
8984func (s *PutBlockPublicAccessConfigurationInput) Validate() error {
8985	invalidParams := request.ErrInvalidParams{Context: "PutBlockPublicAccessConfigurationInput"}
8986	if s.BlockPublicAccessConfiguration == nil {
8987		invalidParams.Add(request.NewErrParamRequired("BlockPublicAccessConfiguration"))
8988	}
8989	if s.BlockPublicAccessConfiguration != nil {
8990		if err := s.BlockPublicAccessConfiguration.Validate(); err != nil {
8991			invalidParams.AddNested("BlockPublicAccessConfiguration", err.(request.ErrInvalidParams))
8992		}
8993	}
8994
8995	if invalidParams.Len() > 0 {
8996		return invalidParams
8997	}
8998	return nil
8999}
9000
9001// SetBlockPublicAccessConfiguration sets the BlockPublicAccessConfiguration field's value.
9002func (s *PutBlockPublicAccessConfigurationInput) SetBlockPublicAccessConfiguration(v *BlockPublicAccessConfiguration) *PutBlockPublicAccessConfigurationInput {
9003	s.BlockPublicAccessConfiguration = v
9004	return s
9005}
9006
9007type PutBlockPublicAccessConfigurationOutput struct {
9008	_ struct{} `type:"structure"`
9009}
9010
9011// String returns the string representation
9012func (s PutBlockPublicAccessConfigurationOutput) String() string {
9013	return awsutil.Prettify(s)
9014}
9015
9016// GoString returns the string representation
9017func (s PutBlockPublicAccessConfigurationOutput) GoString() string {
9018	return s.String()
9019}
9020
9021type RemoveAutoScalingPolicyInput struct {
9022	_ struct{} `type:"structure"`
9023
9024	// Specifies the ID of a cluster. The instance group to which the automatic
9025	// scaling policy is applied is within this cluster.
9026	//
9027	// ClusterId is a required field
9028	ClusterId *string `type:"string" required:"true"`
9029
9030	// Specifies the ID of the instance group to which the scaling policy is applied.
9031	//
9032	// InstanceGroupId is a required field
9033	InstanceGroupId *string `type:"string" required:"true"`
9034}
9035
9036// String returns the string representation
9037func (s RemoveAutoScalingPolicyInput) String() string {
9038	return awsutil.Prettify(s)
9039}
9040
9041// GoString returns the string representation
9042func (s RemoveAutoScalingPolicyInput) GoString() string {
9043	return s.String()
9044}
9045
9046// Validate inspects the fields of the type to determine if they are valid.
9047func (s *RemoveAutoScalingPolicyInput) Validate() error {
9048	invalidParams := request.ErrInvalidParams{Context: "RemoveAutoScalingPolicyInput"}
9049	if s.ClusterId == nil {
9050		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9051	}
9052	if s.InstanceGroupId == nil {
9053		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
9054	}
9055
9056	if invalidParams.Len() > 0 {
9057		return invalidParams
9058	}
9059	return nil
9060}
9061
9062// SetClusterId sets the ClusterId field's value.
9063func (s *RemoveAutoScalingPolicyInput) SetClusterId(v string) *RemoveAutoScalingPolicyInput {
9064	s.ClusterId = &v
9065	return s
9066}
9067
9068// SetInstanceGroupId sets the InstanceGroupId field's value.
9069func (s *RemoveAutoScalingPolicyInput) SetInstanceGroupId(v string) *RemoveAutoScalingPolicyInput {
9070	s.InstanceGroupId = &v
9071	return s
9072}
9073
9074type RemoveAutoScalingPolicyOutput struct {
9075	_ struct{} `type:"structure"`
9076}
9077
9078// String returns the string representation
9079func (s RemoveAutoScalingPolicyOutput) String() string {
9080	return awsutil.Prettify(s)
9081}
9082
9083// GoString returns the string representation
9084func (s RemoveAutoScalingPolicyOutput) GoString() string {
9085	return s.String()
9086}
9087
9088// This input identifies a cluster and a list of tags to remove.
9089type RemoveTagsInput struct {
9090	_ struct{} `type:"structure"`
9091
9092	// The Amazon EMR resource identifier from which tags will be removed. This
9093	// value must be a cluster identifier.
9094	//
9095	// ResourceId is a required field
9096	ResourceId *string `type:"string" required:"true"`
9097
9098	// A list of tag keys to remove from a resource.
9099	//
9100	// TagKeys is a required field
9101	TagKeys []*string `type:"list" required:"true"`
9102}
9103
9104// String returns the string representation
9105func (s RemoveTagsInput) String() string {
9106	return awsutil.Prettify(s)
9107}
9108
9109// GoString returns the string representation
9110func (s RemoveTagsInput) GoString() string {
9111	return s.String()
9112}
9113
9114// Validate inspects the fields of the type to determine if they are valid.
9115func (s *RemoveTagsInput) Validate() error {
9116	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsInput"}
9117	if s.ResourceId == nil {
9118		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
9119	}
9120	if s.TagKeys == nil {
9121		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
9122	}
9123
9124	if invalidParams.Len() > 0 {
9125		return invalidParams
9126	}
9127	return nil
9128}
9129
9130// SetResourceId sets the ResourceId field's value.
9131func (s *RemoveTagsInput) SetResourceId(v string) *RemoveTagsInput {
9132	s.ResourceId = &v
9133	return s
9134}
9135
9136// SetTagKeys sets the TagKeys field's value.
9137func (s *RemoveTagsInput) SetTagKeys(v []*string) *RemoveTagsInput {
9138	s.TagKeys = v
9139	return s
9140}
9141
9142// This output indicates the result of removing tags from a resource.
9143type RemoveTagsOutput struct {
9144	_ struct{} `type:"structure"`
9145}
9146
9147// String returns the string representation
9148func (s RemoveTagsOutput) String() string {
9149	return awsutil.Prettify(s)
9150}
9151
9152// GoString returns the string representation
9153func (s RemoveTagsOutput) GoString() string {
9154	return s.String()
9155}
9156
9157// Input to the RunJobFlow operation.
9158type RunJobFlowInput struct {
9159	_ struct{} `type:"structure"`
9160
9161	// A JSON string for selecting additional features.
9162	AdditionalInfo *string `type:"string"`
9163
9164	// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
9165	// 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.
9166	AmiVersion *string `type:"string"`
9167
9168	// Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of
9169	// applications for Amazon EMR to install and configure when launching the cluster.
9170	// For a list of applications available for each Amazon EMR release version,
9171	// see the Amazon EMR Release Guide (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/).
9172	Applications []*Application `type:"list"`
9173
9174	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
9175	// The IAM role provides permissions that the automatic scaling feature requires
9176	// to launch and terminate EC2 instances in an instance group.
9177	AutoScalingRole *string `type:"string"`
9178
9179	// A list of bootstrap actions to run before Hadoop starts on the cluster nodes.
9180	BootstrapActions []*BootstrapActionConfig `type:"list"`
9181
9182	// For Amazon EMR releases 4.0 and later. The list of configurations supplied
9183	// for the EMR cluster you are creating.
9184	Configurations []*Configuration `type:"list"`
9185
9186	// Available only in Amazon EMR version 5.7.0 and later. The ID of a custom
9187	// Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when
9188	// it launches cluster EC2 instances. For more information about custom AMIs
9189	// in Amazon EMR, see Using a Custom AMI (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html)
9190	// in the Amazon EMR Management Guide. If omitted, the cluster uses the base
9191	// Linux AMI for the ReleaseLabel specified. For Amazon EMR versions 2.x and
9192	// 3.x, use AmiVersion instead.
9193	//
9194	// For information about creating a custom AMI, see Creating an Amazon EBS-Backed
9195	// Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)
9196	// in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For information
9197	// about finding an AMI ID, see Finding a Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html).
9198	CustomAmiId *string `type:"string"`
9199
9200	// The size, in GiB, of the EBS root device volume of the Linux AMI that is
9201	// used for each EC2 instance. Available in Amazon EMR version 4.x and later.
9202	EbsRootVolumeSize *int64 `type:"integer"`
9203
9204	// A specification of the number and type of Amazon EC2 instances.
9205	//
9206	// Instances is a required field
9207	Instances *JobFlowInstancesConfig `type:"structure" required:"true"`
9208
9209	// Also called instance profile and EC2 role. An IAM role for an EMR cluster.
9210	// The EC2 instances of the cluster assume this role. The default role is EMR_EC2_DefaultRole.
9211	// In order to use the default role, you must have already created it using
9212	// the CLI or console.
9213	JobFlowRole *string `type:"string"`
9214
9215	// Attributes for Kerberos configuration when Kerberos authentication is enabled
9216	// using a security configuration. For more information see Use Kerberos Authentication
9217	// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
9218	// in the EMR Management Guide.
9219	KerberosAttributes *KerberosAttributes `type:"structure"`
9220
9221	// The location in Amazon S3 to write the log files of the job flow. If a value
9222	// is not provided, logs are not created.
9223	LogUri *string `type:"string"`
9224
9225	// The name of the job flow.
9226	//
9227	// Name is a required field
9228	Name *string `type:"string" required:"true"`
9229
9230	//
9231	// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later,
9232	// use Applications.
9233	//
9234	// A list of strings that indicates third-party software to use with the job
9235	// flow that accepts a user argument list. EMR accepts and forwards the argument
9236	// list to the corresponding installation script as bootstrap action arguments.
9237	// For more information, see "Launch a Job Flow on the MapR Distribution for
9238	// Hadoop" in the Amazon EMR Developer Guide (https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf).
9239	// Supported values are:
9240	//
9241	//    * "mapr-m3" - launch the cluster using MapR M3 Edition.
9242	//
9243	//    * "mapr-m5" - launch the cluster using MapR M5 Edition.
9244	//
9245	//    * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5"
9246	//    - launch the job flow using MapR M3 or M5 Edition respectively.
9247	//
9248	//    * "mapr-m7" - launch the cluster using MapR M7 Edition.
9249	//
9250	//    * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform.
9251	//
9252	//    * "hue"- launch the cluster with Hue installed.
9253	//
9254	//    * "spark" - launch the cluster with Apache Spark installed.
9255	//
9256	//    * "ganglia" - launch the cluster with the Ganglia Monitoring System installed.
9257	NewSupportedProducts []*SupportedProductConfig `type:"list"`
9258
9259	// The Amazon EMR release label, which determines the version of open-source
9260	// application packages installed on the cluster. Release labels are in the
9261	// form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0.
9262	// For more information about Amazon EMR release versions and included application
9263	// versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/
9264	// (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label
9265	// applies only to Amazon EMR releases version 4.0 and later. Earlier versions
9266	// use AmiVersion.
9267	ReleaseLabel *string `type:"string"`
9268
9269	// Applies only when CustomAmiID is used. Specifies which updates from the Amazon
9270	// Linux AMI package repositories to apply automatically when the instance boots
9271	// using the AMI. If omitted, the default is SECURITY, which indicates that
9272	// only security updates are applied. If NONE is specified, no updates are applied,
9273	// and all updates must be applied manually.
9274	RepoUpgradeOnBoot *string `type:"string" enum:"RepoUpgradeOnBoot"`
9275
9276	// Specifies the way that individual Amazon EC2 instances terminate when an
9277	// automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
9278	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
9279	// regardless of when the request to terminate the instance was submitted. This
9280	// option is only available with Amazon EMR 5.1.0 and later and is the default
9281	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
9282	// that Amazon EMR blacklists and drains tasks from nodes before terminating
9283	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
9284	// either behavior, Amazon EMR removes the least active nodes first and blocks
9285	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
9286	// available only in Amazon EMR version 4.1.0 and later, and is the default
9287	// for versions of Amazon EMR earlier than 5.1.0.
9288	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
9289
9290	// The name of a security configuration to apply to the cluster.
9291	SecurityConfiguration *string `type:"string"`
9292
9293	// The IAM role that will be assumed by the Amazon EMR service to access AWS
9294	// resources on your behalf.
9295	ServiceRole *string `type:"string"`
9296
9297	// A list of steps to run.
9298	Steps []*StepConfig `type:"list"`
9299
9300	//
9301	// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later,
9302	// use Applications.
9303	//
9304	// A list of strings that indicates third-party software to use. For more information,
9305	// see the Amazon EMR Developer Guide (https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf).
9306	// Currently supported values are:
9307	//
9308	//    * "mapr-m3" - launch the job flow using MapR M3 Edition.
9309	//
9310	//    * "mapr-m5" - launch the job flow using MapR M5 Edition.
9311	SupportedProducts []*string `type:"list"`
9312
9313	// A list of tags to associate with a cluster and propagate to Amazon EC2 instances.
9314	Tags []*Tag `type:"list"`
9315
9316	// This member will be deprecated.
9317	//
9318	// Whether the cluster is visible to all IAM users of the AWS account associated
9319	// with the cluster. If this value is set to true, all IAM users of that AWS
9320	// account can view and (if they have the proper policy permissions set) manage
9321	// the cluster. If it is set to false, only the IAM user that created the cluster
9322	// can view and manage it.
9323	VisibleToAllUsers *bool `type:"boolean"`
9324}
9325
9326// String returns the string representation
9327func (s RunJobFlowInput) String() string {
9328	return awsutil.Prettify(s)
9329}
9330
9331// GoString returns the string representation
9332func (s RunJobFlowInput) GoString() string {
9333	return s.String()
9334}
9335
9336// Validate inspects the fields of the type to determine if they are valid.
9337func (s *RunJobFlowInput) Validate() error {
9338	invalidParams := request.ErrInvalidParams{Context: "RunJobFlowInput"}
9339	if s.Instances == nil {
9340		invalidParams.Add(request.NewErrParamRequired("Instances"))
9341	}
9342	if s.Name == nil {
9343		invalidParams.Add(request.NewErrParamRequired("Name"))
9344	}
9345	if s.BootstrapActions != nil {
9346		for i, v := range s.BootstrapActions {
9347			if v == nil {
9348				continue
9349			}
9350			if err := v.Validate(); err != nil {
9351				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "BootstrapActions", i), err.(request.ErrInvalidParams))
9352			}
9353		}
9354	}
9355	if s.Instances != nil {
9356		if err := s.Instances.Validate(); err != nil {
9357			invalidParams.AddNested("Instances", err.(request.ErrInvalidParams))
9358		}
9359	}
9360	if s.KerberosAttributes != nil {
9361		if err := s.KerberosAttributes.Validate(); err != nil {
9362			invalidParams.AddNested("KerberosAttributes", err.(request.ErrInvalidParams))
9363		}
9364	}
9365	if s.Steps != nil {
9366		for i, v := range s.Steps {
9367			if v == nil {
9368				continue
9369			}
9370			if err := v.Validate(); err != nil {
9371				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Steps", i), err.(request.ErrInvalidParams))
9372			}
9373		}
9374	}
9375
9376	if invalidParams.Len() > 0 {
9377		return invalidParams
9378	}
9379	return nil
9380}
9381
9382// SetAdditionalInfo sets the AdditionalInfo field's value.
9383func (s *RunJobFlowInput) SetAdditionalInfo(v string) *RunJobFlowInput {
9384	s.AdditionalInfo = &v
9385	return s
9386}
9387
9388// SetAmiVersion sets the AmiVersion field's value.
9389func (s *RunJobFlowInput) SetAmiVersion(v string) *RunJobFlowInput {
9390	s.AmiVersion = &v
9391	return s
9392}
9393
9394// SetApplications sets the Applications field's value.
9395func (s *RunJobFlowInput) SetApplications(v []*Application) *RunJobFlowInput {
9396	s.Applications = v
9397	return s
9398}
9399
9400// SetAutoScalingRole sets the AutoScalingRole field's value.
9401func (s *RunJobFlowInput) SetAutoScalingRole(v string) *RunJobFlowInput {
9402	s.AutoScalingRole = &v
9403	return s
9404}
9405
9406// SetBootstrapActions sets the BootstrapActions field's value.
9407func (s *RunJobFlowInput) SetBootstrapActions(v []*BootstrapActionConfig) *RunJobFlowInput {
9408	s.BootstrapActions = v
9409	return s
9410}
9411
9412// SetConfigurations sets the Configurations field's value.
9413func (s *RunJobFlowInput) SetConfigurations(v []*Configuration) *RunJobFlowInput {
9414	s.Configurations = v
9415	return s
9416}
9417
9418// SetCustomAmiId sets the CustomAmiId field's value.
9419func (s *RunJobFlowInput) SetCustomAmiId(v string) *RunJobFlowInput {
9420	s.CustomAmiId = &v
9421	return s
9422}
9423
9424// SetEbsRootVolumeSize sets the EbsRootVolumeSize field's value.
9425func (s *RunJobFlowInput) SetEbsRootVolumeSize(v int64) *RunJobFlowInput {
9426	s.EbsRootVolumeSize = &v
9427	return s
9428}
9429
9430// SetInstances sets the Instances field's value.
9431func (s *RunJobFlowInput) SetInstances(v *JobFlowInstancesConfig) *RunJobFlowInput {
9432	s.Instances = v
9433	return s
9434}
9435
9436// SetJobFlowRole sets the JobFlowRole field's value.
9437func (s *RunJobFlowInput) SetJobFlowRole(v string) *RunJobFlowInput {
9438	s.JobFlowRole = &v
9439	return s
9440}
9441
9442// SetKerberosAttributes sets the KerberosAttributes field's value.
9443func (s *RunJobFlowInput) SetKerberosAttributes(v *KerberosAttributes) *RunJobFlowInput {
9444	s.KerberosAttributes = v
9445	return s
9446}
9447
9448// SetLogUri sets the LogUri field's value.
9449func (s *RunJobFlowInput) SetLogUri(v string) *RunJobFlowInput {
9450	s.LogUri = &v
9451	return s
9452}
9453
9454// SetName sets the Name field's value.
9455func (s *RunJobFlowInput) SetName(v string) *RunJobFlowInput {
9456	s.Name = &v
9457	return s
9458}
9459
9460// SetNewSupportedProducts sets the NewSupportedProducts field's value.
9461func (s *RunJobFlowInput) SetNewSupportedProducts(v []*SupportedProductConfig) *RunJobFlowInput {
9462	s.NewSupportedProducts = v
9463	return s
9464}
9465
9466// SetReleaseLabel sets the ReleaseLabel field's value.
9467func (s *RunJobFlowInput) SetReleaseLabel(v string) *RunJobFlowInput {
9468	s.ReleaseLabel = &v
9469	return s
9470}
9471
9472// SetRepoUpgradeOnBoot sets the RepoUpgradeOnBoot field's value.
9473func (s *RunJobFlowInput) SetRepoUpgradeOnBoot(v string) *RunJobFlowInput {
9474	s.RepoUpgradeOnBoot = &v
9475	return s
9476}
9477
9478// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
9479func (s *RunJobFlowInput) SetScaleDownBehavior(v string) *RunJobFlowInput {
9480	s.ScaleDownBehavior = &v
9481	return s
9482}
9483
9484// SetSecurityConfiguration sets the SecurityConfiguration field's value.
9485func (s *RunJobFlowInput) SetSecurityConfiguration(v string) *RunJobFlowInput {
9486	s.SecurityConfiguration = &v
9487	return s
9488}
9489
9490// SetServiceRole sets the ServiceRole field's value.
9491func (s *RunJobFlowInput) SetServiceRole(v string) *RunJobFlowInput {
9492	s.ServiceRole = &v
9493	return s
9494}
9495
9496// SetSteps sets the Steps field's value.
9497func (s *RunJobFlowInput) SetSteps(v []*StepConfig) *RunJobFlowInput {
9498	s.Steps = v
9499	return s
9500}
9501
9502// SetSupportedProducts sets the SupportedProducts field's value.
9503func (s *RunJobFlowInput) SetSupportedProducts(v []*string) *RunJobFlowInput {
9504	s.SupportedProducts = v
9505	return s
9506}
9507
9508// SetTags sets the Tags field's value.
9509func (s *RunJobFlowInput) SetTags(v []*Tag) *RunJobFlowInput {
9510	s.Tags = v
9511	return s
9512}
9513
9514// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
9515func (s *RunJobFlowInput) SetVisibleToAllUsers(v bool) *RunJobFlowInput {
9516	s.VisibleToAllUsers = &v
9517	return s
9518}
9519
9520// The result of the RunJobFlow operation.
9521type RunJobFlowOutput struct {
9522	_ struct{} `type:"structure"`
9523
9524	// An unique identifier for the job flow.
9525	JobFlowId *string `type:"string"`
9526}
9527
9528// String returns the string representation
9529func (s RunJobFlowOutput) String() string {
9530	return awsutil.Prettify(s)
9531}
9532
9533// GoString returns the string representation
9534func (s RunJobFlowOutput) GoString() string {
9535	return s.String()
9536}
9537
9538// SetJobFlowId sets the JobFlowId field's value.
9539func (s *RunJobFlowOutput) SetJobFlowId(v string) *RunJobFlowOutput {
9540	s.JobFlowId = &v
9541	return s
9542}
9543
9544// The type of adjustment the automatic scaling activity makes when triggered,
9545// and the periodicity of the adjustment.
9546type ScalingAction struct {
9547	_ struct{} `type:"structure"`
9548
9549	// Not available for instance groups. Instance groups use the market type specified
9550	// for the group.
9551	Market *string `type:"string" enum:"MarketType"`
9552
9553	// The type of adjustment the automatic scaling activity makes when triggered,
9554	// and the periodicity of the adjustment.
9555	//
9556	// SimpleScalingPolicyConfiguration is a required field
9557	SimpleScalingPolicyConfiguration *SimpleScalingPolicyConfiguration `type:"structure" required:"true"`
9558}
9559
9560// String returns the string representation
9561func (s ScalingAction) String() string {
9562	return awsutil.Prettify(s)
9563}
9564
9565// GoString returns the string representation
9566func (s ScalingAction) GoString() string {
9567	return s.String()
9568}
9569
9570// Validate inspects the fields of the type to determine if they are valid.
9571func (s *ScalingAction) Validate() error {
9572	invalidParams := request.ErrInvalidParams{Context: "ScalingAction"}
9573	if s.SimpleScalingPolicyConfiguration == nil {
9574		invalidParams.Add(request.NewErrParamRequired("SimpleScalingPolicyConfiguration"))
9575	}
9576	if s.SimpleScalingPolicyConfiguration != nil {
9577		if err := s.SimpleScalingPolicyConfiguration.Validate(); err != nil {
9578			invalidParams.AddNested("SimpleScalingPolicyConfiguration", err.(request.ErrInvalidParams))
9579		}
9580	}
9581
9582	if invalidParams.Len() > 0 {
9583		return invalidParams
9584	}
9585	return nil
9586}
9587
9588// SetMarket sets the Market field's value.
9589func (s *ScalingAction) SetMarket(v string) *ScalingAction {
9590	s.Market = &v
9591	return s
9592}
9593
9594// SetSimpleScalingPolicyConfiguration sets the SimpleScalingPolicyConfiguration field's value.
9595func (s *ScalingAction) SetSimpleScalingPolicyConfiguration(v *SimpleScalingPolicyConfiguration) *ScalingAction {
9596	s.SimpleScalingPolicyConfiguration = v
9597	return s
9598}
9599
9600// The upper and lower EC2 instance limits for an automatic scaling policy.
9601// Automatic scaling activities triggered by automatic scaling rules will not
9602// cause an instance group to grow above or below these limits.
9603type ScalingConstraints struct {
9604	_ struct{} `type:"structure"`
9605
9606	// The upper boundary of EC2 instances in an instance group beyond which scaling
9607	// activities are not allowed to grow. Scale-out activities will not add instances
9608	// beyond this boundary.
9609	//
9610	// MaxCapacity is a required field
9611	MaxCapacity *int64 `type:"integer" required:"true"`
9612
9613	// The lower boundary of EC2 instances in an instance group below which scaling
9614	// activities are not allowed to shrink. Scale-in activities will not terminate
9615	// instances below this boundary.
9616	//
9617	// MinCapacity is a required field
9618	MinCapacity *int64 `type:"integer" required:"true"`
9619}
9620
9621// String returns the string representation
9622func (s ScalingConstraints) String() string {
9623	return awsutil.Prettify(s)
9624}
9625
9626// GoString returns the string representation
9627func (s ScalingConstraints) GoString() string {
9628	return s.String()
9629}
9630
9631// Validate inspects the fields of the type to determine if they are valid.
9632func (s *ScalingConstraints) Validate() error {
9633	invalidParams := request.ErrInvalidParams{Context: "ScalingConstraints"}
9634	if s.MaxCapacity == nil {
9635		invalidParams.Add(request.NewErrParamRequired("MaxCapacity"))
9636	}
9637	if s.MinCapacity == nil {
9638		invalidParams.Add(request.NewErrParamRequired("MinCapacity"))
9639	}
9640
9641	if invalidParams.Len() > 0 {
9642		return invalidParams
9643	}
9644	return nil
9645}
9646
9647// SetMaxCapacity sets the MaxCapacity field's value.
9648func (s *ScalingConstraints) SetMaxCapacity(v int64) *ScalingConstraints {
9649	s.MaxCapacity = &v
9650	return s
9651}
9652
9653// SetMinCapacity sets the MinCapacity field's value.
9654func (s *ScalingConstraints) SetMinCapacity(v int64) *ScalingConstraints {
9655	s.MinCapacity = &v
9656	return s
9657}
9658
9659// A scale-in or scale-out rule that defines scaling activity, including the
9660// CloudWatch metric alarm that triggers activity, how EC2 instances are added
9661// or removed, and the periodicity of adjustments. The automatic scaling policy
9662// for an instance group can comprise one or more automatic scaling rules.
9663type ScalingRule struct {
9664	_ struct{} `type:"structure"`
9665
9666	// The conditions that trigger an automatic scaling activity.
9667	//
9668	// Action is a required field
9669	Action *ScalingAction `type:"structure" required:"true"`
9670
9671	// A friendly, more verbose description of the automatic scaling rule.
9672	Description *string `type:"string"`
9673
9674	// The name used to identify an automatic scaling rule. Rule names must be unique
9675	// within a scaling policy.
9676	//
9677	// Name is a required field
9678	Name *string `type:"string" required:"true"`
9679
9680	// The CloudWatch alarm definition that determines when automatic scaling activity
9681	// is triggered.
9682	//
9683	// Trigger is a required field
9684	Trigger *ScalingTrigger `type:"structure" required:"true"`
9685}
9686
9687// String returns the string representation
9688func (s ScalingRule) String() string {
9689	return awsutil.Prettify(s)
9690}
9691
9692// GoString returns the string representation
9693func (s ScalingRule) GoString() string {
9694	return s.String()
9695}
9696
9697// Validate inspects the fields of the type to determine if they are valid.
9698func (s *ScalingRule) Validate() error {
9699	invalidParams := request.ErrInvalidParams{Context: "ScalingRule"}
9700	if s.Action == nil {
9701		invalidParams.Add(request.NewErrParamRequired("Action"))
9702	}
9703	if s.Name == nil {
9704		invalidParams.Add(request.NewErrParamRequired("Name"))
9705	}
9706	if s.Trigger == nil {
9707		invalidParams.Add(request.NewErrParamRequired("Trigger"))
9708	}
9709	if s.Action != nil {
9710		if err := s.Action.Validate(); err != nil {
9711			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
9712		}
9713	}
9714	if s.Trigger != nil {
9715		if err := s.Trigger.Validate(); err != nil {
9716			invalidParams.AddNested("Trigger", err.(request.ErrInvalidParams))
9717		}
9718	}
9719
9720	if invalidParams.Len() > 0 {
9721		return invalidParams
9722	}
9723	return nil
9724}
9725
9726// SetAction sets the Action field's value.
9727func (s *ScalingRule) SetAction(v *ScalingAction) *ScalingRule {
9728	s.Action = v
9729	return s
9730}
9731
9732// SetDescription sets the Description field's value.
9733func (s *ScalingRule) SetDescription(v string) *ScalingRule {
9734	s.Description = &v
9735	return s
9736}
9737
9738// SetName sets the Name field's value.
9739func (s *ScalingRule) SetName(v string) *ScalingRule {
9740	s.Name = &v
9741	return s
9742}
9743
9744// SetTrigger sets the Trigger field's value.
9745func (s *ScalingRule) SetTrigger(v *ScalingTrigger) *ScalingRule {
9746	s.Trigger = v
9747	return s
9748}
9749
9750// The conditions that trigger an automatic scaling activity.
9751type ScalingTrigger struct {
9752	_ struct{} `type:"structure"`
9753
9754	// The definition of a CloudWatch metric alarm. When the defined alarm conditions
9755	// are met along with other trigger parameters, scaling activity begins.
9756	//
9757	// CloudWatchAlarmDefinition is a required field
9758	CloudWatchAlarmDefinition *CloudWatchAlarmDefinition `type:"structure" required:"true"`
9759}
9760
9761// String returns the string representation
9762func (s ScalingTrigger) String() string {
9763	return awsutil.Prettify(s)
9764}
9765
9766// GoString returns the string representation
9767func (s ScalingTrigger) GoString() string {
9768	return s.String()
9769}
9770
9771// Validate inspects the fields of the type to determine if they are valid.
9772func (s *ScalingTrigger) Validate() error {
9773	invalidParams := request.ErrInvalidParams{Context: "ScalingTrigger"}
9774	if s.CloudWatchAlarmDefinition == nil {
9775		invalidParams.Add(request.NewErrParamRequired("CloudWatchAlarmDefinition"))
9776	}
9777	if s.CloudWatchAlarmDefinition != nil {
9778		if err := s.CloudWatchAlarmDefinition.Validate(); err != nil {
9779			invalidParams.AddNested("CloudWatchAlarmDefinition", err.(request.ErrInvalidParams))
9780		}
9781	}
9782
9783	if invalidParams.Len() > 0 {
9784		return invalidParams
9785	}
9786	return nil
9787}
9788
9789// SetCloudWatchAlarmDefinition sets the CloudWatchAlarmDefinition field's value.
9790func (s *ScalingTrigger) SetCloudWatchAlarmDefinition(v *CloudWatchAlarmDefinition) *ScalingTrigger {
9791	s.CloudWatchAlarmDefinition = v
9792	return s
9793}
9794
9795// Configuration of the script to run during a bootstrap action.
9796type ScriptBootstrapActionConfig struct {
9797	_ struct{} `type:"structure"`
9798
9799	// A list of command line arguments to pass to the bootstrap action script.
9800	Args []*string `type:"list"`
9801
9802	// Location of the script to run during a bootstrap action. Can be either a
9803	// location in Amazon S3 or on a local file system.
9804	//
9805	// Path is a required field
9806	Path *string `type:"string" required:"true"`
9807}
9808
9809// String returns the string representation
9810func (s ScriptBootstrapActionConfig) String() string {
9811	return awsutil.Prettify(s)
9812}
9813
9814// GoString returns the string representation
9815func (s ScriptBootstrapActionConfig) GoString() string {
9816	return s.String()
9817}
9818
9819// Validate inspects the fields of the type to determine if they are valid.
9820func (s *ScriptBootstrapActionConfig) Validate() error {
9821	invalidParams := request.ErrInvalidParams{Context: "ScriptBootstrapActionConfig"}
9822	if s.Path == nil {
9823		invalidParams.Add(request.NewErrParamRequired("Path"))
9824	}
9825
9826	if invalidParams.Len() > 0 {
9827		return invalidParams
9828	}
9829	return nil
9830}
9831
9832// SetArgs sets the Args field's value.
9833func (s *ScriptBootstrapActionConfig) SetArgs(v []*string) *ScriptBootstrapActionConfig {
9834	s.Args = v
9835	return s
9836}
9837
9838// SetPath sets the Path field's value.
9839func (s *ScriptBootstrapActionConfig) SetPath(v string) *ScriptBootstrapActionConfig {
9840	s.Path = &v
9841	return s
9842}
9843
9844// The creation date and time, and name, of a security configuration.
9845type SecurityConfigurationSummary struct {
9846	_ struct{} `type:"structure"`
9847
9848	// The date and time the security configuration was created.
9849	CreationDateTime *time.Time `type:"timestamp"`
9850
9851	// The name of the security configuration.
9852	Name *string `type:"string"`
9853}
9854
9855// String returns the string representation
9856func (s SecurityConfigurationSummary) String() string {
9857	return awsutil.Prettify(s)
9858}
9859
9860// GoString returns the string representation
9861func (s SecurityConfigurationSummary) GoString() string {
9862	return s.String()
9863}
9864
9865// SetCreationDateTime sets the CreationDateTime field's value.
9866func (s *SecurityConfigurationSummary) SetCreationDateTime(v time.Time) *SecurityConfigurationSummary {
9867	s.CreationDateTime = &v
9868	return s
9869}
9870
9871// SetName sets the Name field's value.
9872func (s *SecurityConfigurationSummary) SetName(v string) *SecurityConfigurationSummary {
9873	s.Name = &v
9874	return s
9875}
9876
9877// The input argument to the TerminationProtection operation.
9878type SetTerminationProtectionInput struct {
9879	_ struct{} `type:"structure"`
9880
9881	// A list of strings that uniquely identify the clusters to protect. This identifier
9882	// is returned by RunJobFlow and can also be obtained from DescribeJobFlows .
9883	//
9884	// JobFlowIds is a required field
9885	JobFlowIds []*string `type:"list" required:"true"`
9886
9887	// A Boolean that indicates whether to protect the cluster and prevent the Amazon
9888	// EC2 instances in the cluster from shutting down due to API calls, user intervention,
9889	// or job-flow error.
9890	//
9891	// TerminationProtected is a required field
9892	TerminationProtected *bool `type:"boolean" required:"true"`
9893}
9894
9895// String returns the string representation
9896func (s SetTerminationProtectionInput) String() string {
9897	return awsutil.Prettify(s)
9898}
9899
9900// GoString returns the string representation
9901func (s SetTerminationProtectionInput) GoString() string {
9902	return s.String()
9903}
9904
9905// Validate inspects the fields of the type to determine if they are valid.
9906func (s *SetTerminationProtectionInput) Validate() error {
9907	invalidParams := request.ErrInvalidParams{Context: "SetTerminationProtectionInput"}
9908	if s.JobFlowIds == nil {
9909		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
9910	}
9911	if s.TerminationProtected == nil {
9912		invalidParams.Add(request.NewErrParamRequired("TerminationProtected"))
9913	}
9914
9915	if invalidParams.Len() > 0 {
9916		return invalidParams
9917	}
9918	return nil
9919}
9920
9921// SetJobFlowIds sets the JobFlowIds field's value.
9922func (s *SetTerminationProtectionInput) SetJobFlowIds(v []*string) *SetTerminationProtectionInput {
9923	s.JobFlowIds = v
9924	return s
9925}
9926
9927// SetTerminationProtected sets the TerminationProtected field's value.
9928func (s *SetTerminationProtectionInput) SetTerminationProtected(v bool) *SetTerminationProtectionInput {
9929	s.TerminationProtected = &v
9930	return s
9931}
9932
9933type SetTerminationProtectionOutput struct {
9934	_ struct{} `type:"structure"`
9935}
9936
9937// String returns the string representation
9938func (s SetTerminationProtectionOutput) String() string {
9939	return awsutil.Prettify(s)
9940}
9941
9942// GoString returns the string representation
9943func (s SetTerminationProtectionOutput) GoString() string {
9944	return s.String()
9945}
9946
9947// This member will be deprecated.
9948//
9949// The input to the SetVisibleToAllUsers action.
9950type SetVisibleToAllUsersInput struct {
9951	_ struct{} `type:"structure"`
9952
9953	// Identifiers of the job flows to receive the new visibility setting.
9954	//
9955	// JobFlowIds is a required field
9956	JobFlowIds []*string `type:"list" required:"true"`
9957
9958	// This member will be deprecated.
9959	//
9960	// Whether the specified clusters are visible to all IAM users of the AWS account
9961	// associated with the cluster. If this value is set to True, all IAM users
9962	// of that AWS account can view and, if they have the proper IAM policy permissions
9963	// set, manage the clusters. If it is set to False, only the IAM user that created
9964	// a cluster can view and manage it.
9965	//
9966	// VisibleToAllUsers is a required field
9967	VisibleToAllUsers *bool `type:"boolean" required:"true"`
9968}
9969
9970// String returns the string representation
9971func (s SetVisibleToAllUsersInput) String() string {
9972	return awsutil.Prettify(s)
9973}
9974
9975// GoString returns the string representation
9976func (s SetVisibleToAllUsersInput) GoString() string {
9977	return s.String()
9978}
9979
9980// Validate inspects the fields of the type to determine if they are valid.
9981func (s *SetVisibleToAllUsersInput) Validate() error {
9982	invalidParams := request.ErrInvalidParams{Context: "SetVisibleToAllUsersInput"}
9983	if s.JobFlowIds == nil {
9984		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
9985	}
9986	if s.VisibleToAllUsers == nil {
9987		invalidParams.Add(request.NewErrParamRequired("VisibleToAllUsers"))
9988	}
9989
9990	if invalidParams.Len() > 0 {
9991		return invalidParams
9992	}
9993	return nil
9994}
9995
9996// SetJobFlowIds sets the JobFlowIds field's value.
9997func (s *SetVisibleToAllUsersInput) SetJobFlowIds(v []*string) *SetVisibleToAllUsersInput {
9998	s.JobFlowIds = v
9999	return s
10000}
10001
10002// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
10003func (s *SetVisibleToAllUsersInput) SetVisibleToAllUsers(v bool) *SetVisibleToAllUsersInput {
10004	s.VisibleToAllUsers = &v
10005	return s
10006}
10007
10008type SetVisibleToAllUsersOutput struct {
10009	_ struct{} `type:"structure"`
10010}
10011
10012// String returns the string representation
10013func (s SetVisibleToAllUsersOutput) String() string {
10014	return awsutil.Prettify(s)
10015}
10016
10017// GoString returns the string representation
10018func (s SetVisibleToAllUsersOutput) GoString() string {
10019	return s.String()
10020}
10021
10022// Policy for customizing shrink operations. Allows configuration of decommissioning
10023// timeout and targeted instance shrinking.
10024type ShrinkPolicy struct {
10025	_ struct{} `type:"structure"`
10026
10027	// The desired timeout for decommissioning an instance. Overrides the default
10028	// YARN decommissioning timeout.
10029	DecommissionTimeout *int64 `type:"integer"`
10030
10031	// Custom policy for requesting termination protection or termination of specific
10032	// instances when shrinking an instance group.
10033	InstanceResizePolicy *InstanceResizePolicy `type:"structure"`
10034}
10035
10036// String returns the string representation
10037func (s ShrinkPolicy) String() string {
10038	return awsutil.Prettify(s)
10039}
10040
10041// GoString returns the string representation
10042func (s ShrinkPolicy) GoString() string {
10043	return s.String()
10044}
10045
10046// SetDecommissionTimeout sets the DecommissionTimeout field's value.
10047func (s *ShrinkPolicy) SetDecommissionTimeout(v int64) *ShrinkPolicy {
10048	s.DecommissionTimeout = &v
10049	return s
10050}
10051
10052// SetInstanceResizePolicy sets the InstanceResizePolicy field's value.
10053func (s *ShrinkPolicy) SetInstanceResizePolicy(v *InstanceResizePolicy) *ShrinkPolicy {
10054	s.InstanceResizePolicy = v
10055	return s
10056}
10057
10058// An automatic scaling configuration, which describes how the policy adds or
10059// removes instances, the cooldown period, and the number of EC2 instances that
10060// will be added each time the CloudWatch metric alarm condition is satisfied.
10061type SimpleScalingPolicyConfiguration struct {
10062	_ struct{} `type:"structure"`
10063
10064	// The way in which EC2 instances are added (if ScalingAdjustment is a positive
10065	// number) or terminated (if ScalingAdjustment is a negative number) each time
10066	// the scaling activity is triggered. CHANGE_IN_CAPACITY is the default. CHANGE_IN_CAPACITY
10067	// indicates that the EC2 instance count increments or decrements by ScalingAdjustment,
10068	// which should be expressed as an integer. PERCENT_CHANGE_IN_CAPACITY indicates
10069	// the instance count increments or decrements by the percentage specified by
10070	// ScalingAdjustment, which should be expressed as an integer. For example,
10071	// 20 indicates an increase in 20% increments of cluster capacity. EXACT_CAPACITY
10072	// indicates the scaling activity results in an instance group with the number
10073	// of EC2 instances specified by ScalingAdjustment, which should be expressed
10074	// as a positive integer.
10075	AdjustmentType *string `type:"string" enum:"AdjustmentType"`
10076
10077	// The amount of time, in seconds, after a scaling activity completes before
10078	// any further trigger-related scaling activities can start. The default value
10079	// is 0.
10080	CoolDown *int64 `type:"integer"`
10081
10082	// The amount by which to scale in or scale out, based on the specified AdjustmentType.
10083	// A positive value adds to the instance group's EC2 instance count while a
10084	// negative number removes instances. If AdjustmentType is set to EXACT_CAPACITY,
10085	// the number should only be a positive integer. If AdjustmentType is set to
10086	// PERCENT_CHANGE_IN_CAPACITY, the value should express the percentage as an
10087	// integer. For example, -20 indicates a decrease in 20% increments of cluster
10088	// capacity.
10089	//
10090	// ScalingAdjustment is a required field
10091	ScalingAdjustment *int64 `type:"integer" required:"true"`
10092}
10093
10094// String returns the string representation
10095func (s SimpleScalingPolicyConfiguration) String() string {
10096	return awsutil.Prettify(s)
10097}
10098
10099// GoString returns the string representation
10100func (s SimpleScalingPolicyConfiguration) GoString() string {
10101	return s.String()
10102}
10103
10104// Validate inspects the fields of the type to determine if they are valid.
10105func (s *SimpleScalingPolicyConfiguration) Validate() error {
10106	invalidParams := request.ErrInvalidParams{Context: "SimpleScalingPolicyConfiguration"}
10107	if s.ScalingAdjustment == nil {
10108		invalidParams.Add(request.NewErrParamRequired("ScalingAdjustment"))
10109	}
10110
10111	if invalidParams.Len() > 0 {
10112		return invalidParams
10113	}
10114	return nil
10115}
10116
10117// SetAdjustmentType sets the AdjustmentType field's value.
10118func (s *SimpleScalingPolicyConfiguration) SetAdjustmentType(v string) *SimpleScalingPolicyConfiguration {
10119	s.AdjustmentType = &v
10120	return s
10121}
10122
10123// SetCoolDown sets the CoolDown field's value.
10124func (s *SimpleScalingPolicyConfiguration) SetCoolDown(v int64) *SimpleScalingPolicyConfiguration {
10125	s.CoolDown = &v
10126	return s
10127}
10128
10129// SetScalingAdjustment sets the ScalingAdjustment field's value.
10130func (s *SimpleScalingPolicyConfiguration) SetScalingAdjustment(v int64) *SimpleScalingPolicyConfiguration {
10131	s.ScalingAdjustment = &v
10132	return s
10133}
10134
10135// The launch specification for Spot instances in the instance fleet, which
10136// determines the defined duration and provisioning timeout behavior.
10137//
10138// The instance fleet configuration is available only in Amazon EMR versions
10139// 4.8.0 and later, excluding 5.0.x versions.
10140type SpotProvisioningSpecification struct {
10141	_ struct{} `type:"structure"`
10142
10143	// The defined duration for Spot instances (also known as Spot blocks) in minutes.
10144	// When specified, the Spot instance does not terminate before the defined duration
10145	// expires, and defined duration pricing for Spot instances applies. Valid values
10146	// are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as
10147	// a Spot instance receives its instance ID. At the end of the duration, Amazon
10148	// EC2 marks the Spot instance for termination and provides a Spot instance
10149	// termination notice, which gives the instance a two-minute warning before
10150	// it terminates.
10151	BlockDurationMinutes *int64 `type:"integer"`
10152
10153	// The action to take when TargetSpotCapacity has not been fulfilled when the
10154	// TimeoutDurationMinutes has expired; that is, when all Spot instances could
10155	// not be provisioned within the Spot provisioning timeout. Valid values are
10156	// TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies
10157	// that if no Spot instances are available, On-Demand Instances should be provisioned
10158	// to fulfill any remaining Spot capacity.
10159	//
10160	// TimeoutAction is a required field
10161	TimeoutAction *string `type:"string" required:"true" enum:"SpotProvisioningTimeoutAction"`
10162
10163	// The spot provisioning timeout period in minutes. If Spot instances are not
10164	// provisioned within this time period, the TimeOutAction is taken. Minimum
10165	// value is 5 and maximum value is 1440. The timeout applies only during initial
10166	// provisioning, when the cluster is first created.
10167	//
10168	// TimeoutDurationMinutes is a required field
10169	TimeoutDurationMinutes *int64 `type:"integer" required:"true"`
10170}
10171
10172// String returns the string representation
10173func (s SpotProvisioningSpecification) String() string {
10174	return awsutil.Prettify(s)
10175}
10176
10177// GoString returns the string representation
10178func (s SpotProvisioningSpecification) GoString() string {
10179	return s.String()
10180}
10181
10182// Validate inspects the fields of the type to determine if they are valid.
10183func (s *SpotProvisioningSpecification) Validate() error {
10184	invalidParams := request.ErrInvalidParams{Context: "SpotProvisioningSpecification"}
10185	if s.TimeoutAction == nil {
10186		invalidParams.Add(request.NewErrParamRequired("TimeoutAction"))
10187	}
10188	if s.TimeoutDurationMinutes == nil {
10189		invalidParams.Add(request.NewErrParamRequired("TimeoutDurationMinutes"))
10190	}
10191
10192	if invalidParams.Len() > 0 {
10193		return invalidParams
10194	}
10195	return nil
10196}
10197
10198// SetBlockDurationMinutes sets the BlockDurationMinutes field's value.
10199func (s *SpotProvisioningSpecification) SetBlockDurationMinutes(v int64) *SpotProvisioningSpecification {
10200	s.BlockDurationMinutes = &v
10201	return s
10202}
10203
10204// SetTimeoutAction sets the TimeoutAction field's value.
10205func (s *SpotProvisioningSpecification) SetTimeoutAction(v string) *SpotProvisioningSpecification {
10206	s.TimeoutAction = &v
10207	return s
10208}
10209
10210// SetTimeoutDurationMinutes sets the TimeoutDurationMinutes field's value.
10211func (s *SpotProvisioningSpecification) SetTimeoutDurationMinutes(v int64) *SpotProvisioningSpecification {
10212	s.TimeoutDurationMinutes = &v
10213	return s
10214}
10215
10216// This represents a step in a cluster.
10217type Step struct {
10218	_ struct{} `type:"structure"`
10219
10220	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
10221	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward
10222	// compatibility. We recommend using TERMINATE_CLUSTER instead.
10223	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
10224
10225	// The Hadoop job configuration of the cluster step.
10226	Config *HadoopStepConfig `type:"structure"`
10227
10228	// The identifier of the cluster step.
10229	Id *string `type:"string"`
10230
10231	// The name of the cluster step.
10232	Name *string `type:"string"`
10233
10234	// The current execution status details of the cluster step.
10235	Status *StepStatus `type:"structure"`
10236}
10237
10238// String returns the string representation
10239func (s Step) String() string {
10240	return awsutil.Prettify(s)
10241}
10242
10243// GoString returns the string representation
10244func (s Step) GoString() string {
10245	return s.String()
10246}
10247
10248// SetActionOnFailure sets the ActionOnFailure field's value.
10249func (s *Step) SetActionOnFailure(v string) *Step {
10250	s.ActionOnFailure = &v
10251	return s
10252}
10253
10254// SetConfig sets the Config field's value.
10255func (s *Step) SetConfig(v *HadoopStepConfig) *Step {
10256	s.Config = v
10257	return s
10258}
10259
10260// SetId sets the Id field's value.
10261func (s *Step) SetId(v string) *Step {
10262	s.Id = &v
10263	return s
10264}
10265
10266// SetName sets the Name field's value.
10267func (s *Step) SetName(v string) *Step {
10268	s.Name = &v
10269	return s
10270}
10271
10272// SetStatus sets the Status field's value.
10273func (s *Step) SetStatus(v *StepStatus) *Step {
10274	s.Status = v
10275	return s
10276}
10277
10278// Specification of a cluster (job flow) step.
10279type StepConfig struct {
10280	_ struct{} `type:"structure"`
10281
10282	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
10283	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward
10284	// compatibility. We recommend using TERMINATE_CLUSTER instead.
10285	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
10286
10287	// The JAR file used for the step.
10288	//
10289	// HadoopJarStep is a required field
10290	HadoopJarStep *HadoopJarStepConfig `type:"structure" required:"true"`
10291
10292	// The name of the step.
10293	//
10294	// Name is a required field
10295	Name *string `type:"string" required:"true"`
10296}
10297
10298// String returns the string representation
10299func (s StepConfig) String() string {
10300	return awsutil.Prettify(s)
10301}
10302
10303// GoString returns the string representation
10304func (s StepConfig) GoString() string {
10305	return s.String()
10306}
10307
10308// Validate inspects the fields of the type to determine if they are valid.
10309func (s *StepConfig) Validate() error {
10310	invalidParams := request.ErrInvalidParams{Context: "StepConfig"}
10311	if s.HadoopJarStep == nil {
10312		invalidParams.Add(request.NewErrParamRequired("HadoopJarStep"))
10313	}
10314	if s.Name == nil {
10315		invalidParams.Add(request.NewErrParamRequired("Name"))
10316	}
10317	if s.HadoopJarStep != nil {
10318		if err := s.HadoopJarStep.Validate(); err != nil {
10319			invalidParams.AddNested("HadoopJarStep", err.(request.ErrInvalidParams))
10320		}
10321	}
10322
10323	if invalidParams.Len() > 0 {
10324		return invalidParams
10325	}
10326	return nil
10327}
10328
10329// SetActionOnFailure sets the ActionOnFailure field's value.
10330func (s *StepConfig) SetActionOnFailure(v string) *StepConfig {
10331	s.ActionOnFailure = &v
10332	return s
10333}
10334
10335// SetHadoopJarStep sets the HadoopJarStep field's value.
10336func (s *StepConfig) SetHadoopJarStep(v *HadoopJarStepConfig) *StepConfig {
10337	s.HadoopJarStep = v
10338	return s
10339}
10340
10341// SetName sets the Name field's value.
10342func (s *StepConfig) SetName(v string) *StepConfig {
10343	s.Name = &v
10344	return s
10345}
10346
10347// Combines the execution state and configuration of a step.
10348type StepDetail struct {
10349	_ struct{} `type:"structure"`
10350
10351	// The description of the step status.
10352	//
10353	// ExecutionStatusDetail is a required field
10354	ExecutionStatusDetail *StepExecutionStatusDetail `type:"structure" required:"true"`
10355
10356	// The step configuration.
10357	//
10358	// StepConfig is a required field
10359	StepConfig *StepConfig `type:"structure" required:"true"`
10360}
10361
10362// String returns the string representation
10363func (s StepDetail) String() string {
10364	return awsutil.Prettify(s)
10365}
10366
10367// GoString returns the string representation
10368func (s StepDetail) GoString() string {
10369	return s.String()
10370}
10371
10372// SetExecutionStatusDetail sets the ExecutionStatusDetail field's value.
10373func (s *StepDetail) SetExecutionStatusDetail(v *StepExecutionStatusDetail) *StepDetail {
10374	s.ExecutionStatusDetail = v
10375	return s
10376}
10377
10378// SetStepConfig sets the StepConfig field's value.
10379func (s *StepDetail) SetStepConfig(v *StepConfig) *StepDetail {
10380	s.StepConfig = v
10381	return s
10382}
10383
10384// The execution state of a step.
10385type StepExecutionStatusDetail struct {
10386	_ struct{} `type:"structure"`
10387
10388	// The creation date and time of the step.
10389	//
10390	// CreationDateTime is a required field
10391	CreationDateTime *time.Time `type:"timestamp" required:"true"`
10392
10393	// The completion date and time of the step.
10394	EndDateTime *time.Time `type:"timestamp"`
10395
10396	// A description of the step's current state.
10397	LastStateChangeReason *string `type:"string"`
10398
10399	// The start date and time of the step.
10400	StartDateTime *time.Time `type:"timestamp"`
10401
10402	// The state of the step.
10403	//
10404	// State is a required field
10405	State *string `type:"string" required:"true" enum:"StepExecutionState"`
10406}
10407
10408// String returns the string representation
10409func (s StepExecutionStatusDetail) String() string {
10410	return awsutil.Prettify(s)
10411}
10412
10413// GoString returns the string representation
10414func (s StepExecutionStatusDetail) GoString() string {
10415	return s.String()
10416}
10417
10418// SetCreationDateTime sets the CreationDateTime field's value.
10419func (s *StepExecutionStatusDetail) SetCreationDateTime(v time.Time) *StepExecutionStatusDetail {
10420	s.CreationDateTime = &v
10421	return s
10422}
10423
10424// SetEndDateTime sets the EndDateTime field's value.
10425func (s *StepExecutionStatusDetail) SetEndDateTime(v time.Time) *StepExecutionStatusDetail {
10426	s.EndDateTime = &v
10427	return s
10428}
10429
10430// SetLastStateChangeReason sets the LastStateChangeReason field's value.
10431func (s *StepExecutionStatusDetail) SetLastStateChangeReason(v string) *StepExecutionStatusDetail {
10432	s.LastStateChangeReason = &v
10433	return s
10434}
10435
10436// SetStartDateTime sets the StartDateTime field's value.
10437func (s *StepExecutionStatusDetail) SetStartDateTime(v time.Time) *StepExecutionStatusDetail {
10438	s.StartDateTime = &v
10439	return s
10440}
10441
10442// SetState sets the State field's value.
10443func (s *StepExecutionStatusDetail) SetState(v string) *StepExecutionStatusDetail {
10444	s.State = &v
10445	return s
10446}
10447
10448// The details of the step state change reason.
10449type StepStateChangeReason struct {
10450	_ struct{} `type:"structure"`
10451
10452	// The programmable code for the state change reason. Note: Currently, the service
10453	// provides no code for the state change.
10454	Code *string `type:"string" enum:"StepStateChangeReasonCode"`
10455
10456	// The descriptive message for the state change reason.
10457	Message *string `type:"string"`
10458}
10459
10460// String returns the string representation
10461func (s StepStateChangeReason) String() string {
10462	return awsutil.Prettify(s)
10463}
10464
10465// GoString returns the string representation
10466func (s StepStateChangeReason) GoString() string {
10467	return s.String()
10468}
10469
10470// SetCode sets the Code field's value.
10471func (s *StepStateChangeReason) SetCode(v string) *StepStateChangeReason {
10472	s.Code = &v
10473	return s
10474}
10475
10476// SetMessage sets the Message field's value.
10477func (s *StepStateChangeReason) SetMessage(v string) *StepStateChangeReason {
10478	s.Message = &v
10479	return s
10480}
10481
10482// The execution status details of the cluster step.
10483type StepStatus struct {
10484	_ struct{} `type:"structure"`
10485
10486	// The details for the step failure including reason, message, and log file
10487	// path where the root cause was identified.
10488	FailureDetails *FailureDetails `type:"structure"`
10489
10490	// The execution state of the cluster step.
10491	State *string `type:"string" enum:"StepState"`
10492
10493	// The reason for the step execution status change.
10494	StateChangeReason *StepStateChangeReason `type:"structure"`
10495
10496	// The timeline of the cluster step status over time.
10497	Timeline *StepTimeline `type:"structure"`
10498}
10499
10500// String returns the string representation
10501func (s StepStatus) String() string {
10502	return awsutil.Prettify(s)
10503}
10504
10505// GoString returns the string representation
10506func (s StepStatus) GoString() string {
10507	return s.String()
10508}
10509
10510// SetFailureDetails sets the FailureDetails field's value.
10511func (s *StepStatus) SetFailureDetails(v *FailureDetails) *StepStatus {
10512	s.FailureDetails = v
10513	return s
10514}
10515
10516// SetState sets the State field's value.
10517func (s *StepStatus) SetState(v string) *StepStatus {
10518	s.State = &v
10519	return s
10520}
10521
10522// SetStateChangeReason sets the StateChangeReason field's value.
10523func (s *StepStatus) SetStateChangeReason(v *StepStateChangeReason) *StepStatus {
10524	s.StateChangeReason = v
10525	return s
10526}
10527
10528// SetTimeline sets the Timeline field's value.
10529func (s *StepStatus) SetTimeline(v *StepTimeline) *StepStatus {
10530	s.Timeline = v
10531	return s
10532}
10533
10534// The summary of the cluster step.
10535type StepSummary struct {
10536	_ struct{} `type:"structure"`
10537
10538	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
10539	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is available for backward
10540	// compatibility. We recommend using TERMINATE_CLUSTER instead.
10541	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
10542
10543	// The Hadoop job configuration of the cluster step.
10544	Config *HadoopStepConfig `type:"structure"`
10545
10546	// The identifier of the cluster step.
10547	Id *string `type:"string"`
10548
10549	// The name of the cluster step.
10550	Name *string `type:"string"`
10551
10552	// The current execution status details of the cluster step.
10553	Status *StepStatus `type:"structure"`
10554}
10555
10556// String returns the string representation
10557func (s StepSummary) String() string {
10558	return awsutil.Prettify(s)
10559}
10560
10561// GoString returns the string representation
10562func (s StepSummary) GoString() string {
10563	return s.String()
10564}
10565
10566// SetActionOnFailure sets the ActionOnFailure field's value.
10567func (s *StepSummary) SetActionOnFailure(v string) *StepSummary {
10568	s.ActionOnFailure = &v
10569	return s
10570}
10571
10572// SetConfig sets the Config field's value.
10573func (s *StepSummary) SetConfig(v *HadoopStepConfig) *StepSummary {
10574	s.Config = v
10575	return s
10576}
10577
10578// SetId sets the Id field's value.
10579func (s *StepSummary) SetId(v string) *StepSummary {
10580	s.Id = &v
10581	return s
10582}
10583
10584// SetName sets the Name field's value.
10585func (s *StepSummary) SetName(v string) *StepSummary {
10586	s.Name = &v
10587	return s
10588}
10589
10590// SetStatus sets the Status field's value.
10591func (s *StepSummary) SetStatus(v *StepStatus) *StepSummary {
10592	s.Status = v
10593	return s
10594}
10595
10596// The timeline of the cluster step lifecycle.
10597type StepTimeline struct {
10598	_ struct{} `type:"structure"`
10599
10600	// The date and time when the cluster step was created.
10601	CreationDateTime *time.Time `type:"timestamp"`
10602
10603	// The date and time when the cluster step execution completed or failed.
10604	EndDateTime *time.Time `type:"timestamp"`
10605
10606	// The date and time when the cluster step execution started.
10607	StartDateTime *time.Time `type:"timestamp"`
10608}
10609
10610// String returns the string representation
10611func (s StepTimeline) String() string {
10612	return awsutil.Prettify(s)
10613}
10614
10615// GoString returns the string representation
10616func (s StepTimeline) GoString() string {
10617	return s.String()
10618}
10619
10620// SetCreationDateTime sets the CreationDateTime field's value.
10621func (s *StepTimeline) SetCreationDateTime(v time.Time) *StepTimeline {
10622	s.CreationDateTime = &v
10623	return s
10624}
10625
10626// SetEndDateTime sets the EndDateTime field's value.
10627func (s *StepTimeline) SetEndDateTime(v time.Time) *StepTimeline {
10628	s.EndDateTime = &v
10629	return s
10630}
10631
10632// SetStartDateTime sets the StartDateTime field's value.
10633func (s *StepTimeline) SetStartDateTime(v time.Time) *StepTimeline {
10634	s.StartDateTime = &v
10635	return s
10636}
10637
10638// The list of supported product configurations which allow user-supplied arguments.
10639// EMR accepts these arguments and forwards them to the corresponding installation
10640// script as bootstrap action arguments.
10641type SupportedProductConfig struct {
10642	_ struct{} `type:"structure"`
10643
10644	// The list of user-supplied arguments.
10645	Args []*string `type:"list"`
10646
10647	// The name of the product configuration.
10648	Name *string `type:"string"`
10649}
10650
10651// String returns the string representation
10652func (s SupportedProductConfig) String() string {
10653	return awsutil.Prettify(s)
10654}
10655
10656// GoString returns the string representation
10657func (s SupportedProductConfig) GoString() string {
10658	return s.String()
10659}
10660
10661// SetArgs sets the Args field's value.
10662func (s *SupportedProductConfig) SetArgs(v []*string) *SupportedProductConfig {
10663	s.Args = v
10664	return s
10665}
10666
10667// SetName sets the Name field's value.
10668func (s *SupportedProductConfig) SetName(v string) *SupportedProductConfig {
10669	s.Name = &v
10670	return s
10671}
10672
10673// A key/value pair containing user-defined metadata that you can associate
10674// with an Amazon EMR resource. Tags make it easier to associate clusters in
10675// various ways, such as grouping clusters to track your Amazon EMR resource
10676// allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
10677type Tag struct {
10678	_ struct{} `type:"structure"`
10679
10680	// A user-defined key, which is the minimum required information for a valid
10681	// tag. For more information, see Tag (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
10682	Key *string `type:"string"`
10683
10684	// A user-defined value, which is optional in a tag. For more information, see
10685	// Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
10686	Value *string `type:"string"`
10687}
10688
10689// String returns the string representation
10690func (s Tag) String() string {
10691	return awsutil.Prettify(s)
10692}
10693
10694// GoString returns the string representation
10695func (s Tag) GoString() string {
10696	return s.String()
10697}
10698
10699// SetKey sets the Key field's value.
10700func (s *Tag) SetKey(v string) *Tag {
10701	s.Key = &v
10702	return s
10703}
10704
10705// SetValue sets the Value field's value.
10706func (s *Tag) SetValue(v string) *Tag {
10707	s.Value = &v
10708	return s
10709}
10710
10711// Input to the TerminateJobFlows operation.
10712type TerminateJobFlowsInput struct {
10713	_ struct{} `type:"structure"`
10714
10715	// A list of job flows to be shutdown.
10716	//
10717	// JobFlowIds is a required field
10718	JobFlowIds []*string `type:"list" required:"true"`
10719}
10720
10721// String returns the string representation
10722func (s TerminateJobFlowsInput) String() string {
10723	return awsutil.Prettify(s)
10724}
10725
10726// GoString returns the string representation
10727func (s TerminateJobFlowsInput) GoString() string {
10728	return s.String()
10729}
10730
10731// Validate inspects the fields of the type to determine if they are valid.
10732func (s *TerminateJobFlowsInput) Validate() error {
10733	invalidParams := request.ErrInvalidParams{Context: "TerminateJobFlowsInput"}
10734	if s.JobFlowIds == nil {
10735		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
10736	}
10737
10738	if invalidParams.Len() > 0 {
10739		return invalidParams
10740	}
10741	return nil
10742}
10743
10744// SetJobFlowIds sets the JobFlowIds field's value.
10745func (s *TerminateJobFlowsInput) SetJobFlowIds(v []*string) *TerminateJobFlowsInput {
10746	s.JobFlowIds = v
10747	return s
10748}
10749
10750type TerminateJobFlowsOutput struct {
10751	_ struct{} `type:"structure"`
10752}
10753
10754// String returns the string representation
10755func (s TerminateJobFlowsOutput) String() string {
10756	return awsutil.Prettify(s)
10757}
10758
10759// GoString returns the string representation
10760func (s TerminateJobFlowsOutput) GoString() string {
10761	return s.String()
10762}
10763
10764// EBS volume specifications such as volume type, IOPS, and size (GiB) that
10765// will be requested for the EBS volume attached to an EC2 instance in the cluster.
10766type VolumeSpecification struct {
10767	_ struct{} `type:"structure"`
10768
10769	// The number of I/O operations per second (IOPS) that the volume supports.
10770	Iops *int64 `type:"integer"`
10771
10772	// The volume size, in gibibytes (GiB). This can be a number from 1 - 1024.
10773	// If the volume type is EBS-optimized, the minimum value is 10.
10774	//
10775	// SizeInGB is a required field
10776	SizeInGB *int64 `type:"integer" required:"true"`
10777
10778	// The volume type. Volume types supported are gp2, io1, standard.
10779	//
10780	// VolumeType is a required field
10781	VolumeType *string `type:"string" required:"true"`
10782}
10783
10784// String returns the string representation
10785func (s VolumeSpecification) String() string {
10786	return awsutil.Prettify(s)
10787}
10788
10789// GoString returns the string representation
10790func (s VolumeSpecification) GoString() string {
10791	return s.String()
10792}
10793
10794// Validate inspects the fields of the type to determine if they are valid.
10795func (s *VolumeSpecification) Validate() error {
10796	invalidParams := request.ErrInvalidParams{Context: "VolumeSpecification"}
10797	if s.SizeInGB == nil {
10798		invalidParams.Add(request.NewErrParamRequired("SizeInGB"))
10799	}
10800	if s.VolumeType == nil {
10801		invalidParams.Add(request.NewErrParamRequired("VolumeType"))
10802	}
10803
10804	if invalidParams.Len() > 0 {
10805		return invalidParams
10806	}
10807	return nil
10808}
10809
10810// SetIops sets the Iops field's value.
10811func (s *VolumeSpecification) SetIops(v int64) *VolumeSpecification {
10812	s.Iops = &v
10813	return s
10814}
10815
10816// SetSizeInGB sets the SizeInGB field's value.
10817func (s *VolumeSpecification) SetSizeInGB(v int64) *VolumeSpecification {
10818	s.SizeInGB = &v
10819	return s
10820}
10821
10822// SetVolumeType sets the VolumeType field's value.
10823func (s *VolumeSpecification) SetVolumeType(v string) *VolumeSpecification {
10824	s.VolumeType = &v
10825	return s
10826}
10827
10828const (
10829	// ActionOnFailureTerminateJobFlow is a ActionOnFailure enum value
10830	ActionOnFailureTerminateJobFlow = "TERMINATE_JOB_FLOW"
10831
10832	// ActionOnFailureTerminateCluster is a ActionOnFailure enum value
10833	ActionOnFailureTerminateCluster = "TERMINATE_CLUSTER"
10834
10835	// ActionOnFailureCancelAndWait is a ActionOnFailure enum value
10836	ActionOnFailureCancelAndWait = "CANCEL_AND_WAIT"
10837
10838	// ActionOnFailureContinue is a ActionOnFailure enum value
10839	ActionOnFailureContinue = "CONTINUE"
10840)
10841
10842const (
10843	// AdjustmentTypeChangeInCapacity is a AdjustmentType enum value
10844	AdjustmentTypeChangeInCapacity = "CHANGE_IN_CAPACITY"
10845
10846	// AdjustmentTypePercentChangeInCapacity is a AdjustmentType enum value
10847	AdjustmentTypePercentChangeInCapacity = "PERCENT_CHANGE_IN_CAPACITY"
10848
10849	// AdjustmentTypeExactCapacity is a AdjustmentType enum value
10850	AdjustmentTypeExactCapacity = "EXACT_CAPACITY"
10851)
10852
10853const (
10854	// AutoScalingPolicyStatePending is a AutoScalingPolicyState enum value
10855	AutoScalingPolicyStatePending = "PENDING"
10856
10857	// AutoScalingPolicyStateAttaching is a AutoScalingPolicyState enum value
10858	AutoScalingPolicyStateAttaching = "ATTACHING"
10859
10860	// AutoScalingPolicyStateAttached is a AutoScalingPolicyState enum value
10861	AutoScalingPolicyStateAttached = "ATTACHED"
10862
10863	// AutoScalingPolicyStateDetaching is a AutoScalingPolicyState enum value
10864	AutoScalingPolicyStateDetaching = "DETACHING"
10865
10866	// AutoScalingPolicyStateDetached is a AutoScalingPolicyState enum value
10867	AutoScalingPolicyStateDetached = "DETACHED"
10868
10869	// AutoScalingPolicyStateFailed is a AutoScalingPolicyState enum value
10870	AutoScalingPolicyStateFailed = "FAILED"
10871)
10872
10873const (
10874	// AutoScalingPolicyStateChangeReasonCodeUserRequest is a AutoScalingPolicyStateChangeReasonCode enum value
10875	AutoScalingPolicyStateChangeReasonCodeUserRequest = "USER_REQUEST"
10876
10877	// AutoScalingPolicyStateChangeReasonCodeProvisionFailure is a AutoScalingPolicyStateChangeReasonCode enum value
10878	AutoScalingPolicyStateChangeReasonCodeProvisionFailure = "PROVISION_FAILURE"
10879
10880	// AutoScalingPolicyStateChangeReasonCodeCleanupFailure is a AutoScalingPolicyStateChangeReasonCode enum value
10881	AutoScalingPolicyStateChangeReasonCodeCleanupFailure = "CLEANUP_FAILURE"
10882)
10883
10884const (
10885	// CancelStepsRequestStatusSubmitted is a CancelStepsRequestStatus enum value
10886	CancelStepsRequestStatusSubmitted = "SUBMITTED"
10887
10888	// CancelStepsRequestStatusFailed is a CancelStepsRequestStatus enum value
10889	CancelStepsRequestStatusFailed = "FAILED"
10890)
10891
10892const (
10893	// ClusterStateStarting is a ClusterState enum value
10894	ClusterStateStarting = "STARTING"
10895
10896	// ClusterStateBootstrapping is a ClusterState enum value
10897	ClusterStateBootstrapping = "BOOTSTRAPPING"
10898
10899	// ClusterStateRunning is a ClusterState enum value
10900	ClusterStateRunning = "RUNNING"
10901
10902	// ClusterStateWaiting is a ClusterState enum value
10903	ClusterStateWaiting = "WAITING"
10904
10905	// ClusterStateTerminating is a ClusterState enum value
10906	ClusterStateTerminating = "TERMINATING"
10907
10908	// ClusterStateTerminated is a ClusterState enum value
10909	ClusterStateTerminated = "TERMINATED"
10910
10911	// ClusterStateTerminatedWithErrors is a ClusterState enum value
10912	ClusterStateTerminatedWithErrors = "TERMINATED_WITH_ERRORS"
10913)
10914
10915const (
10916	// ClusterStateChangeReasonCodeInternalError is a ClusterStateChangeReasonCode enum value
10917	ClusterStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
10918
10919	// ClusterStateChangeReasonCodeValidationError is a ClusterStateChangeReasonCode enum value
10920	ClusterStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
10921
10922	// ClusterStateChangeReasonCodeInstanceFailure is a ClusterStateChangeReasonCode enum value
10923	ClusterStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
10924
10925	// ClusterStateChangeReasonCodeInstanceFleetTimeout is a ClusterStateChangeReasonCode enum value
10926	ClusterStateChangeReasonCodeInstanceFleetTimeout = "INSTANCE_FLEET_TIMEOUT"
10927
10928	// ClusterStateChangeReasonCodeBootstrapFailure is a ClusterStateChangeReasonCode enum value
10929	ClusterStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE"
10930
10931	// ClusterStateChangeReasonCodeUserRequest is a ClusterStateChangeReasonCode enum value
10932	ClusterStateChangeReasonCodeUserRequest = "USER_REQUEST"
10933
10934	// ClusterStateChangeReasonCodeStepFailure is a ClusterStateChangeReasonCode enum value
10935	ClusterStateChangeReasonCodeStepFailure = "STEP_FAILURE"
10936
10937	// ClusterStateChangeReasonCodeAllStepsCompleted is a ClusterStateChangeReasonCode enum value
10938	ClusterStateChangeReasonCodeAllStepsCompleted = "ALL_STEPS_COMPLETED"
10939)
10940
10941const (
10942	// ComparisonOperatorGreaterThanOrEqual is a ComparisonOperator enum value
10943	ComparisonOperatorGreaterThanOrEqual = "GREATER_THAN_OR_EQUAL"
10944
10945	// ComparisonOperatorGreaterThan is a ComparisonOperator enum value
10946	ComparisonOperatorGreaterThan = "GREATER_THAN"
10947
10948	// ComparisonOperatorLessThan is a ComparisonOperator enum value
10949	ComparisonOperatorLessThan = "LESS_THAN"
10950
10951	// ComparisonOperatorLessThanOrEqual is a ComparisonOperator enum value
10952	ComparisonOperatorLessThanOrEqual = "LESS_THAN_OR_EQUAL"
10953)
10954
10955const (
10956	// InstanceCollectionTypeInstanceFleet is a InstanceCollectionType enum value
10957	InstanceCollectionTypeInstanceFleet = "INSTANCE_FLEET"
10958
10959	// InstanceCollectionTypeInstanceGroup is a InstanceCollectionType enum value
10960	InstanceCollectionTypeInstanceGroup = "INSTANCE_GROUP"
10961)
10962
10963const (
10964	// InstanceFleetStateProvisioning is a InstanceFleetState enum value
10965	InstanceFleetStateProvisioning = "PROVISIONING"
10966
10967	// InstanceFleetStateBootstrapping is a InstanceFleetState enum value
10968	InstanceFleetStateBootstrapping = "BOOTSTRAPPING"
10969
10970	// InstanceFleetStateRunning is a InstanceFleetState enum value
10971	InstanceFleetStateRunning = "RUNNING"
10972
10973	// InstanceFleetStateResizing is a InstanceFleetState enum value
10974	InstanceFleetStateResizing = "RESIZING"
10975
10976	// InstanceFleetStateSuspended is a InstanceFleetState enum value
10977	InstanceFleetStateSuspended = "SUSPENDED"
10978
10979	// InstanceFleetStateTerminating is a InstanceFleetState enum value
10980	InstanceFleetStateTerminating = "TERMINATING"
10981
10982	// InstanceFleetStateTerminated is a InstanceFleetState enum value
10983	InstanceFleetStateTerminated = "TERMINATED"
10984)
10985
10986const (
10987	// InstanceFleetStateChangeReasonCodeInternalError is a InstanceFleetStateChangeReasonCode enum value
10988	InstanceFleetStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
10989
10990	// InstanceFleetStateChangeReasonCodeValidationError is a InstanceFleetStateChangeReasonCode enum value
10991	InstanceFleetStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
10992
10993	// InstanceFleetStateChangeReasonCodeInstanceFailure is a InstanceFleetStateChangeReasonCode enum value
10994	InstanceFleetStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
10995
10996	// InstanceFleetStateChangeReasonCodeClusterTerminated is a InstanceFleetStateChangeReasonCode enum value
10997	InstanceFleetStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
10998)
10999
11000const (
11001	// InstanceFleetTypeMaster is a InstanceFleetType enum value
11002	InstanceFleetTypeMaster = "MASTER"
11003
11004	// InstanceFleetTypeCore is a InstanceFleetType enum value
11005	InstanceFleetTypeCore = "CORE"
11006
11007	// InstanceFleetTypeTask is a InstanceFleetType enum value
11008	InstanceFleetTypeTask = "TASK"
11009)
11010
11011const (
11012	// InstanceGroupStateProvisioning is a InstanceGroupState enum value
11013	InstanceGroupStateProvisioning = "PROVISIONING"
11014
11015	// InstanceGroupStateBootstrapping is a InstanceGroupState enum value
11016	InstanceGroupStateBootstrapping = "BOOTSTRAPPING"
11017
11018	// InstanceGroupStateRunning is a InstanceGroupState enum value
11019	InstanceGroupStateRunning = "RUNNING"
11020
11021	// InstanceGroupStateReconfiguring is a InstanceGroupState enum value
11022	InstanceGroupStateReconfiguring = "RECONFIGURING"
11023
11024	// InstanceGroupStateResizing is a InstanceGroupState enum value
11025	InstanceGroupStateResizing = "RESIZING"
11026
11027	// InstanceGroupStateSuspended is a InstanceGroupState enum value
11028	InstanceGroupStateSuspended = "SUSPENDED"
11029
11030	// InstanceGroupStateTerminating is a InstanceGroupState enum value
11031	InstanceGroupStateTerminating = "TERMINATING"
11032
11033	// InstanceGroupStateTerminated is a InstanceGroupState enum value
11034	InstanceGroupStateTerminated = "TERMINATED"
11035
11036	// InstanceGroupStateArrested is a InstanceGroupState enum value
11037	InstanceGroupStateArrested = "ARRESTED"
11038
11039	// InstanceGroupStateShuttingDown is a InstanceGroupState enum value
11040	InstanceGroupStateShuttingDown = "SHUTTING_DOWN"
11041
11042	// InstanceGroupStateEnded is a InstanceGroupState enum value
11043	InstanceGroupStateEnded = "ENDED"
11044)
11045
11046const (
11047	// InstanceGroupStateChangeReasonCodeInternalError is a InstanceGroupStateChangeReasonCode enum value
11048	InstanceGroupStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
11049
11050	// InstanceGroupStateChangeReasonCodeValidationError is a InstanceGroupStateChangeReasonCode enum value
11051	InstanceGroupStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
11052
11053	// InstanceGroupStateChangeReasonCodeInstanceFailure is a InstanceGroupStateChangeReasonCode enum value
11054	InstanceGroupStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
11055
11056	// InstanceGroupStateChangeReasonCodeClusterTerminated is a InstanceGroupStateChangeReasonCode enum value
11057	InstanceGroupStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
11058)
11059
11060const (
11061	// InstanceGroupTypeMaster is a InstanceGroupType enum value
11062	InstanceGroupTypeMaster = "MASTER"
11063
11064	// InstanceGroupTypeCore is a InstanceGroupType enum value
11065	InstanceGroupTypeCore = "CORE"
11066
11067	// InstanceGroupTypeTask is a InstanceGroupType enum value
11068	InstanceGroupTypeTask = "TASK"
11069)
11070
11071const (
11072	// InstanceRoleTypeMaster is a InstanceRoleType enum value
11073	InstanceRoleTypeMaster = "MASTER"
11074
11075	// InstanceRoleTypeCore is a InstanceRoleType enum value
11076	InstanceRoleTypeCore = "CORE"
11077
11078	// InstanceRoleTypeTask is a InstanceRoleType enum value
11079	InstanceRoleTypeTask = "TASK"
11080)
11081
11082const (
11083	// InstanceStateAwaitingFulfillment is a InstanceState enum value
11084	InstanceStateAwaitingFulfillment = "AWAITING_FULFILLMENT"
11085
11086	// InstanceStateProvisioning is a InstanceState enum value
11087	InstanceStateProvisioning = "PROVISIONING"
11088
11089	// InstanceStateBootstrapping is a InstanceState enum value
11090	InstanceStateBootstrapping = "BOOTSTRAPPING"
11091
11092	// InstanceStateRunning is a InstanceState enum value
11093	InstanceStateRunning = "RUNNING"
11094
11095	// InstanceStateTerminated is a InstanceState enum value
11096	InstanceStateTerminated = "TERMINATED"
11097)
11098
11099const (
11100	// InstanceStateChangeReasonCodeInternalError is a InstanceStateChangeReasonCode enum value
11101	InstanceStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
11102
11103	// InstanceStateChangeReasonCodeValidationError is a InstanceStateChangeReasonCode enum value
11104	InstanceStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
11105
11106	// InstanceStateChangeReasonCodeInstanceFailure is a InstanceStateChangeReasonCode enum value
11107	InstanceStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
11108
11109	// InstanceStateChangeReasonCodeBootstrapFailure is a InstanceStateChangeReasonCode enum value
11110	InstanceStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE"
11111
11112	// InstanceStateChangeReasonCodeClusterTerminated is a InstanceStateChangeReasonCode enum value
11113	InstanceStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
11114)
11115
11116// The type of instance.
11117const (
11118	// JobFlowExecutionStateStarting is a JobFlowExecutionState enum value
11119	JobFlowExecutionStateStarting = "STARTING"
11120
11121	// JobFlowExecutionStateBootstrapping is a JobFlowExecutionState enum value
11122	JobFlowExecutionStateBootstrapping = "BOOTSTRAPPING"
11123
11124	// JobFlowExecutionStateRunning is a JobFlowExecutionState enum value
11125	JobFlowExecutionStateRunning = "RUNNING"
11126
11127	// JobFlowExecutionStateWaiting is a JobFlowExecutionState enum value
11128	JobFlowExecutionStateWaiting = "WAITING"
11129
11130	// JobFlowExecutionStateShuttingDown is a JobFlowExecutionState enum value
11131	JobFlowExecutionStateShuttingDown = "SHUTTING_DOWN"
11132
11133	// JobFlowExecutionStateTerminated is a JobFlowExecutionState enum value
11134	JobFlowExecutionStateTerminated = "TERMINATED"
11135
11136	// JobFlowExecutionStateCompleted is a JobFlowExecutionState enum value
11137	JobFlowExecutionStateCompleted = "COMPLETED"
11138
11139	// JobFlowExecutionStateFailed is a JobFlowExecutionState enum value
11140	JobFlowExecutionStateFailed = "FAILED"
11141)
11142
11143const (
11144	// MarketTypeOnDemand is a MarketType enum value
11145	MarketTypeOnDemand = "ON_DEMAND"
11146
11147	// MarketTypeSpot is a MarketType enum value
11148	MarketTypeSpot = "SPOT"
11149)
11150
11151const (
11152	// RepoUpgradeOnBootSecurity is a RepoUpgradeOnBoot enum value
11153	RepoUpgradeOnBootSecurity = "SECURITY"
11154
11155	// RepoUpgradeOnBootNone is a RepoUpgradeOnBoot enum value
11156	RepoUpgradeOnBootNone = "NONE"
11157)
11158
11159const (
11160	// ScaleDownBehaviorTerminateAtInstanceHour is a ScaleDownBehavior enum value
11161	ScaleDownBehaviorTerminateAtInstanceHour = "TERMINATE_AT_INSTANCE_HOUR"
11162
11163	// ScaleDownBehaviorTerminateAtTaskCompletion is a ScaleDownBehavior enum value
11164	ScaleDownBehaviorTerminateAtTaskCompletion = "TERMINATE_AT_TASK_COMPLETION"
11165)
11166
11167const (
11168	// SpotProvisioningTimeoutActionSwitchToOnDemand is a SpotProvisioningTimeoutAction enum value
11169	SpotProvisioningTimeoutActionSwitchToOnDemand = "SWITCH_TO_ON_DEMAND"
11170
11171	// SpotProvisioningTimeoutActionTerminateCluster is a SpotProvisioningTimeoutAction enum value
11172	SpotProvisioningTimeoutActionTerminateCluster = "TERMINATE_CLUSTER"
11173)
11174
11175const (
11176	// StatisticSampleCount is a Statistic enum value
11177	StatisticSampleCount = "SAMPLE_COUNT"
11178
11179	// StatisticAverage is a Statistic enum value
11180	StatisticAverage = "AVERAGE"
11181
11182	// StatisticSum is a Statistic enum value
11183	StatisticSum = "SUM"
11184
11185	// StatisticMinimum is a Statistic enum value
11186	StatisticMinimum = "MINIMUM"
11187
11188	// StatisticMaximum is a Statistic enum value
11189	StatisticMaximum = "MAXIMUM"
11190)
11191
11192const (
11193	// StepExecutionStatePending is a StepExecutionState enum value
11194	StepExecutionStatePending = "PENDING"
11195
11196	// StepExecutionStateRunning is a StepExecutionState enum value
11197	StepExecutionStateRunning = "RUNNING"
11198
11199	// StepExecutionStateContinue is a StepExecutionState enum value
11200	StepExecutionStateContinue = "CONTINUE"
11201
11202	// StepExecutionStateCompleted is a StepExecutionState enum value
11203	StepExecutionStateCompleted = "COMPLETED"
11204
11205	// StepExecutionStateCancelled is a StepExecutionState enum value
11206	StepExecutionStateCancelled = "CANCELLED"
11207
11208	// StepExecutionStateFailed is a StepExecutionState enum value
11209	StepExecutionStateFailed = "FAILED"
11210
11211	// StepExecutionStateInterrupted is a StepExecutionState enum value
11212	StepExecutionStateInterrupted = "INTERRUPTED"
11213)
11214
11215const (
11216	// StepStatePending is a StepState enum value
11217	StepStatePending = "PENDING"
11218
11219	// StepStateCancelPending is a StepState enum value
11220	StepStateCancelPending = "CANCEL_PENDING"
11221
11222	// StepStateRunning is a StepState enum value
11223	StepStateRunning = "RUNNING"
11224
11225	// StepStateCompleted is a StepState enum value
11226	StepStateCompleted = "COMPLETED"
11227
11228	// StepStateCancelled is a StepState enum value
11229	StepStateCancelled = "CANCELLED"
11230
11231	// StepStateFailed is a StepState enum value
11232	StepStateFailed = "FAILED"
11233
11234	// StepStateInterrupted is a StepState enum value
11235	StepStateInterrupted = "INTERRUPTED"
11236)
11237
11238const (
11239	// StepStateChangeReasonCodeNone is a StepStateChangeReasonCode enum value
11240	StepStateChangeReasonCodeNone = "NONE"
11241)
11242
11243const (
11244	// UnitNone is a Unit enum value
11245	UnitNone = "NONE"
11246
11247	// UnitSeconds is a Unit enum value
11248	UnitSeconds = "SECONDS"
11249
11250	// UnitMicroSeconds is a Unit enum value
11251	UnitMicroSeconds = "MICRO_SECONDS"
11252
11253	// UnitMilliSeconds is a Unit enum value
11254	UnitMilliSeconds = "MILLI_SECONDS"
11255
11256	// UnitBytes is a Unit enum value
11257	UnitBytes = "BYTES"
11258
11259	// UnitKiloBytes is a Unit enum value
11260	UnitKiloBytes = "KILO_BYTES"
11261
11262	// UnitMegaBytes is a Unit enum value
11263	UnitMegaBytes = "MEGA_BYTES"
11264
11265	// UnitGigaBytes is a Unit enum value
11266	UnitGigaBytes = "GIGA_BYTES"
11267
11268	// UnitTeraBytes is a Unit enum value
11269	UnitTeraBytes = "TERA_BYTES"
11270
11271	// UnitBits is a Unit enum value
11272	UnitBits = "BITS"
11273
11274	// UnitKiloBits is a Unit enum value
11275	UnitKiloBits = "KILO_BITS"
11276
11277	// UnitMegaBits is a Unit enum value
11278	UnitMegaBits = "MEGA_BITS"
11279
11280	// UnitGigaBits is a Unit enum value
11281	UnitGigaBits = "GIGA_BITS"
11282
11283	// UnitTeraBits is a Unit enum value
11284	UnitTeraBits = "TERA_BITS"
11285
11286	// UnitPercent is a Unit enum value
11287	UnitPercent = "PERCENT"
11288
11289	// UnitCount is a Unit enum value
11290	UnitCount = "COUNT"
11291
11292	// UnitBytesPerSecond is a Unit enum value
11293	UnitBytesPerSecond = "BYTES_PER_SECOND"
11294
11295	// UnitKiloBytesPerSecond is a Unit enum value
11296	UnitKiloBytesPerSecond = "KILO_BYTES_PER_SECOND"
11297
11298	// UnitMegaBytesPerSecond is a Unit enum value
11299	UnitMegaBytesPerSecond = "MEGA_BYTES_PER_SECOND"
11300
11301	// UnitGigaBytesPerSecond is a Unit enum value
11302	UnitGigaBytesPerSecond = "GIGA_BYTES_PER_SECOND"
11303
11304	// UnitTeraBytesPerSecond is a Unit enum value
11305	UnitTeraBytesPerSecond = "TERA_BYTES_PER_SECOND"
11306
11307	// UnitBitsPerSecond is a Unit enum value
11308	UnitBitsPerSecond = "BITS_PER_SECOND"
11309
11310	// UnitKiloBitsPerSecond is a Unit enum value
11311	UnitKiloBitsPerSecond = "KILO_BITS_PER_SECOND"
11312
11313	// UnitMegaBitsPerSecond is a Unit enum value
11314	UnitMegaBitsPerSecond = "MEGA_BITS_PER_SECOND"
11315
11316	// UnitGigaBitsPerSecond is a Unit enum value
11317	UnitGigaBitsPerSecond = "GIGA_BITS_PER_SECOND"
11318
11319	// UnitTeraBitsPerSecond is a Unit enum value
11320	UnitTeraBitsPerSecond = "TERA_BITS_PER_SECOND"
11321
11322	// UnitCountPerSecond is a Unit enum value
11323	UnitCountPerSecond = "COUNT_PER_SECOND"
11324)
11325