1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package fis
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/restjson"
14)
15
16const opCreateExperimentTemplate = "CreateExperimentTemplate"
17
18// CreateExperimentTemplateRequest generates a "aws/request.Request" representing the
19// client's request for the CreateExperimentTemplate 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 CreateExperimentTemplate for more information on using the CreateExperimentTemplate
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 CreateExperimentTemplateRequest method.
34//    req, resp := client.CreateExperimentTemplateRequest(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/fis-2020-12-01/CreateExperimentTemplate
42func (c *FIS) CreateExperimentTemplateRequest(input *CreateExperimentTemplateInput) (req *request.Request, output *CreateExperimentTemplateOutput) {
43	op := &request.Operation{
44		Name:       opCreateExperimentTemplate,
45		HTTPMethod: "POST",
46		HTTPPath:   "/experimentTemplates",
47	}
48
49	if input == nil {
50		input = &CreateExperimentTemplateInput{}
51	}
52
53	output = &CreateExperimentTemplateOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// CreateExperimentTemplate API operation for AWS Fault Injection Simulator.
59//
60// Creates an experiment template.
61//
62// To create a template, specify the following information:
63//
64//    * Targets: A target can be a specific resource in your AWS environment,
65//    or one or more resources that match criteria that you specify, for example,
66//    resources that have specific tags.
67//
68//    * Actions: The actions to carry out on the target. You can specify multiple
69//    actions, the duration of each action, and when to start each action during
70//    an experiment.
71//
72//    * Stop conditions: If a stop condition is triggered while an experiment
73//    is running, the experiment is automatically stopped. You can define a
74//    stop condition as a CloudWatch alarm.
75//
76// For more information, see the AWS Fault Injection Simulator User Guide (https://docs.aws.amazon.com/fis/latest/userguide/).
77//
78// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
79// with awserr.Error's Code and Message methods to get detailed information about
80// the error.
81//
82// See the AWS API reference guide for AWS Fault Injection Simulator's
83// API operation CreateExperimentTemplate for usage and error information.
84//
85// Returned Error Types:
86//   * ValidationException
87//   The specified input is not valid, or fails to satisfy the constraints for
88//   the request.
89//
90//   * ConflictException
91//   The request could not be processed because of a conflict.
92//
93//   * ResourceNotFoundException
94//   The specified resource cannot be found.
95//
96//   * ServiceQuotaExceededException
97//   You have exceeded your service quota.
98//
99// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/CreateExperimentTemplate
100func (c *FIS) CreateExperimentTemplate(input *CreateExperimentTemplateInput) (*CreateExperimentTemplateOutput, error) {
101	req, out := c.CreateExperimentTemplateRequest(input)
102	return out, req.Send()
103}
104
105// CreateExperimentTemplateWithContext is the same as CreateExperimentTemplate with the addition of
106// the ability to pass a context and additional request options.
107//
108// See CreateExperimentTemplate for details on how to use this API operation.
109//
110// The context must be non-nil and will be used for request cancellation. If
111// the context is nil a panic will occur. In the future the SDK may create
112// sub-contexts for http.Requests. See https://golang.org/pkg/context/
113// for more information on using Contexts.
114func (c *FIS) CreateExperimentTemplateWithContext(ctx aws.Context, input *CreateExperimentTemplateInput, opts ...request.Option) (*CreateExperimentTemplateOutput, error) {
115	req, out := c.CreateExperimentTemplateRequest(input)
116	req.SetContext(ctx)
117	req.ApplyOptions(opts...)
118	return out, req.Send()
119}
120
121const opDeleteExperimentTemplate = "DeleteExperimentTemplate"
122
123// DeleteExperimentTemplateRequest generates a "aws/request.Request" representing the
124// client's request for the DeleteExperimentTemplate operation. The "output" return
125// value will be populated with the request's response once the request completes
126// successfully.
127//
128// Use "Send" method on the returned Request to send the API call to the service.
129// the "output" return value is not valid until after Send returns without error.
130//
131// See DeleteExperimentTemplate for more information on using the DeleteExperimentTemplate
132// API call, and error handling.
133//
134// This method is useful when you want to inject custom logic or configuration
135// into the SDK's request lifecycle. Such as custom headers, or retry logic.
136//
137//
138//    // Example sending a request using the DeleteExperimentTemplateRequest method.
139//    req, resp := client.DeleteExperimentTemplateRequest(params)
140//
141//    err := req.Send()
142//    if err == nil { // resp is now filled
143//        fmt.Println(resp)
144//    }
145//
146// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/DeleteExperimentTemplate
147func (c *FIS) DeleteExperimentTemplateRequest(input *DeleteExperimentTemplateInput) (req *request.Request, output *DeleteExperimentTemplateOutput) {
148	op := &request.Operation{
149		Name:       opDeleteExperimentTemplate,
150		HTTPMethod: "DELETE",
151		HTTPPath:   "/experimentTemplates/{id}",
152	}
153
154	if input == nil {
155		input = &DeleteExperimentTemplateInput{}
156	}
157
158	output = &DeleteExperimentTemplateOutput{}
159	req = c.newRequest(op, input, output)
160	return
161}
162
163// DeleteExperimentTemplate API operation for AWS Fault Injection Simulator.
164//
165// Deletes the specified experiment template.
166//
167// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
168// with awserr.Error's Code and Message methods to get detailed information about
169// the error.
170//
171// See the AWS API reference guide for AWS Fault Injection Simulator's
172// API operation DeleteExperimentTemplate for usage and error information.
173//
174// Returned Error Types:
175//   * ValidationException
176//   The specified input is not valid, or fails to satisfy the constraints for
177//   the request.
178//
179//   * ResourceNotFoundException
180//   The specified resource cannot be found.
181//
182// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/DeleteExperimentTemplate
183func (c *FIS) DeleteExperimentTemplate(input *DeleteExperimentTemplateInput) (*DeleteExperimentTemplateOutput, error) {
184	req, out := c.DeleteExperimentTemplateRequest(input)
185	return out, req.Send()
186}
187
188// DeleteExperimentTemplateWithContext is the same as DeleteExperimentTemplate with the addition of
189// the ability to pass a context and additional request options.
190//
191// See DeleteExperimentTemplate for details on how to use this API operation.
192//
193// The context must be non-nil and will be used for request cancellation. If
194// the context is nil a panic will occur. In the future the SDK may create
195// sub-contexts for http.Requests. See https://golang.org/pkg/context/
196// for more information on using Contexts.
197func (c *FIS) DeleteExperimentTemplateWithContext(ctx aws.Context, input *DeleteExperimentTemplateInput, opts ...request.Option) (*DeleteExperimentTemplateOutput, error) {
198	req, out := c.DeleteExperimentTemplateRequest(input)
199	req.SetContext(ctx)
200	req.ApplyOptions(opts...)
201	return out, req.Send()
202}
203
204const opGetAction = "GetAction"
205
206// GetActionRequest generates a "aws/request.Request" representing the
207// client's request for the GetAction operation. The "output" return
208// value will be populated with the request's response once the request completes
209// successfully.
210//
211// Use "Send" method on the returned Request to send the API call to the service.
212// the "output" return value is not valid until after Send returns without error.
213//
214// See GetAction for more information on using the GetAction
215// API call, and error handling.
216//
217// This method is useful when you want to inject custom logic or configuration
218// into the SDK's request lifecycle. Such as custom headers, or retry logic.
219//
220//
221//    // Example sending a request using the GetActionRequest method.
222//    req, resp := client.GetActionRequest(params)
223//
224//    err := req.Send()
225//    if err == nil { // resp is now filled
226//        fmt.Println(resp)
227//    }
228//
229// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/GetAction
230func (c *FIS) GetActionRequest(input *GetActionInput) (req *request.Request, output *GetActionOutput) {
231	op := &request.Operation{
232		Name:       opGetAction,
233		HTTPMethod: "GET",
234		HTTPPath:   "/actions/{id}",
235	}
236
237	if input == nil {
238		input = &GetActionInput{}
239	}
240
241	output = &GetActionOutput{}
242	req = c.newRequest(op, input, output)
243	return
244}
245
246// GetAction API operation for AWS Fault Injection Simulator.
247//
248// Gets information about the specified AWS FIS action.
249//
250// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
251// with awserr.Error's Code and Message methods to get detailed information about
252// the error.
253//
254// See the AWS API reference guide for AWS Fault Injection Simulator's
255// API operation GetAction for usage and error information.
256//
257// Returned Error Types:
258//   * ValidationException
259//   The specified input is not valid, or fails to satisfy the constraints for
260//   the request.
261//
262//   * ResourceNotFoundException
263//   The specified resource cannot be found.
264//
265// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/GetAction
266func (c *FIS) GetAction(input *GetActionInput) (*GetActionOutput, error) {
267	req, out := c.GetActionRequest(input)
268	return out, req.Send()
269}
270
271// GetActionWithContext is the same as GetAction with the addition of
272// the ability to pass a context and additional request options.
273//
274// See GetAction for details on how to use this API operation.
275//
276// The context must be non-nil and will be used for request cancellation. If
277// the context is nil a panic will occur. In the future the SDK may create
278// sub-contexts for http.Requests. See https://golang.org/pkg/context/
279// for more information on using Contexts.
280func (c *FIS) GetActionWithContext(ctx aws.Context, input *GetActionInput, opts ...request.Option) (*GetActionOutput, error) {
281	req, out := c.GetActionRequest(input)
282	req.SetContext(ctx)
283	req.ApplyOptions(opts...)
284	return out, req.Send()
285}
286
287const opGetExperiment = "GetExperiment"
288
289// GetExperimentRequest generates a "aws/request.Request" representing the
290// client's request for the GetExperiment operation. The "output" return
291// value will be populated with the request's response once the request completes
292// successfully.
293//
294// Use "Send" method on the returned Request to send the API call to the service.
295// the "output" return value is not valid until after Send returns without error.
296//
297// See GetExperiment for more information on using the GetExperiment
298// API call, and error handling.
299//
300// This method is useful when you want to inject custom logic or configuration
301// into the SDK's request lifecycle. Such as custom headers, or retry logic.
302//
303//
304//    // Example sending a request using the GetExperimentRequest method.
305//    req, resp := client.GetExperimentRequest(params)
306//
307//    err := req.Send()
308//    if err == nil { // resp is now filled
309//        fmt.Println(resp)
310//    }
311//
312// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/GetExperiment
313func (c *FIS) GetExperimentRequest(input *GetExperimentInput) (req *request.Request, output *GetExperimentOutput) {
314	op := &request.Operation{
315		Name:       opGetExperiment,
316		HTTPMethod: "GET",
317		HTTPPath:   "/experiments/{id}",
318	}
319
320	if input == nil {
321		input = &GetExperimentInput{}
322	}
323
324	output = &GetExperimentOutput{}
325	req = c.newRequest(op, input, output)
326	return
327}
328
329// GetExperiment API operation for AWS Fault Injection Simulator.
330//
331// Gets information about the specified experiment.
332//
333// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
334// with awserr.Error's Code and Message methods to get detailed information about
335// the error.
336//
337// See the AWS API reference guide for AWS Fault Injection Simulator's
338// API operation GetExperiment for usage and error information.
339//
340// Returned Error Types:
341//   * ValidationException
342//   The specified input is not valid, or fails to satisfy the constraints for
343//   the request.
344//
345//   * ResourceNotFoundException
346//   The specified resource cannot be found.
347//
348// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/GetExperiment
349func (c *FIS) GetExperiment(input *GetExperimentInput) (*GetExperimentOutput, error) {
350	req, out := c.GetExperimentRequest(input)
351	return out, req.Send()
352}
353
354// GetExperimentWithContext is the same as GetExperiment with the addition of
355// the ability to pass a context and additional request options.
356//
357// See GetExperiment for details on how to use this API operation.
358//
359// The context must be non-nil and will be used for request cancellation. If
360// the context is nil a panic will occur. In the future the SDK may create
361// sub-contexts for http.Requests. See https://golang.org/pkg/context/
362// for more information on using Contexts.
363func (c *FIS) GetExperimentWithContext(ctx aws.Context, input *GetExperimentInput, opts ...request.Option) (*GetExperimentOutput, error) {
364	req, out := c.GetExperimentRequest(input)
365	req.SetContext(ctx)
366	req.ApplyOptions(opts...)
367	return out, req.Send()
368}
369
370const opGetExperimentTemplate = "GetExperimentTemplate"
371
372// GetExperimentTemplateRequest generates a "aws/request.Request" representing the
373// client's request for the GetExperimentTemplate operation. The "output" return
374// value will be populated with the request's response once the request completes
375// successfully.
376//
377// Use "Send" method on the returned Request to send the API call to the service.
378// the "output" return value is not valid until after Send returns without error.
379//
380// See GetExperimentTemplate for more information on using the GetExperimentTemplate
381// API call, and error handling.
382//
383// This method is useful when you want to inject custom logic or configuration
384// into the SDK's request lifecycle. Such as custom headers, or retry logic.
385//
386//
387//    // Example sending a request using the GetExperimentTemplateRequest method.
388//    req, resp := client.GetExperimentTemplateRequest(params)
389//
390//    err := req.Send()
391//    if err == nil { // resp is now filled
392//        fmt.Println(resp)
393//    }
394//
395// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/GetExperimentTemplate
396func (c *FIS) GetExperimentTemplateRequest(input *GetExperimentTemplateInput) (req *request.Request, output *GetExperimentTemplateOutput) {
397	op := &request.Operation{
398		Name:       opGetExperimentTemplate,
399		HTTPMethod: "GET",
400		HTTPPath:   "/experimentTemplates/{id}",
401	}
402
403	if input == nil {
404		input = &GetExperimentTemplateInput{}
405	}
406
407	output = &GetExperimentTemplateOutput{}
408	req = c.newRequest(op, input, output)
409	return
410}
411
412// GetExperimentTemplate API operation for AWS Fault Injection Simulator.
413//
414// Gets information about the specified experiment template.
415//
416// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
417// with awserr.Error's Code and Message methods to get detailed information about
418// the error.
419//
420// See the AWS API reference guide for AWS Fault Injection Simulator's
421// API operation GetExperimentTemplate for usage and error information.
422//
423// Returned Error Types:
424//   * ValidationException
425//   The specified input is not valid, or fails to satisfy the constraints for
426//   the request.
427//
428//   * ResourceNotFoundException
429//   The specified resource cannot be found.
430//
431// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/GetExperimentTemplate
432func (c *FIS) GetExperimentTemplate(input *GetExperimentTemplateInput) (*GetExperimentTemplateOutput, error) {
433	req, out := c.GetExperimentTemplateRequest(input)
434	return out, req.Send()
435}
436
437// GetExperimentTemplateWithContext is the same as GetExperimentTemplate with the addition of
438// the ability to pass a context and additional request options.
439//
440// See GetExperimentTemplate for details on how to use this API operation.
441//
442// The context must be non-nil and will be used for request cancellation. If
443// the context is nil a panic will occur. In the future the SDK may create
444// sub-contexts for http.Requests. See https://golang.org/pkg/context/
445// for more information on using Contexts.
446func (c *FIS) GetExperimentTemplateWithContext(ctx aws.Context, input *GetExperimentTemplateInput, opts ...request.Option) (*GetExperimentTemplateOutput, error) {
447	req, out := c.GetExperimentTemplateRequest(input)
448	req.SetContext(ctx)
449	req.ApplyOptions(opts...)
450	return out, req.Send()
451}
452
453const opListActions = "ListActions"
454
455// ListActionsRequest generates a "aws/request.Request" representing the
456// client's request for the ListActions operation. The "output" return
457// value will be populated with the request's response once the request completes
458// successfully.
459//
460// Use "Send" method on the returned Request to send the API call to the service.
461// the "output" return value is not valid until after Send returns without error.
462//
463// See ListActions for more information on using the ListActions
464// API call, and error handling.
465//
466// This method is useful when you want to inject custom logic or configuration
467// into the SDK's request lifecycle. Such as custom headers, or retry logic.
468//
469//
470//    // Example sending a request using the ListActionsRequest method.
471//    req, resp := client.ListActionsRequest(params)
472//
473//    err := req.Send()
474//    if err == nil { // resp is now filled
475//        fmt.Println(resp)
476//    }
477//
478// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListActions
479func (c *FIS) ListActionsRequest(input *ListActionsInput) (req *request.Request, output *ListActionsOutput) {
480	op := &request.Operation{
481		Name:       opListActions,
482		HTTPMethod: "GET",
483		HTTPPath:   "/actions",
484		Paginator: &request.Paginator{
485			InputTokens:     []string{"nextToken"},
486			OutputTokens:    []string{"nextToken"},
487			LimitToken:      "maxResults",
488			TruncationToken: "",
489		},
490	}
491
492	if input == nil {
493		input = &ListActionsInput{}
494	}
495
496	output = &ListActionsOutput{}
497	req = c.newRequest(op, input, output)
498	return
499}
500
501// ListActions API operation for AWS Fault Injection Simulator.
502//
503// Lists the available AWS FIS actions.
504//
505// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
506// with awserr.Error's Code and Message methods to get detailed information about
507// the error.
508//
509// See the AWS API reference guide for AWS Fault Injection Simulator's
510// API operation ListActions for usage and error information.
511//
512// Returned Error Types:
513//   * ValidationException
514//   The specified input is not valid, or fails to satisfy the constraints for
515//   the request.
516//
517// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListActions
518func (c *FIS) ListActions(input *ListActionsInput) (*ListActionsOutput, error) {
519	req, out := c.ListActionsRequest(input)
520	return out, req.Send()
521}
522
523// ListActionsWithContext is the same as ListActions with the addition of
524// the ability to pass a context and additional request options.
525//
526// See ListActions for details on how to use this API operation.
527//
528// The context must be non-nil and will be used for request cancellation. If
529// the context is nil a panic will occur. In the future the SDK may create
530// sub-contexts for http.Requests. See https://golang.org/pkg/context/
531// for more information on using Contexts.
532func (c *FIS) ListActionsWithContext(ctx aws.Context, input *ListActionsInput, opts ...request.Option) (*ListActionsOutput, error) {
533	req, out := c.ListActionsRequest(input)
534	req.SetContext(ctx)
535	req.ApplyOptions(opts...)
536	return out, req.Send()
537}
538
539// ListActionsPages iterates over the pages of a ListActions operation,
540// calling the "fn" function with the response data for each page. To stop
541// iterating, return false from the fn function.
542//
543// See ListActions method for more information on how to use this operation.
544//
545// Note: This operation can generate multiple requests to a service.
546//
547//    // Example iterating over at most 3 pages of a ListActions operation.
548//    pageNum := 0
549//    err := client.ListActionsPages(params,
550//        func(page *fis.ListActionsOutput, lastPage bool) bool {
551//            pageNum++
552//            fmt.Println(page)
553//            return pageNum <= 3
554//        })
555//
556func (c *FIS) ListActionsPages(input *ListActionsInput, fn func(*ListActionsOutput, bool) bool) error {
557	return c.ListActionsPagesWithContext(aws.BackgroundContext(), input, fn)
558}
559
560// ListActionsPagesWithContext same as ListActionsPages except
561// it takes a Context and allows setting request options on the pages.
562//
563// The context must be non-nil and will be used for request cancellation. If
564// the context is nil a panic will occur. In the future the SDK may create
565// sub-contexts for http.Requests. See https://golang.org/pkg/context/
566// for more information on using Contexts.
567func (c *FIS) ListActionsPagesWithContext(ctx aws.Context, input *ListActionsInput, fn func(*ListActionsOutput, bool) bool, opts ...request.Option) error {
568	p := request.Pagination{
569		NewRequest: func() (*request.Request, error) {
570			var inCpy *ListActionsInput
571			if input != nil {
572				tmp := *input
573				inCpy = &tmp
574			}
575			req, _ := c.ListActionsRequest(inCpy)
576			req.SetContext(ctx)
577			req.ApplyOptions(opts...)
578			return req, nil
579		},
580	}
581
582	for p.Next() {
583		if !fn(p.Page().(*ListActionsOutput), !p.HasNextPage()) {
584			break
585		}
586	}
587
588	return p.Err()
589}
590
591const opListExperimentTemplates = "ListExperimentTemplates"
592
593// ListExperimentTemplatesRequest generates a "aws/request.Request" representing the
594// client's request for the ListExperimentTemplates operation. The "output" return
595// value will be populated with the request's response once the request completes
596// successfully.
597//
598// Use "Send" method on the returned Request to send the API call to the service.
599// the "output" return value is not valid until after Send returns without error.
600//
601// See ListExperimentTemplates for more information on using the ListExperimentTemplates
602// API call, and error handling.
603//
604// This method is useful when you want to inject custom logic or configuration
605// into the SDK's request lifecycle. Such as custom headers, or retry logic.
606//
607//
608//    // Example sending a request using the ListExperimentTemplatesRequest method.
609//    req, resp := client.ListExperimentTemplatesRequest(params)
610//
611//    err := req.Send()
612//    if err == nil { // resp is now filled
613//        fmt.Println(resp)
614//    }
615//
616// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListExperimentTemplates
617func (c *FIS) ListExperimentTemplatesRequest(input *ListExperimentTemplatesInput) (req *request.Request, output *ListExperimentTemplatesOutput) {
618	op := &request.Operation{
619		Name:       opListExperimentTemplates,
620		HTTPMethod: "GET",
621		HTTPPath:   "/experimentTemplates",
622		Paginator: &request.Paginator{
623			InputTokens:     []string{"nextToken"},
624			OutputTokens:    []string{"nextToken"},
625			LimitToken:      "maxResults",
626			TruncationToken: "",
627		},
628	}
629
630	if input == nil {
631		input = &ListExperimentTemplatesInput{}
632	}
633
634	output = &ListExperimentTemplatesOutput{}
635	req = c.newRequest(op, input, output)
636	return
637}
638
639// ListExperimentTemplates API operation for AWS Fault Injection Simulator.
640//
641// Lists your experiment templates.
642//
643// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
644// with awserr.Error's Code and Message methods to get detailed information about
645// the error.
646//
647// See the AWS API reference guide for AWS Fault Injection Simulator's
648// API operation ListExperimentTemplates for usage and error information.
649//
650// Returned Error Types:
651//   * ValidationException
652//   The specified input is not valid, or fails to satisfy the constraints for
653//   the request.
654//
655// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListExperimentTemplates
656func (c *FIS) ListExperimentTemplates(input *ListExperimentTemplatesInput) (*ListExperimentTemplatesOutput, error) {
657	req, out := c.ListExperimentTemplatesRequest(input)
658	return out, req.Send()
659}
660
661// ListExperimentTemplatesWithContext is the same as ListExperimentTemplates with the addition of
662// the ability to pass a context and additional request options.
663//
664// See ListExperimentTemplates for details on how to use this API operation.
665//
666// The context must be non-nil and will be used for request cancellation. If
667// the context is nil a panic will occur. In the future the SDK may create
668// sub-contexts for http.Requests. See https://golang.org/pkg/context/
669// for more information on using Contexts.
670func (c *FIS) ListExperimentTemplatesWithContext(ctx aws.Context, input *ListExperimentTemplatesInput, opts ...request.Option) (*ListExperimentTemplatesOutput, error) {
671	req, out := c.ListExperimentTemplatesRequest(input)
672	req.SetContext(ctx)
673	req.ApplyOptions(opts...)
674	return out, req.Send()
675}
676
677// ListExperimentTemplatesPages iterates over the pages of a ListExperimentTemplates operation,
678// calling the "fn" function with the response data for each page. To stop
679// iterating, return false from the fn function.
680//
681// See ListExperimentTemplates method for more information on how to use this operation.
682//
683// Note: This operation can generate multiple requests to a service.
684//
685//    // Example iterating over at most 3 pages of a ListExperimentTemplates operation.
686//    pageNum := 0
687//    err := client.ListExperimentTemplatesPages(params,
688//        func(page *fis.ListExperimentTemplatesOutput, lastPage bool) bool {
689//            pageNum++
690//            fmt.Println(page)
691//            return pageNum <= 3
692//        })
693//
694func (c *FIS) ListExperimentTemplatesPages(input *ListExperimentTemplatesInput, fn func(*ListExperimentTemplatesOutput, bool) bool) error {
695	return c.ListExperimentTemplatesPagesWithContext(aws.BackgroundContext(), input, fn)
696}
697
698// ListExperimentTemplatesPagesWithContext same as ListExperimentTemplatesPages except
699// it takes a Context and allows setting request options on the pages.
700//
701// The context must be non-nil and will be used for request cancellation. If
702// the context is nil a panic will occur. In the future the SDK may create
703// sub-contexts for http.Requests. See https://golang.org/pkg/context/
704// for more information on using Contexts.
705func (c *FIS) ListExperimentTemplatesPagesWithContext(ctx aws.Context, input *ListExperimentTemplatesInput, fn func(*ListExperimentTemplatesOutput, bool) bool, opts ...request.Option) error {
706	p := request.Pagination{
707		NewRequest: func() (*request.Request, error) {
708			var inCpy *ListExperimentTemplatesInput
709			if input != nil {
710				tmp := *input
711				inCpy = &tmp
712			}
713			req, _ := c.ListExperimentTemplatesRequest(inCpy)
714			req.SetContext(ctx)
715			req.ApplyOptions(opts...)
716			return req, nil
717		},
718	}
719
720	for p.Next() {
721		if !fn(p.Page().(*ListExperimentTemplatesOutput), !p.HasNextPage()) {
722			break
723		}
724	}
725
726	return p.Err()
727}
728
729const opListExperiments = "ListExperiments"
730
731// ListExperimentsRequest generates a "aws/request.Request" representing the
732// client's request for the ListExperiments operation. The "output" return
733// value will be populated with the request's response once the request completes
734// successfully.
735//
736// Use "Send" method on the returned Request to send the API call to the service.
737// the "output" return value is not valid until after Send returns without error.
738//
739// See ListExperiments for more information on using the ListExperiments
740// API call, and error handling.
741//
742// This method is useful when you want to inject custom logic or configuration
743// into the SDK's request lifecycle. Such as custom headers, or retry logic.
744//
745//
746//    // Example sending a request using the ListExperimentsRequest method.
747//    req, resp := client.ListExperimentsRequest(params)
748//
749//    err := req.Send()
750//    if err == nil { // resp is now filled
751//        fmt.Println(resp)
752//    }
753//
754// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListExperiments
755func (c *FIS) ListExperimentsRequest(input *ListExperimentsInput) (req *request.Request, output *ListExperimentsOutput) {
756	op := &request.Operation{
757		Name:       opListExperiments,
758		HTTPMethod: "GET",
759		HTTPPath:   "/experiments",
760		Paginator: &request.Paginator{
761			InputTokens:     []string{"nextToken"},
762			OutputTokens:    []string{"nextToken"},
763			LimitToken:      "maxResults",
764			TruncationToken: "",
765		},
766	}
767
768	if input == nil {
769		input = &ListExperimentsInput{}
770	}
771
772	output = &ListExperimentsOutput{}
773	req = c.newRequest(op, input, output)
774	return
775}
776
777// ListExperiments API operation for AWS Fault Injection Simulator.
778//
779// Lists your experiments.
780//
781// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
782// with awserr.Error's Code and Message methods to get detailed information about
783// the error.
784//
785// See the AWS API reference guide for AWS Fault Injection Simulator's
786// API operation ListExperiments for usage and error information.
787//
788// Returned Error Types:
789//   * ValidationException
790//   The specified input is not valid, or fails to satisfy the constraints for
791//   the request.
792//
793// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListExperiments
794func (c *FIS) ListExperiments(input *ListExperimentsInput) (*ListExperimentsOutput, error) {
795	req, out := c.ListExperimentsRequest(input)
796	return out, req.Send()
797}
798
799// ListExperimentsWithContext is the same as ListExperiments with the addition of
800// the ability to pass a context and additional request options.
801//
802// See ListExperiments for details on how to use this API operation.
803//
804// The context must be non-nil and will be used for request cancellation. If
805// the context is nil a panic will occur. In the future the SDK may create
806// sub-contexts for http.Requests. See https://golang.org/pkg/context/
807// for more information on using Contexts.
808func (c *FIS) ListExperimentsWithContext(ctx aws.Context, input *ListExperimentsInput, opts ...request.Option) (*ListExperimentsOutput, error) {
809	req, out := c.ListExperimentsRequest(input)
810	req.SetContext(ctx)
811	req.ApplyOptions(opts...)
812	return out, req.Send()
813}
814
815// ListExperimentsPages iterates over the pages of a ListExperiments operation,
816// calling the "fn" function with the response data for each page. To stop
817// iterating, return false from the fn function.
818//
819// See ListExperiments method for more information on how to use this operation.
820//
821// Note: This operation can generate multiple requests to a service.
822//
823//    // Example iterating over at most 3 pages of a ListExperiments operation.
824//    pageNum := 0
825//    err := client.ListExperimentsPages(params,
826//        func(page *fis.ListExperimentsOutput, lastPage bool) bool {
827//            pageNum++
828//            fmt.Println(page)
829//            return pageNum <= 3
830//        })
831//
832func (c *FIS) ListExperimentsPages(input *ListExperimentsInput, fn func(*ListExperimentsOutput, bool) bool) error {
833	return c.ListExperimentsPagesWithContext(aws.BackgroundContext(), input, fn)
834}
835
836// ListExperimentsPagesWithContext same as ListExperimentsPages except
837// it takes a Context and allows setting request options on the pages.
838//
839// The context must be non-nil and will be used for request cancellation. If
840// the context is nil a panic will occur. In the future the SDK may create
841// sub-contexts for http.Requests. See https://golang.org/pkg/context/
842// for more information on using Contexts.
843func (c *FIS) ListExperimentsPagesWithContext(ctx aws.Context, input *ListExperimentsInput, fn func(*ListExperimentsOutput, bool) bool, opts ...request.Option) error {
844	p := request.Pagination{
845		NewRequest: func() (*request.Request, error) {
846			var inCpy *ListExperimentsInput
847			if input != nil {
848				tmp := *input
849				inCpy = &tmp
850			}
851			req, _ := c.ListExperimentsRequest(inCpy)
852			req.SetContext(ctx)
853			req.ApplyOptions(opts...)
854			return req, nil
855		},
856	}
857
858	for p.Next() {
859		if !fn(p.Page().(*ListExperimentsOutput), !p.HasNextPage()) {
860			break
861		}
862	}
863
864	return p.Err()
865}
866
867const opListTagsForResource = "ListTagsForResource"
868
869// ListTagsForResourceRequest generates a "aws/request.Request" representing the
870// client's request for the ListTagsForResource operation. The "output" return
871// value will be populated with the request's response once the request completes
872// successfully.
873//
874// Use "Send" method on the returned Request to send the API call to the service.
875// the "output" return value is not valid until after Send returns without error.
876//
877// See ListTagsForResource for more information on using the ListTagsForResource
878// API call, and error handling.
879//
880// This method is useful when you want to inject custom logic or configuration
881// into the SDK's request lifecycle. Such as custom headers, or retry logic.
882//
883//
884//    // Example sending a request using the ListTagsForResourceRequest method.
885//    req, resp := client.ListTagsForResourceRequest(params)
886//
887//    err := req.Send()
888//    if err == nil { // resp is now filled
889//        fmt.Println(resp)
890//    }
891//
892// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListTagsForResource
893func (c *FIS) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
894	op := &request.Operation{
895		Name:       opListTagsForResource,
896		HTTPMethod: "GET",
897		HTTPPath:   "/tags/{resourceArn}",
898	}
899
900	if input == nil {
901		input = &ListTagsForResourceInput{}
902	}
903
904	output = &ListTagsForResourceOutput{}
905	req = c.newRequest(op, input, output)
906	return
907}
908
909// ListTagsForResource API operation for AWS Fault Injection Simulator.
910//
911// Lists the tags for the specified resource.
912//
913// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
914// with awserr.Error's Code and Message methods to get detailed information about
915// the error.
916//
917// See the AWS API reference guide for AWS Fault Injection Simulator's
918// API operation ListTagsForResource for usage and error information.
919// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/ListTagsForResource
920func (c *FIS) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
921	req, out := c.ListTagsForResourceRequest(input)
922	return out, req.Send()
923}
924
925// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
926// the ability to pass a context and additional request options.
927//
928// See ListTagsForResource for details on how to use this API operation.
929//
930// The context must be non-nil and will be used for request cancellation. If
931// the context is nil a panic will occur. In the future the SDK may create
932// sub-contexts for http.Requests. See https://golang.org/pkg/context/
933// for more information on using Contexts.
934func (c *FIS) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
935	req, out := c.ListTagsForResourceRequest(input)
936	req.SetContext(ctx)
937	req.ApplyOptions(opts...)
938	return out, req.Send()
939}
940
941const opStartExperiment = "StartExperiment"
942
943// StartExperimentRequest generates a "aws/request.Request" representing the
944// client's request for the StartExperiment operation. The "output" return
945// value will be populated with the request's response once the request completes
946// successfully.
947//
948// Use "Send" method on the returned Request to send the API call to the service.
949// the "output" return value is not valid until after Send returns without error.
950//
951// See StartExperiment for more information on using the StartExperiment
952// API call, and error handling.
953//
954// This method is useful when you want to inject custom logic or configuration
955// into the SDK's request lifecycle. Such as custom headers, or retry logic.
956//
957//
958//    // Example sending a request using the StartExperimentRequest method.
959//    req, resp := client.StartExperimentRequest(params)
960//
961//    err := req.Send()
962//    if err == nil { // resp is now filled
963//        fmt.Println(resp)
964//    }
965//
966// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/StartExperiment
967func (c *FIS) StartExperimentRequest(input *StartExperimentInput) (req *request.Request, output *StartExperimentOutput) {
968	op := &request.Operation{
969		Name:       opStartExperiment,
970		HTTPMethod: "POST",
971		HTTPPath:   "/experiments",
972	}
973
974	if input == nil {
975		input = &StartExperimentInput{}
976	}
977
978	output = &StartExperimentOutput{}
979	req = c.newRequest(op, input, output)
980	return
981}
982
983// StartExperiment API operation for AWS Fault Injection Simulator.
984//
985// Starts running an experiment from the specified experiment template.
986//
987// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
988// with awserr.Error's Code and Message methods to get detailed information about
989// the error.
990//
991// See the AWS API reference guide for AWS Fault Injection Simulator's
992// API operation StartExperiment for usage and error information.
993//
994// Returned Error Types:
995//   * ValidationException
996//   The specified input is not valid, or fails to satisfy the constraints for
997//   the request.
998//
999//   * ConflictException
1000//   The request could not be processed because of a conflict.
1001//
1002//   * ResourceNotFoundException
1003//   The specified resource cannot be found.
1004//
1005//   * ServiceQuotaExceededException
1006//   You have exceeded your service quota.
1007//
1008// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/StartExperiment
1009func (c *FIS) StartExperiment(input *StartExperimentInput) (*StartExperimentOutput, error) {
1010	req, out := c.StartExperimentRequest(input)
1011	return out, req.Send()
1012}
1013
1014// StartExperimentWithContext is the same as StartExperiment with the addition of
1015// the ability to pass a context and additional request options.
1016//
1017// See StartExperiment for details on how to use this API operation.
1018//
1019// The context must be non-nil and will be used for request cancellation. If
1020// the context is nil a panic will occur. In the future the SDK may create
1021// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1022// for more information on using Contexts.
1023func (c *FIS) StartExperimentWithContext(ctx aws.Context, input *StartExperimentInput, opts ...request.Option) (*StartExperimentOutput, error) {
1024	req, out := c.StartExperimentRequest(input)
1025	req.SetContext(ctx)
1026	req.ApplyOptions(opts...)
1027	return out, req.Send()
1028}
1029
1030const opStopExperiment = "StopExperiment"
1031
1032// StopExperimentRequest generates a "aws/request.Request" representing the
1033// client's request for the StopExperiment operation. The "output" return
1034// value will be populated with the request's response once the request completes
1035// successfully.
1036//
1037// Use "Send" method on the returned Request to send the API call to the service.
1038// the "output" return value is not valid until after Send returns without error.
1039//
1040// See StopExperiment for more information on using the StopExperiment
1041// API call, and error handling.
1042//
1043// This method is useful when you want to inject custom logic or configuration
1044// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1045//
1046//
1047//    // Example sending a request using the StopExperimentRequest method.
1048//    req, resp := client.StopExperimentRequest(params)
1049//
1050//    err := req.Send()
1051//    if err == nil { // resp is now filled
1052//        fmt.Println(resp)
1053//    }
1054//
1055// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/StopExperiment
1056func (c *FIS) StopExperimentRequest(input *StopExperimentInput) (req *request.Request, output *StopExperimentOutput) {
1057	op := &request.Operation{
1058		Name:       opStopExperiment,
1059		HTTPMethod: "DELETE",
1060		HTTPPath:   "/experiments/{id}",
1061	}
1062
1063	if input == nil {
1064		input = &StopExperimentInput{}
1065	}
1066
1067	output = &StopExperimentOutput{}
1068	req = c.newRequest(op, input, output)
1069	return
1070}
1071
1072// StopExperiment API operation for AWS Fault Injection Simulator.
1073//
1074// Stops the specified experiment.
1075//
1076// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1077// with awserr.Error's Code and Message methods to get detailed information about
1078// the error.
1079//
1080// See the AWS API reference guide for AWS Fault Injection Simulator's
1081// API operation StopExperiment for usage and error information.
1082//
1083// Returned Error Types:
1084//   * ValidationException
1085//   The specified input is not valid, or fails to satisfy the constraints for
1086//   the request.
1087//
1088//   * ResourceNotFoundException
1089//   The specified resource cannot be found.
1090//
1091// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/StopExperiment
1092func (c *FIS) StopExperiment(input *StopExperimentInput) (*StopExperimentOutput, error) {
1093	req, out := c.StopExperimentRequest(input)
1094	return out, req.Send()
1095}
1096
1097// StopExperimentWithContext is the same as StopExperiment with the addition of
1098// the ability to pass a context and additional request options.
1099//
1100// See StopExperiment for details on how to use this API operation.
1101//
1102// The context must be non-nil and will be used for request cancellation. If
1103// the context is nil a panic will occur. In the future the SDK may create
1104// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1105// for more information on using Contexts.
1106func (c *FIS) StopExperimentWithContext(ctx aws.Context, input *StopExperimentInput, opts ...request.Option) (*StopExperimentOutput, error) {
1107	req, out := c.StopExperimentRequest(input)
1108	req.SetContext(ctx)
1109	req.ApplyOptions(opts...)
1110	return out, req.Send()
1111}
1112
1113const opTagResource = "TagResource"
1114
1115// TagResourceRequest generates a "aws/request.Request" representing the
1116// client's request for the TagResource operation. The "output" return
1117// value will be populated with the request's response once the request completes
1118// successfully.
1119//
1120// Use "Send" method on the returned Request to send the API call to the service.
1121// the "output" return value is not valid until after Send returns without error.
1122//
1123// See TagResource for more information on using the TagResource
1124// API call, and error handling.
1125//
1126// This method is useful when you want to inject custom logic or configuration
1127// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1128//
1129//
1130//    // Example sending a request using the TagResourceRequest method.
1131//    req, resp := client.TagResourceRequest(params)
1132//
1133//    err := req.Send()
1134//    if err == nil { // resp is now filled
1135//        fmt.Println(resp)
1136//    }
1137//
1138// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/TagResource
1139func (c *FIS) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
1140	op := &request.Operation{
1141		Name:       opTagResource,
1142		HTTPMethod: "POST",
1143		HTTPPath:   "/tags/{resourceArn}",
1144	}
1145
1146	if input == nil {
1147		input = &TagResourceInput{}
1148	}
1149
1150	output = &TagResourceOutput{}
1151	req = c.newRequest(op, input, output)
1152	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1153	return
1154}
1155
1156// TagResource API operation for AWS Fault Injection Simulator.
1157//
1158// Applies the specified tags to the specified resource.
1159//
1160// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1161// with awserr.Error's Code and Message methods to get detailed information about
1162// the error.
1163//
1164// See the AWS API reference guide for AWS Fault Injection Simulator's
1165// API operation TagResource for usage and error information.
1166// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/TagResource
1167func (c *FIS) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
1168	req, out := c.TagResourceRequest(input)
1169	return out, req.Send()
1170}
1171
1172// TagResourceWithContext is the same as TagResource with the addition of
1173// the ability to pass a context and additional request options.
1174//
1175// See TagResource for details on how to use this API operation.
1176//
1177// The context must be non-nil and will be used for request cancellation. If
1178// the context is nil a panic will occur. In the future the SDK may create
1179// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1180// for more information on using Contexts.
1181func (c *FIS) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
1182	req, out := c.TagResourceRequest(input)
1183	req.SetContext(ctx)
1184	req.ApplyOptions(opts...)
1185	return out, req.Send()
1186}
1187
1188const opUntagResource = "UntagResource"
1189
1190// UntagResourceRequest generates a "aws/request.Request" representing the
1191// client's request for the UntagResource operation. The "output" return
1192// value will be populated with the request's response once the request completes
1193// successfully.
1194//
1195// Use "Send" method on the returned Request to send the API call to the service.
1196// the "output" return value is not valid until after Send returns without error.
1197//
1198// See UntagResource for more information on using the UntagResource
1199// API call, and error handling.
1200//
1201// This method is useful when you want to inject custom logic or configuration
1202// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1203//
1204//
1205//    // Example sending a request using the UntagResourceRequest method.
1206//    req, resp := client.UntagResourceRequest(params)
1207//
1208//    err := req.Send()
1209//    if err == nil { // resp is now filled
1210//        fmt.Println(resp)
1211//    }
1212//
1213// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/UntagResource
1214func (c *FIS) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
1215	op := &request.Operation{
1216		Name:       opUntagResource,
1217		HTTPMethod: "DELETE",
1218		HTTPPath:   "/tags/{resourceArn}",
1219	}
1220
1221	if input == nil {
1222		input = &UntagResourceInput{}
1223	}
1224
1225	output = &UntagResourceOutput{}
1226	req = c.newRequest(op, input, output)
1227	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1228	return
1229}
1230
1231// UntagResource API operation for AWS Fault Injection Simulator.
1232//
1233// Removes the specified tags from the specified resource.
1234//
1235// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1236// with awserr.Error's Code and Message methods to get detailed information about
1237// the error.
1238//
1239// See the AWS API reference guide for AWS Fault Injection Simulator's
1240// API operation UntagResource for usage and error information.
1241// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/UntagResource
1242func (c *FIS) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
1243	req, out := c.UntagResourceRequest(input)
1244	return out, req.Send()
1245}
1246
1247// UntagResourceWithContext is the same as UntagResource with the addition of
1248// the ability to pass a context and additional request options.
1249//
1250// See UntagResource for details on how to use this API operation.
1251//
1252// The context must be non-nil and will be used for request cancellation. If
1253// the context is nil a panic will occur. In the future the SDK may create
1254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1255// for more information on using Contexts.
1256func (c *FIS) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
1257	req, out := c.UntagResourceRequest(input)
1258	req.SetContext(ctx)
1259	req.ApplyOptions(opts...)
1260	return out, req.Send()
1261}
1262
1263const opUpdateExperimentTemplate = "UpdateExperimentTemplate"
1264
1265// UpdateExperimentTemplateRequest generates a "aws/request.Request" representing the
1266// client's request for the UpdateExperimentTemplate operation. The "output" return
1267// value will be populated with the request's response once the request completes
1268// successfully.
1269//
1270// Use "Send" method on the returned Request to send the API call to the service.
1271// the "output" return value is not valid until after Send returns without error.
1272//
1273// See UpdateExperimentTemplate for more information on using the UpdateExperimentTemplate
1274// API call, and error handling.
1275//
1276// This method is useful when you want to inject custom logic or configuration
1277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1278//
1279//
1280//    // Example sending a request using the UpdateExperimentTemplateRequest method.
1281//    req, resp := client.UpdateExperimentTemplateRequest(params)
1282//
1283//    err := req.Send()
1284//    if err == nil { // resp is now filled
1285//        fmt.Println(resp)
1286//    }
1287//
1288// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/UpdateExperimentTemplate
1289func (c *FIS) UpdateExperimentTemplateRequest(input *UpdateExperimentTemplateInput) (req *request.Request, output *UpdateExperimentTemplateOutput) {
1290	op := &request.Operation{
1291		Name:       opUpdateExperimentTemplate,
1292		HTTPMethod: "PATCH",
1293		HTTPPath:   "/experimentTemplates/{id}",
1294	}
1295
1296	if input == nil {
1297		input = &UpdateExperimentTemplateInput{}
1298	}
1299
1300	output = &UpdateExperimentTemplateOutput{}
1301	req = c.newRequest(op, input, output)
1302	return
1303}
1304
1305// UpdateExperimentTemplate API operation for AWS Fault Injection Simulator.
1306//
1307// Updates the specified experiment template.
1308//
1309// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1310// with awserr.Error's Code and Message methods to get detailed information about
1311// the error.
1312//
1313// See the AWS API reference guide for AWS Fault Injection Simulator's
1314// API operation UpdateExperimentTemplate for usage and error information.
1315//
1316// Returned Error Types:
1317//   * ValidationException
1318//   The specified input is not valid, or fails to satisfy the constraints for
1319//   the request.
1320//
1321//   * ResourceNotFoundException
1322//   The specified resource cannot be found.
1323//
1324//   * ServiceQuotaExceededException
1325//   You have exceeded your service quota.
1326//
1327// See also, https://docs.aws.amazon.com/goto/WebAPI/fis-2020-12-01/UpdateExperimentTemplate
1328func (c *FIS) UpdateExperimentTemplate(input *UpdateExperimentTemplateInput) (*UpdateExperimentTemplateOutput, error) {
1329	req, out := c.UpdateExperimentTemplateRequest(input)
1330	return out, req.Send()
1331}
1332
1333// UpdateExperimentTemplateWithContext is the same as UpdateExperimentTemplate with the addition of
1334// the ability to pass a context and additional request options.
1335//
1336// See UpdateExperimentTemplate for details on how to use this API operation.
1337//
1338// The context must be non-nil and will be used for request cancellation. If
1339// the context is nil a panic will occur. In the future the SDK may create
1340// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1341// for more information on using Contexts.
1342func (c *FIS) UpdateExperimentTemplateWithContext(ctx aws.Context, input *UpdateExperimentTemplateInput, opts ...request.Option) (*UpdateExperimentTemplateOutput, error) {
1343	req, out := c.UpdateExperimentTemplateRequest(input)
1344	req.SetContext(ctx)
1345	req.ApplyOptions(opts...)
1346	return out, req.Send()
1347}
1348
1349// Describes an action. For more information, see AWS FIS actions (https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html)
1350// in the AWS Fault Injection Simulator User Guide.
1351type Action struct {
1352	_ struct{} `type:"structure"`
1353
1354	// The description for the action.
1355	Description *string `locationName:"description" type:"string"`
1356
1357	// The ID of the action.
1358	Id *string `locationName:"id" type:"string"`
1359
1360	// The action parameters, if applicable.
1361	Parameters map[string]*ActionParameter `locationName:"parameters" type:"map"`
1362
1363	// The tags for the action.
1364	Tags map[string]*string `locationName:"tags" type:"map"`
1365
1366	// The supported targets for the action.
1367	Targets map[string]*ActionTarget `locationName:"targets" type:"map"`
1368}
1369
1370// String returns the string representation.
1371//
1372// API parameter values that are decorated as "sensitive" in the API will not
1373// be included in the string output. The member name will be present, but the
1374// value will be replaced with "sensitive".
1375func (s Action) String() string {
1376	return awsutil.Prettify(s)
1377}
1378
1379// GoString returns the string representation.
1380//
1381// API parameter values that are decorated as "sensitive" in the API will not
1382// be included in the string output. The member name will be present, but the
1383// value will be replaced with "sensitive".
1384func (s Action) GoString() string {
1385	return s.String()
1386}
1387
1388// SetDescription sets the Description field's value.
1389func (s *Action) SetDescription(v string) *Action {
1390	s.Description = &v
1391	return s
1392}
1393
1394// SetId sets the Id field's value.
1395func (s *Action) SetId(v string) *Action {
1396	s.Id = &v
1397	return s
1398}
1399
1400// SetParameters sets the Parameters field's value.
1401func (s *Action) SetParameters(v map[string]*ActionParameter) *Action {
1402	s.Parameters = v
1403	return s
1404}
1405
1406// SetTags sets the Tags field's value.
1407func (s *Action) SetTags(v map[string]*string) *Action {
1408	s.Tags = v
1409	return s
1410}
1411
1412// SetTargets sets the Targets field's value.
1413func (s *Action) SetTargets(v map[string]*ActionTarget) *Action {
1414	s.Targets = v
1415	return s
1416}
1417
1418// Describes a parameter for an action.
1419type ActionParameter struct {
1420	_ struct{} `type:"structure"`
1421
1422	// The parameter description.
1423	Description *string `locationName:"description" type:"string"`
1424
1425	// Indicates whether the parameter is required.
1426	Required *bool `locationName:"required" type:"boolean"`
1427}
1428
1429// String returns the string representation.
1430//
1431// API parameter values that are decorated as "sensitive" in the API will not
1432// be included in the string output. The member name will be present, but the
1433// value will be replaced with "sensitive".
1434func (s ActionParameter) String() string {
1435	return awsutil.Prettify(s)
1436}
1437
1438// GoString returns the string representation.
1439//
1440// API parameter values that are decorated as "sensitive" in the API will not
1441// be included in the string output. The member name will be present, but the
1442// value will be replaced with "sensitive".
1443func (s ActionParameter) GoString() string {
1444	return s.String()
1445}
1446
1447// SetDescription sets the Description field's value.
1448func (s *ActionParameter) SetDescription(v string) *ActionParameter {
1449	s.Description = &v
1450	return s
1451}
1452
1453// SetRequired sets the Required field's value.
1454func (s *ActionParameter) SetRequired(v bool) *ActionParameter {
1455	s.Required = &v
1456	return s
1457}
1458
1459// Provides a summary of an action.
1460type ActionSummary struct {
1461	_ struct{} `type:"structure"`
1462
1463	// The description for the action.
1464	Description *string `locationName:"description" type:"string"`
1465
1466	// The ID of the action.
1467	Id *string `locationName:"id" type:"string"`
1468
1469	// The tags for the action.
1470	Tags map[string]*string `locationName:"tags" type:"map"`
1471
1472	// The targets for the action.
1473	Targets map[string]*ActionTarget `locationName:"targets" type:"map"`
1474}
1475
1476// String returns the string representation.
1477//
1478// API parameter values that are decorated as "sensitive" in the API will not
1479// be included in the string output. The member name will be present, but the
1480// value will be replaced with "sensitive".
1481func (s ActionSummary) String() string {
1482	return awsutil.Prettify(s)
1483}
1484
1485// GoString returns the string representation.
1486//
1487// API parameter values that are decorated as "sensitive" in the API will not
1488// be included in the string output. The member name will be present, but the
1489// value will be replaced with "sensitive".
1490func (s ActionSummary) GoString() string {
1491	return s.String()
1492}
1493
1494// SetDescription sets the Description field's value.
1495func (s *ActionSummary) SetDescription(v string) *ActionSummary {
1496	s.Description = &v
1497	return s
1498}
1499
1500// SetId sets the Id field's value.
1501func (s *ActionSummary) SetId(v string) *ActionSummary {
1502	s.Id = &v
1503	return s
1504}
1505
1506// SetTags sets the Tags field's value.
1507func (s *ActionSummary) SetTags(v map[string]*string) *ActionSummary {
1508	s.Tags = v
1509	return s
1510}
1511
1512// SetTargets sets the Targets field's value.
1513func (s *ActionSummary) SetTargets(v map[string]*ActionTarget) *ActionSummary {
1514	s.Targets = v
1515	return s
1516}
1517
1518// Describes a target for an action.
1519type ActionTarget struct {
1520	_ struct{} `type:"structure"`
1521
1522	// The resource type of the target.
1523	ResourceType *string `locationName:"resourceType" type:"string"`
1524}
1525
1526// String returns the string representation.
1527//
1528// API parameter values that are decorated as "sensitive" in the API will not
1529// be included in the string output. The member name will be present, but the
1530// value will be replaced with "sensitive".
1531func (s ActionTarget) String() string {
1532	return awsutil.Prettify(s)
1533}
1534
1535// GoString returns the string representation.
1536//
1537// API parameter values that are decorated as "sensitive" in the API will not
1538// be included in the string output. The member name will be present, but the
1539// value will be replaced with "sensitive".
1540func (s ActionTarget) GoString() string {
1541	return s.String()
1542}
1543
1544// SetResourceType sets the ResourceType field's value.
1545func (s *ActionTarget) SetResourceType(v string) *ActionTarget {
1546	s.ResourceType = &v
1547	return s
1548}
1549
1550// The request could not be processed because of a conflict.
1551type ConflictException struct {
1552	_            struct{}                  `type:"structure"`
1553	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1554
1555	Message_ *string `locationName:"message" type:"string"`
1556}
1557
1558// String returns the string representation.
1559//
1560// API parameter values that are decorated as "sensitive" in the API will not
1561// be included in the string output. The member name will be present, but the
1562// value will be replaced with "sensitive".
1563func (s ConflictException) String() string {
1564	return awsutil.Prettify(s)
1565}
1566
1567// GoString returns the string representation.
1568//
1569// API parameter values that are decorated as "sensitive" in the API will not
1570// be included in the string output. The member name will be present, but the
1571// value will be replaced with "sensitive".
1572func (s ConflictException) GoString() string {
1573	return s.String()
1574}
1575
1576func newErrorConflictException(v protocol.ResponseMetadata) error {
1577	return &ConflictException{
1578		RespMetadata: v,
1579	}
1580}
1581
1582// Code returns the exception type name.
1583func (s *ConflictException) Code() string {
1584	return "ConflictException"
1585}
1586
1587// Message returns the exception's message.
1588func (s *ConflictException) Message() string {
1589	if s.Message_ != nil {
1590		return *s.Message_
1591	}
1592	return ""
1593}
1594
1595// OrigErr always returns nil, satisfies awserr.Error interface.
1596func (s *ConflictException) OrigErr() error {
1597	return nil
1598}
1599
1600func (s *ConflictException) Error() string {
1601	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1602}
1603
1604// Status code returns the HTTP status code for the request's response error.
1605func (s *ConflictException) StatusCode() int {
1606	return s.RespMetadata.StatusCode
1607}
1608
1609// RequestID returns the service's response RequestID for request.
1610func (s *ConflictException) RequestID() string {
1611	return s.RespMetadata.RequestID
1612}
1613
1614// Specifies an action for an experiment template.
1615type CreateExperimentTemplateActionInput struct {
1616	_ struct{} `type:"structure"`
1617
1618	// The ID of the action.
1619	//
1620	// ActionId is a required field
1621	ActionId *string `locationName:"actionId" type:"string" required:"true"`
1622
1623	// A description for the action.
1624	Description *string `locationName:"description" type:"string"`
1625
1626	// The parameters for the action, if applicable.
1627	Parameters map[string]*string `locationName:"parameters" type:"map"`
1628
1629	// The name of the action that must be completed before the current action starts.
1630	// Omit this parameter to run the action at the start of the experiment.
1631	StartAfter []*string `locationName:"startAfter" type:"list"`
1632
1633	// The targets for the action.
1634	Targets map[string]*string `locationName:"targets" type:"map"`
1635}
1636
1637// String returns the string representation.
1638//
1639// API parameter values that are decorated as "sensitive" in the API will not
1640// be included in the string output. The member name will be present, but the
1641// value will be replaced with "sensitive".
1642func (s CreateExperimentTemplateActionInput) String() string {
1643	return awsutil.Prettify(s)
1644}
1645
1646// GoString returns the string representation.
1647//
1648// API parameter values that are decorated as "sensitive" in the API will not
1649// be included in the string output. The member name will be present, but the
1650// value will be replaced with "sensitive".
1651func (s CreateExperimentTemplateActionInput) GoString() string {
1652	return s.String()
1653}
1654
1655// Validate inspects the fields of the type to determine if they are valid.
1656func (s *CreateExperimentTemplateActionInput) Validate() error {
1657	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateActionInput"}
1658	if s.ActionId == nil {
1659		invalidParams.Add(request.NewErrParamRequired("ActionId"))
1660	}
1661
1662	if invalidParams.Len() > 0 {
1663		return invalidParams
1664	}
1665	return nil
1666}
1667
1668// SetActionId sets the ActionId field's value.
1669func (s *CreateExperimentTemplateActionInput) SetActionId(v string) *CreateExperimentTemplateActionInput {
1670	s.ActionId = &v
1671	return s
1672}
1673
1674// SetDescription sets the Description field's value.
1675func (s *CreateExperimentTemplateActionInput) SetDescription(v string) *CreateExperimentTemplateActionInput {
1676	s.Description = &v
1677	return s
1678}
1679
1680// SetParameters sets the Parameters field's value.
1681func (s *CreateExperimentTemplateActionInput) SetParameters(v map[string]*string) *CreateExperimentTemplateActionInput {
1682	s.Parameters = v
1683	return s
1684}
1685
1686// SetStartAfter sets the StartAfter field's value.
1687func (s *CreateExperimentTemplateActionInput) SetStartAfter(v []*string) *CreateExperimentTemplateActionInput {
1688	s.StartAfter = v
1689	return s
1690}
1691
1692// SetTargets sets the Targets field's value.
1693func (s *CreateExperimentTemplateActionInput) SetTargets(v map[string]*string) *CreateExperimentTemplateActionInput {
1694	s.Targets = v
1695	return s
1696}
1697
1698type CreateExperimentTemplateInput struct {
1699	_ struct{} `type:"structure"`
1700
1701	// The actions for the experiment.
1702	//
1703	// Actions is a required field
1704	Actions map[string]*CreateExperimentTemplateActionInput `locationName:"actions" type:"map" required:"true"`
1705
1706	// Unique, case-sensitive identifier that you provide to ensure the idempotency
1707	// of the request.
1708	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`
1709
1710	// A description for the experiment template. Can contain up to 64 letters (A-Z
1711	// and a-z).
1712	//
1713	// Description is a required field
1714	Description *string `locationName:"description" type:"string" required:"true"`
1715
1716	// The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service
1717	// permission to perform service actions on your behalf.
1718	//
1719	// RoleArn is a required field
1720	RoleArn *string `locationName:"roleArn" min:"20" type:"string" required:"true"`
1721
1722	// The stop conditions.
1723	//
1724	// StopConditions is a required field
1725	StopConditions []*CreateExperimentTemplateStopConditionInput `locationName:"stopConditions" type:"list" required:"true"`
1726
1727	// The tags to apply to the experiment template.
1728	Tags map[string]*string `locationName:"tags" type:"map"`
1729
1730	// The targets for the experiment.
1731	Targets map[string]*CreateExperimentTemplateTargetInput `locationName:"targets" type:"map"`
1732}
1733
1734// String returns the string representation.
1735//
1736// API parameter values that are decorated as "sensitive" in the API will not
1737// be included in the string output. The member name will be present, but the
1738// value will be replaced with "sensitive".
1739func (s CreateExperimentTemplateInput) String() string {
1740	return awsutil.Prettify(s)
1741}
1742
1743// GoString returns the string representation.
1744//
1745// API parameter values that are decorated as "sensitive" in the API will not
1746// be included in the string output. The member name will be present, but the
1747// value will be replaced with "sensitive".
1748func (s CreateExperimentTemplateInput) GoString() string {
1749	return s.String()
1750}
1751
1752// Validate inspects the fields of the type to determine if they are valid.
1753func (s *CreateExperimentTemplateInput) Validate() error {
1754	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateInput"}
1755	if s.Actions == nil {
1756		invalidParams.Add(request.NewErrParamRequired("Actions"))
1757	}
1758	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
1759		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
1760	}
1761	if s.Description == nil {
1762		invalidParams.Add(request.NewErrParamRequired("Description"))
1763	}
1764	if s.RoleArn == nil {
1765		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
1766	}
1767	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
1768		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
1769	}
1770	if s.StopConditions == nil {
1771		invalidParams.Add(request.NewErrParamRequired("StopConditions"))
1772	}
1773	if s.Actions != nil {
1774		for i, v := range s.Actions {
1775			if v == nil {
1776				continue
1777			}
1778			if err := v.Validate(); err != nil {
1779				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
1780			}
1781		}
1782	}
1783	if s.StopConditions != nil {
1784		for i, v := range s.StopConditions {
1785			if v == nil {
1786				continue
1787			}
1788			if err := v.Validate(); err != nil {
1789				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StopConditions", i), err.(request.ErrInvalidParams))
1790			}
1791		}
1792	}
1793	if s.Targets != nil {
1794		for i, v := range s.Targets {
1795			if v == nil {
1796				continue
1797			}
1798			if err := v.Validate(); err != nil {
1799				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
1800			}
1801		}
1802	}
1803
1804	if invalidParams.Len() > 0 {
1805		return invalidParams
1806	}
1807	return nil
1808}
1809
1810// SetActions sets the Actions field's value.
1811func (s *CreateExperimentTemplateInput) SetActions(v map[string]*CreateExperimentTemplateActionInput) *CreateExperimentTemplateInput {
1812	s.Actions = v
1813	return s
1814}
1815
1816// SetClientToken sets the ClientToken field's value.
1817func (s *CreateExperimentTemplateInput) SetClientToken(v string) *CreateExperimentTemplateInput {
1818	s.ClientToken = &v
1819	return s
1820}
1821
1822// SetDescription sets the Description field's value.
1823func (s *CreateExperimentTemplateInput) SetDescription(v string) *CreateExperimentTemplateInput {
1824	s.Description = &v
1825	return s
1826}
1827
1828// SetRoleArn sets the RoleArn field's value.
1829func (s *CreateExperimentTemplateInput) SetRoleArn(v string) *CreateExperimentTemplateInput {
1830	s.RoleArn = &v
1831	return s
1832}
1833
1834// SetStopConditions sets the StopConditions field's value.
1835func (s *CreateExperimentTemplateInput) SetStopConditions(v []*CreateExperimentTemplateStopConditionInput) *CreateExperimentTemplateInput {
1836	s.StopConditions = v
1837	return s
1838}
1839
1840// SetTags sets the Tags field's value.
1841func (s *CreateExperimentTemplateInput) SetTags(v map[string]*string) *CreateExperimentTemplateInput {
1842	s.Tags = v
1843	return s
1844}
1845
1846// SetTargets sets the Targets field's value.
1847func (s *CreateExperimentTemplateInput) SetTargets(v map[string]*CreateExperimentTemplateTargetInput) *CreateExperimentTemplateInput {
1848	s.Targets = v
1849	return s
1850}
1851
1852type CreateExperimentTemplateOutput struct {
1853	_ struct{} `type:"structure"`
1854
1855	// Information about the experiment template.
1856	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
1857}
1858
1859// String returns the string representation.
1860//
1861// API parameter values that are decorated as "sensitive" in the API will not
1862// be included in the string output. The member name will be present, but the
1863// value will be replaced with "sensitive".
1864func (s CreateExperimentTemplateOutput) String() string {
1865	return awsutil.Prettify(s)
1866}
1867
1868// GoString returns the string representation.
1869//
1870// API parameter values that are decorated as "sensitive" in the API will not
1871// be included in the string output. The member name will be present, but the
1872// value will be replaced with "sensitive".
1873func (s CreateExperimentTemplateOutput) GoString() string {
1874	return s.String()
1875}
1876
1877// SetExperimentTemplate sets the ExperimentTemplate field's value.
1878func (s *CreateExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *CreateExperimentTemplateOutput {
1879	s.ExperimentTemplate = v
1880	return s
1881}
1882
1883// Specifies a stop condition for an experiment template.
1884type CreateExperimentTemplateStopConditionInput struct {
1885	_ struct{} `type:"structure"`
1886
1887	// The source for the stop condition. Specify aws:cloudwatch:alarm if the stop
1888	// condition is defined by a CloudWatch alarm. Specify none if there is no stop
1889	// condition.
1890	//
1891	// Source is a required field
1892	Source *string `locationName:"source" type:"string" required:"true"`
1893
1894	// The Amazon Resource Name (ARN) of the CloudWatch alarm. This is required
1895	// if the source is a CloudWatch alarm.
1896	Value *string `locationName:"value" min:"20" type:"string"`
1897}
1898
1899// String returns the string representation.
1900//
1901// API parameter values that are decorated as "sensitive" in the API will not
1902// be included in the string output. The member name will be present, but the
1903// value will be replaced with "sensitive".
1904func (s CreateExperimentTemplateStopConditionInput) String() string {
1905	return awsutil.Prettify(s)
1906}
1907
1908// GoString returns the string representation.
1909//
1910// API parameter values that are decorated as "sensitive" in the API will not
1911// be included in the string output. The member name will be present, but the
1912// value will be replaced with "sensitive".
1913func (s CreateExperimentTemplateStopConditionInput) GoString() string {
1914	return s.String()
1915}
1916
1917// Validate inspects the fields of the type to determine if they are valid.
1918func (s *CreateExperimentTemplateStopConditionInput) Validate() error {
1919	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateStopConditionInput"}
1920	if s.Source == nil {
1921		invalidParams.Add(request.NewErrParamRequired("Source"))
1922	}
1923	if s.Value != nil && len(*s.Value) < 20 {
1924		invalidParams.Add(request.NewErrParamMinLen("Value", 20))
1925	}
1926
1927	if invalidParams.Len() > 0 {
1928		return invalidParams
1929	}
1930	return nil
1931}
1932
1933// SetSource sets the Source field's value.
1934func (s *CreateExperimentTemplateStopConditionInput) SetSource(v string) *CreateExperimentTemplateStopConditionInput {
1935	s.Source = &v
1936	return s
1937}
1938
1939// SetValue sets the Value field's value.
1940func (s *CreateExperimentTemplateStopConditionInput) SetValue(v string) *CreateExperimentTemplateStopConditionInput {
1941	s.Value = &v
1942	return s
1943}
1944
1945// Specifies a target for an experiment. You must specify at least one Amazon
1946// Resource Name (ARN) or at least one resource tag. You cannot specify both
1947// ARNs and tags.
1948type CreateExperimentTemplateTargetInput struct {
1949	_ struct{} `type:"structure"`
1950
1951	// The filters to apply to identify target resources using specific attributes.
1952	Filters []*ExperimentTemplateTargetInputFilter `locationName:"filters" type:"list"`
1953
1954	// The Amazon Resource Names (ARNs) of the resources.
1955	ResourceArns []*string `locationName:"resourceArns" type:"list"`
1956
1957	// The tags for the target resources.
1958	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
1959
1960	// The AWS resource type. The resource type must be supported for the specified
1961	// action.
1962	//
1963	// ResourceType is a required field
1964	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
1965
1966	// Scopes the identified resources to a specific count of the resources at random,
1967	// or a percentage of the resources. All identified resources are included in
1968	// the target.
1969	//
1970	//    * ALL - Run the action on all identified targets. This is the default.
1971	//
1972	//    * COUNT(n) - Run the action on the specified number of targets, chosen
1973	//    from the identified targets at random. For example, COUNT(1) selects one
1974	//    of the targets.
1975	//
1976	//    * PERCENT(n) - Run the action on the specified percentage of targets,
1977	//    chosen from the identified targets at random. For example, PERCENT(25)
1978	//    selects 25% of the targets.
1979	//
1980	// SelectionMode is a required field
1981	SelectionMode *string `locationName:"selectionMode" type:"string" required:"true"`
1982}
1983
1984// String returns the string representation.
1985//
1986// API parameter values that are decorated as "sensitive" in the API will not
1987// be included in the string output. The member name will be present, but the
1988// value will be replaced with "sensitive".
1989func (s CreateExperimentTemplateTargetInput) String() string {
1990	return awsutil.Prettify(s)
1991}
1992
1993// GoString returns the string representation.
1994//
1995// API parameter values that are decorated as "sensitive" in the API will not
1996// be included in the string output. The member name will be present, but the
1997// value will be replaced with "sensitive".
1998func (s CreateExperimentTemplateTargetInput) GoString() string {
1999	return s.String()
2000}
2001
2002// Validate inspects the fields of the type to determine if they are valid.
2003func (s *CreateExperimentTemplateTargetInput) Validate() error {
2004	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateTargetInput"}
2005	if s.ResourceType == nil {
2006		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
2007	}
2008	if s.SelectionMode == nil {
2009		invalidParams.Add(request.NewErrParamRequired("SelectionMode"))
2010	}
2011	if s.Filters != nil {
2012		for i, v := range s.Filters {
2013			if v == nil {
2014				continue
2015			}
2016			if err := v.Validate(); err != nil {
2017				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
2018			}
2019		}
2020	}
2021
2022	if invalidParams.Len() > 0 {
2023		return invalidParams
2024	}
2025	return nil
2026}
2027
2028// SetFilters sets the Filters field's value.
2029func (s *CreateExperimentTemplateTargetInput) SetFilters(v []*ExperimentTemplateTargetInputFilter) *CreateExperimentTemplateTargetInput {
2030	s.Filters = v
2031	return s
2032}
2033
2034// SetResourceArns sets the ResourceArns field's value.
2035func (s *CreateExperimentTemplateTargetInput) SetResourceArns(v []*string) *CreateExperimentTemplateTargetInput {
2036	s.ResourceArns = v
2037	return s
2038}
2039
2040// SetResourceTags sets the ResourceTags field's value.
2041func (s *CreateExperimentTemplateTargetInput) SetResourceTags(v map[string]*string) *CreateExperimentTemplateTargetInput {
2042	s.ResourceTags = v
2043	return s
2044}
2045
2046// SetResourceType sets the ResourceType field's value.
2047func (s *CreateExperimentTemplateTargetInput) SetResourceType(v string) *CreateExperimentTemplateTargetInput {
2048	s.ResourceType = &v
2049	return s
2050}
2051
2052// SetSelectionMode sets the SelectionMode field's value.
2053func (s *CreateExperimentTemplateTargetInput) SetSelectionMode(v string) *CreateExperimentTemplateTargetInput {
2054	s.SelectionMode = &v
2055	return s
2056}
2057
2058type DeleteExperimentTemplateInput struct {
2059	_ struct{} `type:"structure" nopayload:"true"`
2060
2061	// The ID of the experiment template.
2062	//
2063	// Id is a required field
2064	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
2065}
2066
2067// String returns the string representation.
2068//
2069// API parameter values that are decorated as "sensitive" in the API will not
2070// be included in the string output. The member name will be present, but the
2071// value will be replaced with "sensitive".
2072func (s DeleteExperimentTemplateInput) String() string {
2073	return awsutil.Prettify(s)
2074}
2075
2076// GoString returns the string representation.
2077//
2078// API parameter values that are decorated as "sensitive" in the API will not
2079// be included in the string output. The member name will be present, but the
2080// value will be replaced with "sensitive".
2081func (s DeleteExperimentTemplateInput) GoString() string {
2082	return s.String()
2083}
2084
2085// Validate inspects the fields of the type to determine if they are valid.
2086func (s *DeleteExperimentTemplateInput) Validate() error {
2087	invalidParams := request.ErrInvalidParams{Context: "DeleteExperimentTemplateInput"}
2088	if s.Id == nil {
2089		invalidParams.Add(request.NewErrParamRequired("Id"))
2090	}
2091	if s.Id != nil && len(*s.Id) < 1 {
2092		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
2093	}
2094
2095	if invalidParams.Len() > 0 {
2096		return invalidParams
2097	}
2098	return nil
2099}
2100
2101// SetId sets the Id field's value.
2102func (s *DeleteExperimentTemplateInput) SetId(v string) *DeleteExperimentTemplateInput {
2103	s.Id = &v
2104	return s
2105}
2106
2107type DeleteExperimentTemplateOutput struct {
2108	_ struct{} `type:"structure"`
2109
2110	// Information about the experiment template.
2111	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
2112}
2113
2114// String returns the string representation.
2115//
2116// API parameter values that are decorated as "sensitive" in the API will not
2117// be included in the string output. The member name will be present, but the
2118// value will be replaced with "sensitive".
2119func (s DeleteExperimentTemplateOutput) String() string {
2120	return awsutil.Prettify(s)
2121}
2122
2123// GoString returns the string representation.
2124//
2125// API parameter values that are decorated as "sensitive" in the API will not
2126// be included in the string output. The member name will be present, but the
2127// value will be replaced with "sensitive".
2128func (s DeleteExperimentTemplateOutput) GoString() string {
2129	return s.String()
2130}
2131
2132// SetExperimentTemplate sets the ExperimentTemplate field's value.
2133func (s *DeleteExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *DeleteExperimentTemplateOutput {
2134	s.ExperimentTemplate = v
2135	return s
2136}
2137
2138// Describes an experiment.
2139type Experiment struct {
2140	_ struct{} `type:"structure"`
2141
2142	// The actions for the experiment.
2143	Actions map[string]*ExperimentAction `locationName:"actions" type:"map"`
2144
2145	// The time the experiment was created.
2146	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2147
2148	// The time that the experiment ended.
2149	EndTime *time.Time `locationName:"endTime" type:"timestamp"`
2150
2151	// The ID of the experiment template.
2152	ExperimentTemplateId *string `locationName:"experimentTemplateId" type:"string"`
2153
2154	// The ID of the experiment.
2155	Id *string `locationName:"id" type:"string"`
2156
2157	// The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service
2158	// permission to perform service actions on your behalf.
2159	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`
2160
2161	// The time that the experiment was started.
2162	StartTime *time.Time `locationName:"startTime" type:"timestamp"`
2163
2164	// The state of the experiment.
2165	State *ExperimentState `locationName:"state" type:"structure"`
2166
2167	// The stop conditions for the experiment.
2168	StopConditions []*ExperimentStopCondition `locationName:"stopConditions" type:"list"`
2169
2170	// The tags for the experiment.
2171	Tags map[string]*string `locationName:"tags" type:"map"`
2172
2173	// The targets for the experiment.
2174	Targets map[string]*ExperimentTarget `locationName:"targets" type:"map"`
2175}
2176
2177// String returns the string representation.
2178//
2179// API parameter values that are decorated as "sensitive" in the API will not
2180// be included in the string output. The member name will be present, but the
2181// value will be replaced with "sensitive".
2182func (s Experiment) String() string {
2183	return awsutil.Prettify(s)
2184}
2185
2186// GoString returns the string representation.
2187//
2188// API parameter values that are decorated as "sensitive" in the API will not
2189// be included in the string output. The member name will be present, but the
2190// value will be replaced with "sensitive".
2191func (s Experiment) GoString() string {
2192	return s.String()
2193}
2194
2195// SetActions sets the Actions field's value.
2196func (s *Experiment) SetActions(v map[string]*ExperimentAction) *Experiment {
2197	s.Actions = v
2198	return s
2199}
2200
2201// SetCreationTime sets the CreationTime field's value.
2202func (s *Experiment) SetCreationTime(v time.Time) *Experiment {
2203	s.CreationTime = &v
2204	return s
2205}
2206
2207// SetEndTime sets the EndTime field's value.
2208func (s *Experiment) SetEndTime(v time.Time) *Experiment {
2209	s.EndTime = &v
2210	return s
2211}
2212
2213// SetExperimentTemplateId sets the ExperimentTemplateId field's value.
2214func (s *Experiment) SetExperimentTemplateId(v string) *Experiment {
2215	s.ExperimentTemplateId = &v
2216	return s
2217}
2218
2219// SetId sets the Id field's value.
2220func (s *Experiment) SetId(v string) *Experiment {
2221	s.Id = &v
2222	return s
2223}
2224
2225// SetRoleArn sets the RoleArn field's value.
2226func (s *Experiment) SetRoleArn(v string) *Experiment {
2227	s.RoleArn = &v
2228	return s
2229}
2230
2231// SetStartTime sets the StartTime field's value.
2232func (s *Experiment) SetStartTime(v time.Time) *Experiment {
2233	s.StartTime = &v
2234	return s
2235}
2236
2237// SetState sets the State field's value.
2238func (s *Experiment) SetState(v *ExperimentState) *Experiment {
2239	s.State = v
2240	return s
2241}
2242
2243// SetStopConditions sets the StopConditions field's value.
2244func (s *Experiment) SetStopConditions(v []*ExperimentStopCondition) *Experiment {
2245	s.StopConditions = v
2246	return s
2247}
2248
2249// SetTags sets the Tags field's value.
2250func (s *Experiment) SetTags(v map[string]*string) *Experiment {
2251	s.Tags = v
2252	return s
2253}
2254
2255// SetTargets sets the Targets field's value.
2256func (s *Experiment) SetTargets(v map[string]*ExperimentTarget) *Experiment {
2257	s.Targets = v
2258	return s
2259}
2260
2261// Describes the action for an experiment.
2262type ExperimentAction struct {
2263	_ struct{} `type:"structure"`
2264
2265	// The ID of the action.
2266	ActionId *string `locationName:"actionId" type:"string"`
2267
2268	// The description for the action.
2269	Description *string `locationName:"description" type:"string"`
2270
2271	// The parameters for the action.
2272	Parameters map[string]*string `locationName:"parameters" type:"map"`
2273
2274	// The name of the action that must be completed before this action starts.
2275	StartAfter []*string `locationName:"startAfter" type:"list"`
2276
2277	// The state of the action.
2278	State *ExperimentActionState `locationName:"state" type:"structure"`
2279
2280	// The targets for the action.
2281	Targets map[string]*string `locationName:"targets" type:"map"`
2282}
2283
2284// String returns the string representation.
2285//
2286// API parameter values that are decorated as "sensitive" in the API will not
2287// be included in the string output. The member name will be present, but the
2288// value will be replaced with "sensitive".
2289func (s ExperimentAction) String() string {
2290	return awsutil.Prettify(s)
2291}
2292
2293// GoString returns the string representation.
2294//
2295// API parameter values that are decorated as "sensitive" in the API will not
2296// be included in the string output. The member name will be present, but the
2297// value will be replaced with "sensitive".
2298func (s ExperimentAction) GoString() string {
2299	return s.String()
2300}
2301
2302// SetActionId sets the ActionId field's value.
2303func (s *ExperimentAction) SetActionId(v string) *ExperimentAction {
2304	s.ActionId = &v
2305	return s
2306}
2307
2308// SetDescription sets the Description field's value.
2309func (s *ExperimentAction) SetDescription(v string) *ExperimentAction {
2310	s.Description = &v
2311	return s
2312}
2313
2314// SetParameters sets the Parameters field's value.
2315func (s *ExperimentAction) SetParameters(v map[string]*string) *ExperimentAction {
2316	s.Parameters = v
2317	return s
2318}
2319
2320// SetStartAfter sets the StartAfter field's value.
2321func (s *ExperimentAction) SetStartAfter(v []*string) *ExperimentAction {
2322	s.StartAfter = v
2323	return s
2324}
2325
2326// SetState sets the State field's value.
2327func (s *ExperimentAction) SetState(v *ExperimentActionState) *ExperimentAction {
2328	s.State = v
2329	return s
2330}
2331
2332// SetTargets sets the Targets field's value.
2333func (s *ExperimentAction) SetTargets(v map[string]*string) *ExperimentAction {
2334	s.Targets = v
2335	return s
2336}
2337
2338// Describes the state of an action.
2339type ExperimentActionState struct {
2340	_ struct{} `type:"structure"`
2341
2342	// The reason for the state.
2343	Reason *string `locationName:"reason" type:"string"`
2344
2345	// The state of the action.
2346	Status *string `locationName:"status" type:"string" enum:"ExperimentActionStatus"`
2347}
2348
2349// String returns the string representation.
2350//
2351// API parameter values that are decorated as "sensitive" in the API will not
2352// be included in the string output. The member name will be present, but the
2353// value will be replaced with "sensitive".
2354func (s ExperimentActionState) String() string {
2355	return awsutil.Prettify(s)
2356}
2357
2358// GoString returns the string representation.
2359//
2360// API parameter values that are decorated as "sensitive" in the API will not
2361// be included in the string output. The member name will be present, but the
2362// value will be replaced with "sensitive".
2363func (s ExperimentActionState) GoString() string {
2364	return s.String()
2365}
2366
2367// SetReason sets the Reason field's value.
2368func (s *ExperimentActionState) SetReason(v string) *ExperimentActionState {
2369	s.Reason = &v
2370	return s
2371}
2372
2373// SetStatus sets the Status field's value.
2374func (s *ExperimentActionState) SetStatus(v string) *ExperimentActionState {
2375	s.Status = &v
2376	return s
2377}
2378
2379// Describes the state of an experiment.
2380type ExperimentState struct {
2381	_ struct{} `type:"structure"`
2382
2383	// The reason for the state.
2384	Reason *string `locationName:"reason" type:"string"`
2385
2386	// The state of the experiment.
2387	Status *string `locationName:"status" type:"string" enum:"ExperimentStatus"`
2388}
2389
2390// String returns the string representation.
2391//
2392// API parameter values that are decorated as "sensitive" in the API will not
2393// be included in the string output. The member name will be present, but the
2394// value will be replaced with "sensitive".
2395func (s ExperimentState) String() string {
2396	return awsutil.Prettify(s)
2397}
2398
2399// GoString returns the string representation.
2400//
2401// API parameter values that are decorated as "sensitive" in the API will not
2402// be included in the string output. The member name will be present, but the
2403// value will be replaced with "sensitive".
2404func (s ExperimentState) GoString() string {
2405	return s.String()
2406}
2407
2408// SetReason sets the Reason field's value.
2409func (s *ExperimentState) SetReason(v string) *ExperimentState {
2410	s.Reason = &v
2411	return s
2412}
2413
2414// SetStatus sets the Status field's value.
2415func (s *ExperimentState) SetStatus(v string) *ExperimentState {
2416	s.Status = &v
2417	return s
2418}
2419
2420// Describes the stop condition for an experiment.
2421type ExperimentStopCondition struct {
2422	_ struct{} `type:"structure"`
2423
2424	// The source for the stop condition.
2425	Source *string `locationName:"source" type:"string"`
2426
2427	// The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.
2428	Value *string `locationName:"value" min:"20" type:"string"`
2429}
2430
2431// String returns the string representation.
2432//
2433// API parameter values that are decorated as "sensitive" in the API will not
2434// be included in the string output. The member name will be present, but the
2435// value will be replaced with "sensitive".
2436func (s ExperimentStopCondition) String() string {
2437	return awsutil.Prettify(s)
2438}
2439
2440// GoString returns the string representation.
2441//
2442// API parameter values that are decorated as "sensitive" in the API will not
2443// be included in the string output. The member name will be present, but the
2444// value will be replaced with "sensitive".
2445func (s ExperimentStopCondition) GoString() string {
2446	return s.String()
2447}
2448
2449// SetSource sets the Source field's value.
2450func (s *ExperimentStopCondition) SetSource(v string) *ExperimentStopCondition {
2451	s.Source = &v
2452	return s
2453}
2454
2455// SetValue sets the Value field's value.
2456func (s *ExperimentStopCondition) SetValue(v string) *ExperimentStopCondition {
2457	s.Value = &v
2458	return s
2459}
2460
2461// Provides a summary of an experiment.
2462type ExperimentSummary struct {
2463	_ struct{} `type:"structure"`
2464
2465	// The time that the experiment was created.
2466	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2467
2468	// The ID of the experiment template.
2469	ExperimentTemplateId *string `locationName:"experimentTemplateId" type:"string"`
2470
2471	// The ID of the experiment.
2472	Id *string `locationName:"id" type:"string"`
2473
2474	// The state of the experiment.
2475	State *ExperimentState `locationName:"state" type:"structure"`
2476
2477	// The tags for the experiment.
2478	Tags map[string]*string `locationName:"tags" type:"map"`
2479}
2480
2481// String returns the string representation.
2482//
2483// API parameter values that are decorated as "sensitive" in the API will not
2484// be included in the string output. The member name will be present, but the
2485// value will be replaced with "sensitive".
2486func (s ExperimentSummary) String() string {
2487	return awsutil.Prettify(s)
2488}
2489
2490// GoString returns the string representation.
2491//
2492// API parameter values that are decorated as "sensitive" in the API will not
2493// be included in the string output. The member name will be present, but the
2494// value will be replaced with "sensitive".
2495func (s ExperimentSummary) GoString() string {
2496	return s.String()
2497}
2498
2499// SetCreationTime sets the CreationTime field's value.
2500func (s *ExperimentSummary) SetCreationTime(v time.Time) *ExperimentSummary {
2501	s.CreationTime = &v
2502	return s
2503}
2504
2505// SetExperimentTemplateId sets the ExperimentTemplateId field's value.
2506func (s *ExperimentSummary) SetExperimentTemplateId(v string) *ExperimentSummary {
2507	s.ExperimentTemplateId = &v
2508	return s
2509}
2510
2511// SetId sets the Id field's value.
2512func (s *ExperimentSummary) SetId(v string) *ExperimentSummary {
2513	s.Id = &v
2514	return s
2515}
2516
2517// SetState sets the State field's value.
2518func (s *ExperimentSummary) SetState(v *ExperimentState) *ExperimentSummary {
2519	s.State = v
2520	return s
2521}
2522
2523// SetTags sets the Tags field's value.
2524func (s *ExperimentSummary) SetTags(v map[string]*string) *ExperimentSummary {
2525	s.Tags = v
2526	return s
2527}
2528
2529// Describes a target for an experiment.
2530type ExperimentTarget struct {
2531	_ struct{} `type:"structure"`
2532
2533	// The filters to apply to identify target resources using specific attributes.
2534	Filters []*ExperimentTargetFilter `locationName:"filters" type:"list"`
2535
2536	// The Amazon Resource Names (ARNs) of the resources.
2537	ResourceArns []*string `locationName:"resourceArns" type:"list"`
2538
2539	// The tags for the target resources.
2540	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
2541
2542	// The resource type.
2543	ResourceType *string `locationName:"resourceType" type:"string"`
2544
2545	// Scopes the identified resources to a specific count or percentage.
2546	SelectionMode *string `locationName:"selectionMode" type:"string"`
2547}
2548
2549// String returns the string representation.
2550//
2551// API parameter values that are decorated as "sensitive" in the API will not
2552// be included in the string output. The member name will be present, but the
2553// value will be replaced with "sensitive".
2554func (s ExperimentTarget) String() string {
2555	return awsutil.Prettify(s)
2556}
2557
2558// GoString returns the string representation.
2559//
2560// API parameter values that are decorated as "sensitive" in the API will not
2561// be included in the string output. The member name will be present, but the
2562// value will be replaced with "sensitive".
2563func (s ExperimentTarget) GoString() string {
2564	return s.String()
2565}
2566
2567// SetFilters sets the Filters field's value.
2568func (s *ExperimentTarget) SetFilters(v []*ExperimentTargetFilter) *ExperimentTarget {
2569	s.Filters = v
2570	return s
2571}
2572
2573// SetResourceArns sets the ResourceArns field's value.
2574func (s *ExperimentTarget) SetResourceArns(v []*string) *ExperimentTarget {
2575	s.ResourceArns = v
2576	return s
2577}
2578
2579// SetResourceTags sets the ResourceTags field's value.
2580func (s *ExperimentTarget) SetResourceTags(v map[string]*string) *ExperimentTarget {
2581	s.ResourceTags = v
2582	return s
2583}
2584
2585// SetResourceType sets the ResourceType field's value.
2586func (s *ExperimentTarget) SetResourceType(v string) *ExperimentTarget {
2587	s.ResourceType = &v
2588	return s
2589}
2590
2591// SetSelectionMode sets the SelectionMode field's value.
2592func (s *ExperimentTarget) SetSelectionMode(v string) *ExperimentTarget {
2593	s.SelectionMode = &v
2594	return s
2595}
2596
2597// Describes a filter used for the target resources in an experiment.
2598type ExperimentTargetFilter struct {
2599	_ struct{} `type:"structure"`
2600
2601	// The attribute path for the filter.
2602	Path *string `locationName:"path" type:"string"`
2603
2604	// The attribute values for the filter.
2605	Values []*string `locationName:"values" type:"list"`
2606}
2607
2608// String returns the string representation.
2609//
2610// API parameter values that are decorated as "sensitive" in the API will not
2611// be included in the string output. The member name will be present, but the
2612// value will be replaced with "sensitive".
2613func (s ExperimentTargetFilter) String() string {
2614	return awsutil.Prettify(s)
2615}
2616
2617// GoString returns the string representation.
2618//
2619// API parameter values that are decorated as "sensitive" in the API will not
2620// be included in the string output. The member name will be present, but the
2621// value will be replaced with "sensitive".
2622func (s ExperimentTargetFilter) GoString() string {
2623	return s.String()
2624}
2625
2626// SetPath sets the Path field's value.
2627func (s *ExperimentTargetFilter) SetPath(v string) *ExperimentTargetFilter {
2628	s.Path = &v
2629	return s
2630}
2631
2632// SetValues sets the Values field's value.
2633func (s *ExperimentTargetFilter) SetValues(v []*string) *ExperimentTargetFilter {
2634	s.Values = v
2635	return s
2636}
2637
2638// Describes an experiment template.
2639type ExperimentTemplate struct {
2640	_ struct{} `type:"structure"`
2641
2642	// The actions for the experiment.
2643	Actions map[string]*ExperimentTemplateAction `locationName:"actions" type:"map"`
2644
2645	// The time the experiment template was created.
2646	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2647
2648	// The description for the experiment template.
2649	Description *string `locationName:"description" type:"string"`
2650
2651	// The ID of the experiment template.
2652	Id *string `locationName:"id" type:"string"`
2653
2654	// The time the experiment template was last updated.
2655	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp"`
2656
2657	// The Amazon Resource Name (ARN) of an IAM role.
2658	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`
2659
2660	// The stop conditions for the experiment.
2661	StopConditions []*ExperimentTemplateStopCondition `locationName:"stopConditions" type:"list"`
2662
2663	// The tags for the experiment template.
2664	Tags map[string]*string `locationName:"tags" type:"map"`
2665
2666	// The targets for the experiment.
2667	Targets map[string]*ExperimentTemplateTarget `locationName:"targets" type:"map"`
2668}
2669
2670// String returns the string representation.
2671//
2672// API parameter values that are decorated as "sensitive" in the API will not
2673// be included in the string output. The member name will be present, but the
2674// value will be replaced with "sensitive".
2675func (s ExperimentTemplate) String() string {
2676	return awsutil.Prettify(s)
2677}
2678
2679// GoString returns the string representation.
2680//
2681// API parameter values that are decorated as "sensitive" in the API will not
2682// be included in the string output. The member name will be present, but the
2683// value will be replaced with "sensitive".
2684func (s ExperimentTemplate) GoString() string {
2685	return s.String()
2686}
2687
2688// SetActions sets the Actions field's value.
2689func (s *ExperimentTemplate) SetActions(v map[string]*ExperimentTemplateAction) *ExperimentTemplate {
2690	s.Actions = v
2691	return s
2692}
2693
2694// SetCreationTime sets the CreationTime field's value.
2695func (s *ExperimentTemplate) SetCreationTime(v time.Time) *ExperimentTemplate {
2696	s.CreationTime = &v
2697	return s
2698}
2699
2700// SetDescription sets the Description field's value.
2701func (s *ExperimentTemplate) SetDescription(v string) *ExperimentTemplate {
2702	s.Description = &v
2703	return s
2704}
2705
2706// SetId sets the Id field's value.
2707func (s *ExperimentTemplate) SetId(v string) *ExperimentTemplate {
2708	s.Id = &v
2709	return s
2710}
2711
2712// SetLastUpdateTime sets the LastUpdateTime field's value.
2713func (s *ExperimentTemplate) SetLastUpdateTime(v time.Time) *ExperimentTemplate {
2714	s.LastUpdateTime = &v
2715	return s
2716}
2717
2718// SetRoleArn sets the RoleArn field's value.
2719func (s *ExperimentTemplate) SetRoleArn(v string) *ExperimentTemplate {
2720	s.RoleArn = &v
2721	return s
2722}
2723
2724// SetStopConditions sets the StopConditions field's value.
2725func (s *ExperimentTemplate) SetStopConditions(v []*ExperimentTemplateStopCondition) *ExperimentTemplate {
2726	s.StopConditions = v
2727	return s
2728}
2729
2730// SetTags sets the Tags field's value.
2731func (s *ExperimentTemplate) SetTags(v map[string]*string) *ExperimentTemplate {
2732	s.Tags = v
2733	return s
2734}
2735
2736// SetTargets sets the Targets field's value.
2737func (s *ExperimentTemplate) SetTargets(v map[string]*ExperimentTemplateTarget) *ExperimentTemplate {
2738	s.Targets = v
2739	return s
2740}
2741
2742// Describes an action for an experiment template.
2743type ExperimentTemplateAction struct {
2744	_ struct{} `type:"structure"`
2745
2746	// The ID of the action.
2747	ActionId *string `locationName:"actionId" type:"string"`
2748
2749	// A description for the action.
2750	Description *string `locationName:"description" type:"string"`
2751
2752	// The parameters for the action.
2753	Parameters map[string]*string `locationName:"parameters" type:"map"`
2754
2755	// The name of the action that must be completed before the current action starts.
2756	StartAfter []*string `locationName:"startAfter" type:"list"`
2757
2758	// The targets for the action.
2759	Targets map[string]*string `locationName:"targets" type:"map"`
2760}
2761
2762// String returns the string representation.
2763//
2764// API parameter values that are decorated as "sensitive" in the API will not
2765// be included in the string output. The member name will be present, but the
2766// value will be replaced with "sensitive".
2767func (s ExperimentTemplateAction) String() string {
2768	return awsutil.Prettify(s)
2769}
2770
2771// GoString returns the string representation.
2772//
2773// API parameter values that are decorated as "sensitive" in the API will not
2774// be included in the string output. The member name will be present, but the
2775// value will be replaced with "sensitive".
2776func (s ExperimentTemplateAction) GoString() string {
2777	return s.String()
2778}
2779
2780// SetActionId sets the ActionId field's value.
2781func (s *ExperimentTemplateAction) SetActionId(v string) *ExperimentTemplateAction {
2782	s.ActionId = &v
2783	return s
2784}
2785
2786// SetDescription sets the Description field's value.
2787func (s *ExperimentTemplateAction) SetDescription(v string) *ExperimentTemplateAction {
2788	s.Description = &v
2789	return s
2790}
2791
2792// SetParameters sets the Parameters field's value.
2793func (s *ExperimentTemplateAction) SetParameters(v map[string]*string) *ExperimentTemplateAction {
2794	s.Parameters = v
2795	return s
2796}
2797
2798// SetStartAfter sets the StartAfter field's value.
2799func (s *ExperimentTemplateAction) SetStartAfter(v []*string) *ExperimentTemplateAction {
2800	s.StartAfter = v
2801	return s
2802}
2803
2804// SetTargets sets the Targets field's value.
2805func (s *ExperimentTemplateAction) SetTargets(v map[string]*string) *ExperimentTemplateAction {
2806	s.Targets = v
2807	return s
2808}
2809
2810// Describes a stop condition for an experiment template.
2811type ExperimentTemplateStopCondition struct {
2812	_ struct{} `type:"structure"`
2813
2814	// The source for the stop condition.
2815	Source *string `locationName:"source" type:"string"`
2816
2817	// The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.
2818	Value *string `locationName:"value" min:"20" type:"string"`
2819}
2820
2821// String returns the string representation.
2822//
2823// API parameter values that are decorated as "sensitive" in the API will not
2824// be included in the string output. The member name will be present, but the
2825// value will be replaced with "sensitive".
2826func (s ExperimentTemplateStopCondition) String() string {
2827	return awsutil.Prettify(s)
2828}
2829
2830// GoString returns the string representation.
2831//
2832// API parameter values that are decorated as "sensitive" in the API will not
2833// be included in the string output. The member name will be present, but the
2834// value will be replaced with "sensitive".
2835func (s ExperimentTemplateStopCondition) GoString() string {
2836	return s.String()
2837}
2838
2839// SetSource sets the Source field's value.
2840func (s *ExperimentTemplateStopCondition) SetSource(v string) *ExperimentTemplateStopCondition {
2841	s.Source = &v
2842	return s
2843}
2844
2845// SetValue sets the Value field's value.
2846func (s *ExperimentTemplateStopCondition) SetValue(v string) *ExperimentTemplateStopCondition {
2847	s.Value = &v
2848	return s
2849}
2850
2851// Provides a summary of an experiment template.
2852type ExperimentTemplateSummary struct {
2853	_ struct{} `type:"structure"`
2854
2855	// The time that the experiment template was created.
2856	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2857
2858	// The description of the experiment template.
2859	Description *string `locationName:"description" type:"string"`
2860
2861	// The ID of the experiment template.
2862	Id *string `locationName:"id" type:"string"`
2863
2864	// The time that the experiment template was last updated.
2865	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp"`
2866
2867	// The tags for the experiment template.
2868	Tags map[string]*string `locationName:"tags" type:"map"`
2869}
2870
2871// String returns the string representation.
2872//
2873// API parameter values that are decorated as "sensitive" in the API will not
2874// be included in the string output. The member name will be present, but the
2875// value will be replaced with "sensitive".
2876func (s ExperimentTemplateSummary) String() string {
2877	return awsutil.Prettify(s)
2878}
2879
2880// GoString returns the string representation.
2881//
2882// API parameter values that are decorated as "sensitive" in the API will not
2883// be included in the string output. The member name will be present, but the
2884// value will be replaced with "sensitive".
2885func (s ExperimentTemplateSummary) GoString() string {
2886	return s.String()
2887}
2888
2889// SetCreationTime sets the CreationTime field's value.
2890func (s *ExperimentTemplateSummary) SetCreationTime(v time.Time) *ExperimentTemplateSummary {
2891	s.CreationTime = &v
2892	return s
2893}
2894
2895// SetDescription sets the Description field's value.
2896func (s *ExperimentTemplateSummary) SetDescription(v string) *ExperimentTemplateSummary {
2897	s.Description = &v
2898	return s
2899}
2900
2901// SetId sets the Id field's value.
2902func (s *ExperimentTemplateSummary) SetId(v string) *ExperimentTemplateSummary {
2903	s.Id = &v
2904	return s
2905}
2906
2907// SetLastUpdateTime sets the LastUpdateTime field's value.
2908func (s *ExperimentTemplateSummary) SetLastUpdateTime(v time.Time) *ExperimentTemplateSummary {
2909	s.LastUpdateTime = &v
2910	return s
2911}
2912
2913// SetTags sets the Tags field's value.
2914func (s *ExperimentTemplateSummary) SetTags(v map[string]*string) *ExperimentTemplateSummary {
2915	s.Tags = v
2916	return s
2917}
2918
2919// Describes a target for an experiment template.
2920type ExperimentTemplateTarget struct {
2921	_ struct{} `type:"structure"`
2922
2923	// The filters to apply to identify target resources using specific attributes.
2924	Filters []*ExperimentTemplateTargetFilter `locationName:"filters" type:"list"`
2925
2926	// The Amazon Resource Names (ARNs) of the targets.
2927	ResourceArns []*string `locationName:"resourceArns" type:"list"`
2928
2929	// The tags for the target resources.
2930	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
2931
2932	// The resource type.
2933	ResourceType *string `locationName:"resourceType" type:"string"`
2934
2935	// Scopes the identified resources to a specific count or percentage.
2936	SelectionMode *string `locationName:"selectionMode" type:"string"`
2937}
2938
2939// String returns the string representation.
2940//
2941// API parameter values that are decorated as "sensitive" in the API will not
2942// be included in the string output. The member name will be present, but the
2943// value will be replaced with "sensitive".
2944func (s ExperimentTemplateTarget) String() string {
2945	return awsutil.Prettify(s)
2946}
2947
2948// GoString returns the string representation.
2949//
2950// API parameter values that are decorated as "sensitive" in the API will not
2951// be included in the string output. The member name will be present, but the
2952// value will be replaced with "sensitive".
2953func (s ExperimentTemplateTarget) GoString() string {
2954	return s.String()
2955}
2956
2957// SetFilters sets the Filters field's value.
2958func (s *ExperimentTemplateTarget) SetFilters(v []*ExperimentTemplateTargetFilter) *ExperimentTemplateTarget {
2959	s.Filters = v
2960	return s
2961}
2962
2963// SetResourceArns sets the ResourceArns field's value.
2964func (s *ExperimentTemplateTarget) SetResourceArns(v []*string) *ExperimentTemplateTarget {
2965	s.ResourceArns = v
2966	return s
2967}
2968
2969// SetResourceTags sets the ResourceTags field's value.
2970func (s *ExperimentTemplateTarget) SetResourceTags(v map[string]*string) *ExperimentTemplateTarget {
2971	s.ResourceTags = v
2972	return s
2973}
2974
2975// SetResourceType sets the ResourceType field's value.
2976func (s *ExperimentTemplateTarget) SetResourceType(v string) *ExperimentTemplateTarget {
2977	s.ResourceType = &v
2978	return s
2979}
2980
2981// SetSelectionMode sets the SelectionMode field's value.
2982func (s *ExperimentTemplateTarget) SetSelectionMode(v string) *ExperimentTemplateTarget {
2983	s.SelectionMode = &v
2984	return s
2985}
2986
2987// Describes a filter used for the target resources in an experiment template.
2988type ExperimentTemplateTargetFilter struct {
2989	_ struct{} `type:"structure"`
2990
2991	// The attribute path for the filter.
2992	Path *string `locationName:"path" type:"string"`
2993
2994	// The attribute values for the filter.
2995	Values []*string `locationName:"values" type:"list"`
2996}
2997
2998// String returns the string representation.
2999//
3000// API parameter values that are decorated as "sensitive" in the API will not
3001// be included in the string output. The member name will be present, but the
3002// value will be replaced with "sensitive".
3003func (s ExperimentTemplateTargetFilter) String() string {
3004	return awsutil.Prettify(s)
3005}
3006
3007// GoString returns the string representation.
3008//
3009// API parameter values that are decorated as "sensitive" in the API will not
3010// be included in the string output. The member name will be present, but the
3011// value will be replaced with "sensitive".
3012func (s ExperimentTemplateTargetFilter) GoString() string {
3013	return s.String()
3014}
3015
3016// SetPath sets the Path field's value.
3017func (s *ExperimentTemplateTargetFilter) SetPath(v string) *ExperimentTemplateTargetFilter {
3018	s.Path = &v
3019	return s
3020}
3021
3022// SetValues sets the Values field's value.
3023func (s *ExperimentTemplateTargetFilter) SetValues(v []*string) *ExperimentTemplateTargetFilter {
3024	s.Values = v
3025	return s
3026}
3027
3028// Describes a filter used for the target resource input in an experiment template.
3029type ExperimentTemplateTargetInputFilter struct {
3030	_ struct{} `type:"structure"`
3031
3032	// The attribute path for the filter.
3033	//
3034	// Path is a required field
3035	Path *string `locationName:"path" type:"string" required:"true"`
3036
3037	// The attribute values for the filter.
3038	//
3039	// Values is a required field
3040	Values []*string `locationName:"values" type:"list" required:"true"`
3041}
3042
3043// String returns the string representation.
3044//
3045// API parameter values that are decorated as "sensitive" in the API will not
3046// be included in the string output. The member name will be present, but the
3047// value will be replaced with "sensitive".
3048func (s ExperimentTemplateTargetInputFilter) String() string {
3049	return awsutil.Prettify(s)
3050}
3051
3052// GoString returns the string representation.
3053//
3054// API parameter values that are decorated as "sensitive" in the API will not
3055// be included in the string output. The member name will be present, but the
3056// value will be replaced with "sensitive".
3057func (s ExperimentTemplateTargetInputFilter) GoString() string {
3058	return s.String()
3059}
3060
3061// Validate inspects the fields of the type to determine if they are valid.
3062func (s *ExperimentTemplateTargetInputFilter) Validate() error {
3063	invalidParams := request.ErrInvalidParams{Context: "ExperimentTemplateTargetInputFilter"}
3064	if s.Path == nil {
3065		invalidParams.Add(request.NewErrParamRequired("Path"))
3066	}
3067	if s.Values == nil {
3068		invalidParams.Add(request.NewErrParamRequired("Values"))
3069	}
3070
3071	if invalidParams.Len() > 0 {
3072		return invalidParams
3073	}
3074	return nil
3075}
3076
3077// SetPath sets the Path field's value.
3078func (s *ExperimentTemplateTargetInputFilter) SetPath(v string) *ExperimentTemplateTargetInputFilter {
3079	s.Path = &v
3080	return s
3081}
3082
3083// SetValues sets the Values field's value.
3084func (s *ExperimentTemplateTargetInputFilter) SetValues(v []*string) *ExperimentTemplateTargetInputFilter {
3085	s.Values = v
3086	return s
3087}
3088
3089type GetActionInput struct {
3090	_ struct{} `type:"structure" nopayload:"true"`
3091
3092	// The ID of the action.
3093	//
3094	// Id is a required field
3095	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3096}
3097
3098// String returns the string representation.
3099//
3100// API parameter values that are decorated as "sensitive" in the API will not
3101// be included in the string output. The member name will be present, but the
3102// value will be replaced with "sensitive".
3103func (s GetActionInput) String() string {
3104	return awsutil.Prettify(s)
3105}
3106
3107// GoString returns the string representation.
3108//
3109// API parameter values that are decorated as "sensitive" in the API will not
3110// be included in the string output. The member name will be present, but the
3111// value will be replaced with "sensitive".
3112func (s GetActionInput) GoString() string {
3113	return s.String()
3114}
3115
3116// Validate inspects the fields of the type to determine if they are valid.
3117func (s *GetActionInput) Validate() error {
3118	invalidParams := request.ErrInvalidParams{Context: "GetActionInput"}
3119	if s.Id == nil {
3120		invalidParams.Add(request.NewErrParamRequired("Id"))
3121	}
3122	if s.Id != nil && len(*s.Id) < 1 {
3123		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3124	}
3125
3126	if invalidParams.Len() > 0 {
3127		return invalidParams
3128	}
3129	return nil
3130}
3131
3132// SetId sets the Id field's value.
3133func (s *GetActionInput) SetId(v string) *GetActionInput {
3134	s.Id = &v
3135	return s
3136}
3137
3138type GetActionOutput struct {
3139	_ struct{} `type:"structure"`
3140
3141	// Information about the action.
3142	Action *Action `locationName:"action" type:"structure"`
3143}
3144
3145// String returns the string representation.
3146//
3147// API parameter values that are decorated as "sensitive" in the API will not
3148// be included in the string output. The member name will be present, but the
3149// value will be replaced with "sensitive".
3150func (s GetActionOutput) String() string {
3151	return awsutil.Prettify(s)
3152}
3153
3154// GoString returns the string representation.
3155//
3156// API parameter values that are decorated as "sensitive" in the API will not
3157// be included in the string output. The member name will be present, but the
3158// value will be replaced with "sensitive".
3159func (s GetActionOutput) GoString() string {
3160	return s.String()
3161}
3162
3163// SetAction sets the Action field's value.
3164func (s *GetActionOutput) SetAction(v *Action) *GetActionOutput {
3165	s.Action = v
3166	return s
3167}
3168
3169type GetExperimentInput struct {
3170	_ struct{} `type:"structure" nopayload:"true"`
3171
3172	// The ID of the experiment.
3173	//
3174	// Id is a required field
3175	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3176}
3177
3178// String returns the string representation.
3179//
3180// API parameter values that are decorated as "sensitive" in the API will not
3181// be included in the string output. The member name will be present, but the
3182// value will be replaced with "sensitive".
3183func (s GetExperimentInput) String() string {
3184	return awsutil.Prettify(s)
3185}
3186
3187// GoString returns the string representation.
3188//
3189// API parameter values that are decorated as "sensitive" in the API will not
3190// be included in the string output. The member name will be present, but the
3191// value will be replaced with "sensitive".
3192func (s GetExperimentInput) GoString() string {
3193	return s.String()
3194}
3195
3196// Validate inspects the fields of the type to determine if they are valid.
3197func (s *GetExperimentInput) Validate() error {
3198	invalidParams := request.ErrInvalidParams{Context: "GetExperimentInput"}
3199	if s.Id == nil {
3200		invalidParams.Add(request.NewErrParamRequired("Id"))
3201	}
3202	if s.Id != nil && len(*s.Id) < 1 {
3203		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3204	}
3205
3206	if invalidParams.Len() > 0 {
3207		return invalidParams
3208	}
3209	return nil
3210}
3211
3212// SetId sets the Id field's value.
3213func (s *GetExperimentInput) SetId(v string) *GetExperimentInput {
3214	s.Id = &v
3215	return s
3216}
3217
3218type GetExperimentOutput struct {
3219	_ struct{} `type:"structure"`
3220
3221	// Information about the experiment.
3222	Experiment *Experiment `locationName:"experiment" type:"structure"`
3223}
3224
3225// String returns the string representation.
3226//
3227// API parameter values that are decorated as "sensitive" in the API will not
3228// be included in the string output. The member name will be present, but the
3229// value will be replaced with "sensitive".
3230func (s GetExperimentOutput) String() string {
3231	return awsutil.Prettify(s)
3232}
3233
3234// GoString returns the string representation.
3235//
3236// API parameter values that are decorated as "sensitive" in the API will not
3237// be included in the string output. The member name will be present, but the
3238// value will be replaced with "sensitive".
3239func (s GetExperimentOutput) GoString() string {
3240	return s.String()
3241}
3242
3243// SetExperiment sets the Experiment field's value.
3244func (s *GetExperimentOutput) SetExperiment(v *Experiment) *GetExperimentOutput {
3245	s.Experiment = v
3246	return s
3247}
3248
3249type GetExperimentTemplateInput struct {
3250	_ struct{} `type:"structure" nopayload:"true"`
3251
3252	// The ID of the experiment template.
3253	//
3254	// Id is a required field
3255	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3256}
3257
3258// String returns the string representation.
3259//
3260// API parameter values that are decorated as "sensitive" in the API will not
3261// be included in the string output. The member name will be present, but the
3262// value will be replaced with "sensitive".
3263func (s GetExperimentTemplateInput) String() string {
3264	return awsutil.Prettify(s)
3265}
3266
3267// GoString returns the string representation.
3268//
3269// API parameter values that are decorated as "sensitive" in the API will not
3270// be included in the string output. The member name will be present, but the
3271// value will be replaced with "sensitive".
3272func (s GetExperimentTemplateInput) GoString() string {
3273	return s.String()
3274}
3275
3276// Validate inspects the fields of the type to determine if they are valid.
3277func (s *GetExperimentTemplateInput) Validate() error {
3278	invalidParams := request.ErrInvalidParams{Context: "GetExperimentTemplateInput"}
3279	if s.Id == nil {
3280		invalidParams.Add(request.NewErrParamRequired("Id"))
3281	}
3282	if s.Id != nil && len(*s.Id) < 1 {
3283		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3284	}
3285
3286	if invalidParams.Len() > 0 {
3287		return invalidParams
3288	}
3289	return nil
3290}
3291
3292// SetId sets the Id field's value.
3293func (s *GetExperimentTemplateInput) SetId(v string) *GetExperimentTemplateInput {
3294	s.Id = &v
3295	return s
3296}
3297
3298type GetExperimentTemplateOutput struct {
3299	_ struct{} `type:"structure"`
3300
3301	// Information about the experiment template.
3302	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
3303}
3304
3305// String returns the string representation.
3306//
3307// API parameter values that are decorated as "sensitive" in the API will not
3308// be included in the string output. The member name will be present, but the
3309// value will be replaced with "sensitive".
3310func (s GetExperimentTemplateOutput) String() string {
3311	return awsutil.Prettify(s)
3312}
3313
3314// GoString returns the string representation.
3315//
3316// API parameter values that are decorated as "sensitive" in the API will not
3317// be included in the string output. The member name will be present, but the
3318// value will be replaced with "sensitive".
3319func (s GetExperimentTemplateOutput) GoString() string {
3320	return s.String()
3321}
3322
3323// SetExperimentTemplate sets the ExperimentTemplate field's value.
3324func (s *GetExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *GetExperimentTemplateOutput {
3325	s.ExperimentTemplate = v
3326	return s
3327}
3328
3329type ListActionsInput struct {
3330	_ struct{} `type:"structure" nopayload:"true"`
3331
3332	// The maximum number of results to return with a single call. To retrieve the
3333	// remaining results, make another call with the returned nextToken value.
3334	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3335
3336	// The token for the next page of results.
3337	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
3338}
3339
3340// String returns the string representation.
3341//
3342// API parameter values that are decorated as "sensitive" in the API will not
3343// be included in the string output. The member name will be present, but the
3344// value will be replaced with "sensitive".
3345func (s ListActionsInput) String() string {
3346	return awsutil.Prettify(s)
3347}
3348
3349// GoString returns the string representation.
3350//
3351// API parameter values that are decorated as "sensitive" in the API will not
3352// be included in the string output. The member name will be present, but the
3353// value will be replaced with "sensitive".
3354func (s ListActionsInput) GoString() string {
3355	return s.String()
3356}
3357
3358// Validate inspects the fields of the type to determine if they are valid.
3359func (s *ListActionsInput) Validate() error {
3360	invalidParams := request.ErrInvalidParams{Context: "ListActionsInput"}
3361	if s.MaxResults != nil && *s.MaxResults < 1 {
3362		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3363	}
3364	if s.NextToken != nil && len(*s.NextToken) < 1 {
3365		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
3366	}
3367
3368	if invalidParams.Len() > 0 {
3369		return invalidParams
3370	}
3371	return nil
3372}
3373
3374// SetMaxResults sets the MaxResults field's value.
3375func (s *ListActionsInput) SetMaxResults(v int64) *ListActionsInput {
3376	s.MaxResults = &v
3377	return s
3378}
3379
3380// SetNextToken sets the NextToken field's value.
3381func (s *ListActionsInput) SetNextToken(v string) *ListActionsInput {
3382	s.NextToken = &v
3383	return s
3384}
3385
3386type ListActionsOutput struct {
3387	_ struct{} `type:"structure"`
3388
3389	// The actions.
3390	Actions []*ActionSummary `locationName:"actions" type:"list"`
3391
3392	// The token to use to retrieve the next page of results. This value is null
3393	// when there are no more results to return.
3394	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
3395}
3396
3397// String returns the string representation.
3398//
3399// API parameter values that are decorated as "sensitive" in the API will not
3400// be included in the string output. The member name will be present, but the
3401// value will be replaced with "sensitive".
3402func (s ListActionsOutput) String() string {
3403	return awsutil.Prettify(s)
3404}
3405
3406// GoString returns the string representation.
3407//
3408// API parameter values that are decorated as "sensitive" in the API will not
3409// be included in the string output. The member name will be present, but the
3410// value will be replaced with "sensitive".
3411func (s ListActionsOutput) GoString() string {
3412	return s.String()
3413}
3414
3415// SetActions sets the Actions field's value.
3416func (s *ListActionsOutput) SetActions(v []*ActionSummary) *ListActionsOutput {
3417	s.Actions = v
3418	return s
3419}
3420
3421// SetNextToken sets the NextToken field's value.
3422func (s *ListActionsOutput) SetNextToken(v string) *ListActionsOutput {
3423	s.NextToken = &v
3424	return s
3425}
3426
3427type ListExperimentTemplatesInput struct {
3428	_ struct{} `type:"structure" nopayload:"true"`
3429
3430	// The maximum number of results to return with a single call. To retrieve the
3431	// remaining results, make another call with the returned nextToken value.
3432	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3433
3434	// The token for the next page of results.
3435	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
3436}
3437
3438// String returns the string representation.
3439//
3440// API parameter values that are decorated as "sensitive" in the API will not
3441// be included in the string output. The member name will be present, but the
3442// value will be replaced with "sensitive".
3443func (s ListExperimentTemplatesInput) String() string {
3444	return awsutil.Prettify(s)
3445}
3446
3447// GoString returns the string representation.
3448//
3449// API parameter values that are decorated as "sensitive" in the API will not
3450// be included in the string output. The member name will be present, but the
3451// value will be replaced with "sensitive".
3452func (s ListExperimentTemplatesInput) GoString() string {
3453	return s.String()
3454}
3455
3456// Validate inspects the fields of the type to determine if they are valid.
3457func (s *ListExperimentTemplatesInput) Validate() error {
3458	invalidParams := request.ErrInvalidParams{Context: "ListExperimentTemplatesInput"}
3459	if s.MaxResults != nil && *s.MaxResults < 1 {
3460		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3461	}
3462	if s.NextToken != nil && len(*s.NextToken) < 1 {
3463		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
3464	}
3465
3466	if invalidParams.Len() > 0 {
3467		return invalidParams
3468	}
3469	return nil
3470}
3471
3472// SetMaxResults sets the MaxResults field's value.
3473func (s *ListExperimentTemplatesInput) SetMaxResults(v int64) *ListExperimentTemplatesInput {
3474	s.MaxResults = &v
3475	return s
3476}
3477
3478// SetNextToken sets the NextToken field's value.
3479func (s *ListExperimentTemplatesInput) SetNextToken(v string) *ListExperimentTemplatesInput {
3480	s.NextToken = &v
3481	return s
3482}
3483
3484type ListExperimentTemplatesOutput struct {
3485	_ struct{} `type:"structure"`
3486
3487	// The experiment templates.
3488	ExperimentTemplates []*ExperimentTemplateSummary `locationName:"experimentTemplates" type:"list"`
3489
3490	// The token to use to retrieve the next page of results. This value is null
3491	// when there are no more results to return.
3492	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
3493}
3494
3495// String returns the string representation.
3496//
3497// API parameter values that are decorated as "sensitive" in the API will not
3498// be included in the string output. The member name will be present, but the
3499// value will be replaced with "sensitive".
3500func (s ListExperimentTemplatesOutput) String() string {
3501	return awsutil.Prettify(s)
3502}
3503
3504// GoString returns the string representation.
3505//
3506// API parameter values that are decorated as "sensitive" in the API will not
3507// be included in the string output. The member name will be present, but the
3508// value will be replaced with "sensitive".
3509func (s ListExperimentTemplatesOutput) GoString() string {
3510	return s.String()
3511}
3512
3513// SetExperimentTemplates sets the ExperimentTemplates field's value.
3514func (s *ListExperimentTemplatesOutput) SetExperimentTemplates(v []*ExperimentTemplateSummary) *ListExperimentTemplatesOutput {
3515	s.ExperimentTemplates = v
3516	return s
3517}
3518
3519// SetNextToken sets the NextToken field's value.
3520func (s *ListExperimentTemplatesOutput) SetNextToken(v string) *ListExperimentTemplatesOutput {
3521	s.NextToken = &v
3522	return s
3523}
3524
3525type ListExperimentsInput struct {
3526	_ struct{} `type:"structure" nopayload:"true"`
3527
3528	// The maximum number of results to return with a single call. To retrieve the
3529	// remaining results, make another call with the returned nextToken value.
3530	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3531
3532	// The token for the next page of results.
3533	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
3534}
3535
3536// String returns the string representation.
3537//
3538// API parameter values that are decorated as "sensitive" in the API will not
3539// be included in the string output. The member name will be present, but the
3540// value will be replaced with "sensitive".
3541func (s ListExperimentsInput) String() string {
3542	return awsutil.Prettify(s)
3543}
3544
3545// GoString returns the string representation.
3546//
3547// API parameter values that are decorated as "sensitive" in the API will not
3548// be included in the string output. The member name will be present, but the
3549// value will be replaced with "sensitive".
3550func (s ListExperimentsInput) GoString() string {
3551	return s.String()
3552}
3553
3554// Validate inspects the fields of the type to determine if they are valid.
3555func (s *ListExperimentsInput) Validate() error {
3556	invalidParams := request.ErrInvalidParams{Context: "ListExperimentsInput"}
3557	if s.MaxResults != nil && *s.MaxResults < 1 {
3558		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3559	}
3560	if s.NextToken != nil && len(*s.NextToken) < 1 {
3561		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
3562	}
3563
3564	if invalidParams.Len() > 0 {
3565		return invalidParams
3566	}
3567	return nil
3568}
3569
3570// SetMaxResults sets the MaxResults field's value.
3571func (s *ListExperimentsInput) SetMaxResults(v int64) *ListExperimentsInput {
3572	s.MaxResults = &v
3573	return s
3574}
3575
3576// SetNextToken sets the NextToken field's value.
3577func (s *ListExperimentsInput) SetNextToken(v string) *ListExperimentsInput {
3578	s.NextToken = &v
3579	return s
3580}
3581
3582type ListExperimentsOutput struct {
3583	_ struct{} `type:"structure"`
3584
3585	// The experiments.
3586	Experiments []*ExperimentSummary `locationName:"experiments" type:"list"`
3587
3588	// The token to use to retrieve the next page of results. This value is null
3589	// when there are no more results to return.
3590	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
3591}
3592
3593// String returns the string representation.
3594//
3595// API parameter values that are decorated as "sensitive" in the API will not
3596// be included in the string output. The member name will be present, but the
3597// value will be replaced with "sensitive".
3598func (s ListExperimentsOutput) String() string {
3599	return awsutil.Prettify(s)
3600}
3601
3602// GoString returns the string representation.
3603//
3604// API parameter values that are decorated as "sensitive" in the API will not
3605// be included in the string output. The member name will be present, but the
3606// value will be replaced with "sensitive".
3607func (s ListExperimentsOutput) GoString() string {
3608	return s.String()
3609}
3610
3611// SetExperiments sets the Experiments field's value.
3612func (s *ListExperimentsOutput) SetExperiments(v []*ExperimentSummary) *ListExperimentsOutput {
3613	s.Experiments = v
3614	return s
3615}
3616
3617// SetNextToken sets the NextToken field's value.
3618func (s *ListExperimentsOutput) SetNextToken(v string) *ListExperimentsOutput {
3619	s.NextToken = &v
3620	return s
3621}
3622
3623type ListTagsForResourceInput struct {
3624	_ struct{} `type:"structure" nopayload:"true"`
3625
3626	// The Amazon Resource Name (ARN) of the resource.
3627	//
3628	// ResourceArn is a required field
3629	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`
3630}
3631
3632// String returns the string representation.
3633//
3634// API parameter values that are decorated as "sensitive" in the API will not
3635// be included in the string output. The member name will be present, but the
3636// value will be replaced with "sensitive".
3637func (s ListTagsForResourceInput) String() string {
3638	return awsutil.Prettify(s)
3639}
3640
3641// GoString returns the string representation.
3642//
3643// API parameter values that are decorated as "sensitive" in the API will not
3644// be included in the string output. The member name will be present, but the
3645// value will be replaced with "sensitive".
3646func (s ListTagsForResourceInput) GoString() string {
3647	return s.String()
3648}
3649
3650// Validate inspects the fields of the type to determine if they are valid.
3651func (s *ListTagsForResourceInput) Validate() error {
3652	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
3653	if s.ResourceArn == nil {
3654		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
3655	}
3656	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
3657		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
3658	}
3659
3660	if invalidParams.Len() > 0 {
3661		return invalidParams
3662	}
3663	return nil
3664}
3665
3666// SetResourceArn sets the ResourceArn field's value.
3667func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
3668	s.ResourceArn = &v
3669	return s
3670}
3671
3672type ListTagsForResourceOutput struct {
3673	_ struct{} `type:"structure"`
3674
3675	// The tags for the resource.
3676	Tags map[string]*string `locationName:"tags" type:"map"`
3677}
3678
3679// String returns the string representation.
3680//
3681// API parameter values that are decorated as "sensitive" in the API will not
3682// be included in the string output. The member name will be present, but the
3683// value will be replaced with "sensitive".
3684func (s ListTagsForResourceOutput) String() string {
3685	return awsutil.Prettify(s)
3686}
3687
3688// GoString returns the string representation.
3689//
3690// API parameter values that are decorated as "sensitive" in the API will not
3691// be included in the string output. The member name will be present, but the
3692// value will be replaced with "sensitive".
3693func (s ListTagsForResourceOutput) GoString() string {
3694	return s.String()
3695}
3696
3697// SetTags sets the Tags field's value.
3698func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
3699	s.Tags = v
3700	return s
3701}
3702
3703// The specified resource cannot be found.
3704type ResourceNotFoundException struct {
3705	_            struct{}                  `type:"structure"`
3706	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3707
3708	Message_ *string `locationName:"message" type:"string"`
3709}
3710
3711// String returns the string representation.
3712//
3713// API parameter values that are decorated as "sensitive" in the API will not
3714// be included in the string output. The member name will be present, but the
3715// value will be replaced with "sensitive".
3716func (s ResourceNotFoundException) String() string {
3717	return awsutil.Prettify(s)
3718}
3719
3720// GoString returns the string representation.
3721//
3722// API parameter values that are decorated as "sensitive" in the API will not
3723// be included in the string output. The member name will be present, but the
3724// value will be replaced with "sensitive".
3725func (s ResourceNotFoundException) GoString() string {
3726	return s.String()
3727}
3728
3729func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
3730	return &ResourceNotFoundException{
3731		RespMetadata: v,
3732	}
3733}
3734
3735// Code returns the exception type name.
3736func (s *ResourceNotFoundException) Code() string {
3737	return "ResourceNotFoundException"
3738}
3739
3740// Message returns the exception's message.
3741func (s *ResourceNotFoundException) Message() string {
3742	if s.Message_ != nil {
3743		return *s.Message_
3744	}
3745	return ""
3746}
3747
3748// OrigErr always returns nil, satisfies awserr.Error interface.
3749func (s *ResourceNotFoundException) OrigErr() error {
3750	return nil
3751}
3752
3753func (s *ResourceNotFoundException) Error() string {
3754	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3755}
3756
3757// Status code returns the HTTP status code for the request's response error.
3758func (s *ResourceNotFoundException) StatusCode() int {
3759	return s.RespMetadata.StatusCode
3760}
3761
3762// RequestID returns the service's response RequestID for request.
3763func (s *ResourceNotFoundException) RequestID() string {
3764	return s.RespMetadata.RequestID
3765}
3766
3767// You have exceeded your service quota.
3768type ServiceQuotaExceededException struct {
3769	_            struct{}                  `type:"structure"`
3770	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3771
3772	Message_ *string `locationName:"message" type:"string"`
3773}
3774
3775// String returns the string representation.
3776//
3777// API parameter values that are decorated as "sensitive" in the API will not
3778// be included in the string output. The member name will be present, but the
3779// value will be replaced with "sensitive".
3780func (s ServiceQuotaExceededException) String() string {
3781	return awsutil.Prettify(s)
3782}
3783
3784// GoString returns the string representation.
3785//
3786// API parameter values that are decorated as "sensitive" in the API will not
3787// be included in the string output. The member name will be present, but the
3788// value will be replaced with "sensitive".
3789func (s ServiceQuotaExceededException) GoString() string {
3790	return s.String()
3791}
3792
3793func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
3794	return &ServiceQuotaExceededException{
3795		RespMetadata: v,
3796	}
3797}
3798
3799// Code returns the exception type name.
3800func (s *ServiceQuotaExceededException) Code() string {
3801	return "ServiceQuotaExceededException"
3802}
3803
3804// Message returns the exception's message.
3805func (s *ServiceQuotaExceededException) Message() string {
3806	if s.Message_ != nil {
3807		return *s.Message_
3808	}
3809	return ""
3810}
3811
3812// OrigErr always returns nil, satisfies awserr.Error interface.
3813func (s *ServiceQuotaExceededException) OrigErr() error {
3814	return nil
3815}
3816
3817func (s *ServiceQuotaExceededException) Error() string {
3818	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3819}
3820
3821// Status code returns the HTTP status code for the request's response error.
3822func (s *ServiceQuotaExceededException) StatusCode() int {
3823	return s.RespMetadata.StatusCode
3824}
3825
3826// RequestID returns the service's response RequestID for request.
3827func (s *ServiceQuotaExceededException) RequestID() string {
3828	return s.RespMetadata.RequestID
3829}
3830
3831type StartExperimentInput struct {
3832	_ struct{} `type:"structure"`
3833
3834	// Unique, case-sensitive identifier that you provide to ensure the idempotency
3835	// of the request.
3836	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`
3837
3838	// The ID of the experiment template.
3839	//
3840	// ExperimentTemplateId is a required field
3841	ExperimentTemplateId *string `locationName:"experimentTemplateId" type:"string" required:"true"`
3842
3843	// The tags to apply to the experiment.
3844	Tags map[string]*string `locationName:"tags" type:"map"`
3845}
3846
3847// String returns the string representation.
3848//
3849// API parameter values that are decorated as "sensitive" in the API will not
3850// be included in the string output. The member name will be present, but the
3851// value will be replaced with "sensitive".
3852func (s StartExperimentInput) String() string {
3853	return awsutil.Prettify(s)
3854}
3855
3856// GoString returns the string representation.
3857//
3858// API parameter values that are decorated as "sensitive" in the API will not
3859// be included in the string output. The member name will be present, but the
3860// value will be replaced with "sensitive".
3861func (s StartExperimentInput) GoString() string {
3862	return s.String()
3863}
3864
3865// Validate inspects the fields of the type to determine if they are valid.
3866func (s *StartExperimentInput) Validate() error {
3867	invalidParams := request.ErrInvalidParams{Context: "StartExperimentInput"}
3868	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
3869		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
3870	}
3871	if s.ExperimentTemplateId == nil {
3872		invalidParams.Add(request.NewErrParamRequired("ExperimentTemplateId"))
3873	}
3874
3875	if invalidParams.Len() > 0 {
3876		return invalidParams
3877	}
3878	return nil
3879}
3880
3881// SetClientToken sets the ClientToken field's value.
3882func (s *StartExperimentInput) SetClientToken(v string) *StartExperimentInput {
3883	s.ClientToken = &v
3884	return s
3885}
3886
3887// SetExperimentTemplateId sets the ExperimentTemplateId field's value.
3888func (s *StartExperimentInput) SetExperimentTemplateId(v string) *StartExperimentInput {
3889	s.ExperimentTemplateId = &v
3890	return s
3891}
3892
3893// SetTags sets the Tags field's value.
3894func (s *StartExperimentInput) SetTags(v map[string]*string) *StartExperimentInput {
3895	s.Tags = v
3896	return s
3897}
3898
3899type StartExperimentOutput struct {
3900	_ struct{} `type:"structure"`
3901
3902	// Information about the experiment.
3903	Experiment *Experiment `locationName:"experiment" type:"structure"`
3904}
3905
3906// String returns the string representation.
3907//
3908// API parameter values that are decorated as "sensitive" in the API will not
3909// be included in the string output. The member name will be present, but the
3910// value will be replaced with "sensitive".
3911func (s StartExperimentOutput) String() string {
3912	return awsutil.Prettify(s)
3913}
3914
3915// GoString returns the string representation.
3916//
3917// API parameter values that are decorated as "sensitive" in the API will not
3918// be included in the string output. The member name will be present, but the
3919// value will be replaced with "sensitive".
3920func (s StartExperimentOutput) GoString() string {
3921	return s.String()
3922}
3923
3924// SetExperiment sets the Experiment field's value.
3925func (s *StartExperimentOutput) SetExperiment(v *Experiment) *StartExperimentOutput {
3926	s.Experiment = v
3927	return s
3928}
3929
3930type StopExperimentInput struct {
3931	_ struct{} `type:"structure" nopayload:"true"`
3932
3933	// The ID of the experiment.
3934	//
3935	// Id is a required field
3936	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3937}
3938
3939// String returns the string representation.
3940//
3941// API parameter values that are decorated as "sensitive" in the API will not
3942// be included in the string output. The member name will be present, but the
3943// value will be replaced with "sensitive".
3944func (s StopExperimentInput) String() string {
3945	return awsutil.Prettify(s)
3946}
3947
3948// GoString returns the string representation.
3949//
3950// API parameter values that are decorated as "sensitive" in the API will not
3951// be included in the string output. The member name will be present, but the
3952// value will be replaced with "sensitive".
3953func (s StopExperimentInput) GoString() string {
3954	return s.String()
3955}
3956
3957// Validate inspects the fields of the type to determine if they are valid.
3958func (s *StopExperimentInput) Validate() error {
3959	invalidParams := request.ErrInvalidParams{Context: "StopExperimentInput"}
3960	if s.Id == nil {
3961		invalidParams.Add(request.NewErrParamRequired("Id"))
3962	}
3963	if s.Id != nil && len(*s.Id) < 1 {
3964		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3965	}
3966
3967	if invalidParams.Len() > 0 {
3968		return invalidParams
3969	}
3970	return nil
3971}
3972
3973// SetId sets the Id field's value.
3974func (s *StopExperimentInput) SetId(v string) *StopExperimentInput {
3975	s.Id = &v
3976	return s
3977}
3978
3979type StopExperimentOutput struct {
3980	_ struct{} `type:"structure"`
3981
3982	// Information about the experiment.
3983	Experiment *Experiment `locationName:"experiment" type:"structure"`
3984}
3985
3986// String returns the string representation.
3987//
3988// API parameter values that are decorated as "sensitive" in the API will not
3989// be included in the string output. The member name will be present, but the
3990// value will be replaced with "sensitive".
3991func (s StopExperimentOutput) String() string {
3992	return awsutil.Prettify(s)
3993}
3994
3995// GoString returns the string representation.
3996//
3997// API parameter values that are decorated as "sensitive" in the API will not
3998// be included in the string output. The member name will be present, but the
3999// value will be replaced with "sensitive".
4000func (s StopExperimentOutput) GoString() string {
4001	return s.String()
4002}
4003
4004// SetExperiment sets the Experiment field's value.
4005func (s *StopExperimentOutput) SetExperiment(v *Experiment) *StopExperimentOutput {
4006	s.Experiment = v
4007	return s
4008}
4009
4010type TagResourceInput struct {
4011	_ struct{} `type:"structure"`
4012
4013	// The Amazon Resource Name (ARN) of the resource.
4014	//
4015	// ResourceArn is a required field
4016	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`
4017
4018	// The tags for the resource.
4019	//
4020	// Tags is a required field
4021	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
4022}
4023
4024// String returns the string representation.
4025//
4026// API parameter values that are decorated as "sensitive" in the API will not
4027// be included in the string output. The member name will be present, but the
4028// value will be replaced with "sensitive".
4029func (s TagResourceInput) String() string {
4030	return awsutil.Prettify(s)
4031}
4032
4033// GoString returns the string representation.
4034//
4035// API parameter values that are decorated as "sensitive" in the API will not
4036// be included in the string output. The member name will be present, but the
4037// value will be replaced with "sensitive".
4038func (s TagResourceInput) GoString() string {
4039	return s.String()
4040}
4041
4042// Validate inspects the fields of the type to determine if they are valid.
4043func (s *TagResourceInput) Validate() error {
4044	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
4045	if s.ResourceArn == nil {
4046		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
4047	}
4048	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
4049		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
4050	}
4051	if s.Tags == nil {
4052		invalidParams.Add(request.NewErrParamRequired("Tags"))
4053	}
4054
4055	if invalidParams.Len() > 0 {
4056		return invalidParams
4057	}
4058	return nil
4059}
4060
4061// SetResourceArn sets the ResourceArn field's value.
4062func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
4063	s.ResourceArn = &v
4064	return s
4065}
4066
4067// SetTags sets the Tags field's value.
4068func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
4069	s.Tags = v
4070	return s
4071}
4072
4073type TagResourceOutput struct {
4074	_ struct{} `type:"structure"`
4075}
4076
4077// String returns the string representation.
4078//
4079// API parameter values that are decorated as "sensitive" in the API will not
4080// be included in the string output. The member name will be present, but the
4081// value will be replaced with "sensitive".
4082func (s TagResourceOutput) String() string {
4083	return awsutil.Prettify(s)
4084}
4085
4086// GoString returns the string representation.
4087//
4088// API parameter values that are decorated as "sensitive" in the API will not
4089// be included in the string output. The member name will be present, but the
4090// value will be replaced with "sensitive".
4091func (s TagResourceOutput) GoString() string {
4092	return s.String()
4093}
4094
4095type UntagResourceInput struct {
4096	_ struct{} `type:"structure" nopayload:"true"`
4097
4098	// The Amazon Resource Name (ARN) of the resource.
4099	//
4100	// ResourceArn is a required field
4101	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`
4102
4103	// The tag keys to remove.
4104	TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list"`
4105}
4106
4107// String returns the string representation.
4108//
4109// API parameter values that are decorated as "sensitive" in the API will not
4110// be included in the string output. The member name will be present, but the
4111// value will be replaced with "sensitive".
4112func (s UntagResourceInput) String() string {
4113	return awsutil.Prettify(s)
4114}
4115
4116// GoString returns the string representation.
4117//
4118// API parameter values that are decorated as "sensitive" in the API will not
4119// be included in the string output. The member name will be present, but the
4120// value will be replaced with "sensitive".
4121func (s UntagResourceInput) GoString() string {
4122	return s.String()
4123}
4124
4125// Validate inspects the fields of the type to determine if they are valid.
4126func (s *UntagResourceInput) Validate() error {
4127	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
4128	if s.ResourceArn == nil {
4129		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
4130	}
4131	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
4132		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
4133	}
4134
4135	if invalidParams.Len() > 0 {
4136		return invalidParams
4137	}
4138	return nil
4139}
4140
4141// SetResourceArn sets the ResourceArn field's value.
4142func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
4143	s.ResourceArn = &v
4144	return s
4145}
4146
4147// SetTagKeys sets the TagKeys field's value.
4148func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
4149	s.TagKeys = v
4150	return s
4151}
4152
4153type UntagResourceOutput struct {
4154	_ struct{} `type:"structure"`
4155}
4156
4157// String returns the string representation.
4158//
4159// API parameter values that are decorated as "sensitive" in the API will not
4160// be included in the string output. The member name will be present, but the
4161// value will be replaced with "sensitive".
4162func (s UntagResourceOutput) String() string {
4163	return awsutil.Prettify(s)
4164}
4165
4166// GoString returns the string representation.
4167//
4168// API parameter values that are decorated as "sensitive" in the API will not
4169// be included in the string output. The member name will be present, but the
4170// value will be replaced with "sensitive".
4171func (s UntagResourceOutput) GoString() string {
4172	return s.String()
4173}
4174
4175// Specifies an action for an experiment template.
4176type UpdateExperimentTemplateActionInputItem struct {
4177	_ struct{} `type:"structure"`
4178
4179	// The ID of the action.
4180	ActionId *string `locationName:"actionId" type:"string"`
4181
4182	// A description for the action.
4183	Description *string `locationName:"description" type:"string"`
4184
4185	// The parameters for the action, if applicable.
4186	Parameters map[string]*string `locationName:"parameters" type:"map"`
4187
4188	// The name of the action that must be completed before the current action starts.
4189	// Omit this parameter to run the action at the start of the experiment.
4190	StartAfter []*string `locationName:"startAfter" type:"list"`
4191
4192	// The targets for the action.
4193	Targets map[string]*string `locationName:"targets" type:"map"`
4194}
4195
4196// String returns the string representation.
4197//
4198// API parameter values that are decorated as "sensitive" in the API will not
4199// be included in the string output. The member name will be present, but the
4200// value will be replaced with "sensitive".
4201func (s UpdateExperimentTemplateActionInputItem) String() string {
4202	return awsutil.Prettify(s)
4203}
4204
4205// GoString returns the string representation.
4206//
4207// API parameter values that are decorated as "sensitive" in the API will not
4208// be included in the string output. The member name will be present, but the
4209// value will be replaced with "sensitive".
4210func (s UpdateExperimentTemplateActionInputItem) GoString() string {
4211	return s.String()
4212}
4213
4214// SetActionId sets the ActionId field's value.
4215func (s *UpdateExperimentTemplateActionInputItem) SetActionId(v string) *UpdateExperimentTemplateActionInputItem {
4216	s.ActionId = &v
4217	return s
4218}
4219
4220// SetDescription sets the Description field's value.
4221func (s *UpdateExperimentTemplateActionInputItem) SetDescription(v string) *UpdateExperimentTemplateActionInputItem {
4222	s.Description = &v
4223	return s
4224}
4225
4226// SetParameters sets the Parameters field's value.
4227func (s *UpdateExperimentTemplateActionInputItem) SetParameters(v map[string]*string) *UpdateExperimentTemplateActionInputItem {
4228	s.Parameters = v
4229	return s
4230}
4231
4232// SetStartAfter sets the StartAfter field's value.
4233func (s *UpdateExperimentTemplateActionInputItem) SetStartAfter(v []*string) *UpdateExperimentTemplateActionInputItem {
4234	s.StartAfter = v
4235	return s
4236}
4237
4238// SetTargets sets the Targets field's value.
4239func (s *UpdateExperimentTemplateActionInputItem) SetTargets(v map[string]*string) *UpdateExperimentTemplateActionInputItem {
4240	s.Targets = v
4241	return s
4242}
4243
4244type UpdateExperimentTemplateInput struct {
4245	_ struct{} `type:"structure"`
4246
4247	// The actions for the experiment.
4248	Actions map[string]*UpdateExperimentTemplateActionInputItem `locationName:"actions" type:"map"`
4249
4250	// A description for the template.
4251	Description *string `locationName:"description" type:"string"`
4252
4253	// The ID of the experiment template.
4254	//
4255	// Id is a required field
4256	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
4257
4258	// The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service
4259	// permission to perform service actions on your behalf.
4260	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`
4261
4262	// The stop conditions for the experiment.
4263	StopConditions []*UpdateExperimentTemplateStopConditionInput `locationName:"stopConditions" type:"list"`
4264
4265	// The targets for the experiment.
4266	Targets map[string]*UpdateExperimentTemplateTargetInput `locationName:"targets" type:"map"`
4267}
4268
4269// String returns the string representation.
4270//
4271// API parameter values that are decorated as "sensitive" in the API will not
4272// be included in the string output. The member name will be present, but the
4273// value will be replaced with "sensitive".
4274func (s UpdateExperimentTemplateInput) String() string {
4275	return awsutil.Prettify(s)
4276}
4277
4278// GoString returns the string representation.
4279//
4280// API parameter values that are decorated as "sensitive" in the API will not
4281// be included in the string output. The member name will be present, but the
4282// value will be replaced with "sensitive".
4283func (s UpdateExperimentTemplateInput) GoString() string {
4284	return s.String()
4285}
4286
4287// Validate inspects the fields of the type to determine if they are valid.
4288func (s *UpdateExperimentTemplateInput) Validate() error {
4289	invalidParams := request.ErrInvalidParams{Context: "UpdateExperimentTemplateInput"}
4290	if s.Id == nil {
4291		invalidParams.Add(request.NewErrParamRequired("Id"))
4292	}
4293	if s.Id != nil && len(*s.Id) < 1 {
4294		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
4295	}
4296	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
4297		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
4298	}
4299	if s.StopConditions != nil {
4300		for i, v := range s.StopConditions {
4301			if v == nil {
4302				continue
4303			}
4304			if err := v.Validate(); err != nil {
4305				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StopConditions", i), err.(request.ErrInvalidParams))
4306			}
4307		}
4308	}
4309	if s.Targets != nil {
4310		for i, v := range s.Targets {
4311			if v == nil {
4312				continue
4313			}
4314			if err := v.Validate(); err != nil {
4315				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
4316			}
4317		}
4318	}
4319
4320	if invalidParams.Len() > 0 {
4321		return invalidParams
4322	}
4323	return nil
4324}
4325
4326// SetActions sets the Actions field's value.
4327func (s *UpdateExperimentTemplateInput) SetActions(v map[string]*UpdateExperimentTemplateActionInputItem) *UpdateExperimentTemplateInput {
4328	s.Actions = v
4329	return s
4330}
4331
4332// SetDescription sets the Description field's value.
4333func (s *UpdateExperimentTemplateInput) SetDescription(v string) *UpdateExperimentTemplateInput {
4334	s.Description = &v
4335	return s
4336}
4337
4338// SetId sets the Id field's value.
4339func (s *UpdateExperimentTemplateInput) SetId(v string) *UpdateExperimentTemplateInput {
4340	s.Id = &v
4341	return s
4342}
4343
4344// SetRoleArn sets the RoleArn field's value.
4345func (s *UpdateExperimentTemplateInput) SetRoleArn(v string) *UpdateExperimentTemplateInput {
4346	s.RoleArn = &v
4347	return s
4348}
4349
4350// SetStopConditions sets the StopConditions field's value.
4351func (s *UpdateExperimentTemplateInput) SetStopConditions(v []*UpdateExperimentTemplateStopConditionInput) *UpdateExperimentTemplateInput {
4352	s.StopConditions = v
4353	return s
4354}
4355
4356// SetTargets sets the Targets field's value.
4357func (s *UpdateExperimentTemplateInput) SetTargets(v map[string]*UpdateExperimentTemplateTargetInput) *UpdateExperimentTemplateInput {
4358	s.Targets = v
4359	return s
4360}
4361
4362type UpdateExperimentTemplateOutput struct {
4363	_ struct{} `type:"structure"`
4364
4365	// Information about the experiment template.
4366	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
4367}
4368
4369// String returns the string representation.
4370//
4371// API parameter values that are decorated as "sensitive" in the API will not
4372// be included in the string output. The member name will be present, but the
4373// value will be replaced with "sensitive".
4374func (s UpdateExperimentTemplateOutput) String() string {
4375	return awsutil.Prettify(s)
4376}
4377
4378// GoString returns the string representation.
4379//
4380// API parameter values that are decorated as "sensitive" in the API will not
4381// be included in the string output. The member name will be present, but the
4382// value will be replaced with "sensitive".
4383func (s UpdateExperimentTemplateOutput) GoString() string {
4384	return s.String()
4385}
4386
4387// SetExperimentTemplate sets the ExperimentTemplate field's value.
4388func (s *UpdateExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *UpdateExperimentTemplateOutput {
4389	s.ExperimentTemplate = v
4390	return s
4391}
4392
4393// Specifies a stop condition for an experiment. You can define a stop condition
4394// as a CloudWatch alarm.
4395type UpdateExperimentTemplateStopConditionInput struct {
4396	_ struct{} `type:"structure"`
4397
4398	// The source for the stop condition. Specify aws:cloudwatch:alarm if the stop
4399	// condition is defined by a CloudWatch alarm. Specify none if there is no stop
4400	// condition.
4401	//
4402	// Source is a required field
4403	Source *string `locationName:"source" type:"string" required:"true"`
4404
4405	// The Amazon Resource Name (ARN) of the CloudWatch alarm.
4406	Value *string `locationName:"value" min:"20" type:"string"`
4407}
4408
4409// String returns the string representation.
4410//
4411// API parameter values that are decorated as "sensitive" in the API will not
4412// be included in the string output. The member name will be present, but the
4413// value will be replaced with "sensitive".
4414func (s UpdateExperimentTemplateStopConditionInput) String() string {
4415	return awsutil.Prettify(s)
4416}
4417
4418// GoString returns the string representation.
4419//
4420// API parameter values that are decorated as "sensitive" in the API will not
4421// be included in the string output. The member name will be present, but the
4422// value will be replaced with "sensitive".
4423func (s UpdateExperimentTemplateStopConditionInput) GoString() string {
4424	return s.String()
4425}
4426
4427// Validate inspects the fields of the type to determine if they are valid.
4428func (s *UpdateExperimentTemplateStopConditionInput) Validate() error {
4429	invalidParams := request.ErrInvalidParams{Context: "UpdateExperimentTemplateStopConditionInput"}
4430	if s.Source == nil {
4431		invalidParams.Add(request.NewErrParamRequired("Source"))
4432	}
4433	if s.Value != nil && len(*s.Value) < 20 {
4434		invalidParams.Add(request.NewErrParamMinLen("Value", 20))
4435	}
4436
4437	if invalidParams.Len() > 0 {
4438		return invalidParams
4439	}
4440	return nil
4441}
4442
4443// SetSource sets the Source field's value.
4444func (s *UpdateExperimentTemplateStopConditionInput) SetSource(v string) *UpdateExperimentTemplateStopConditionInput {
4445	s.Source = &v
4446	return s
4447}
4448
4449// SetValue sets the Value field's value.
4450func (s *UpdateExperimentTemplateStopConditionInput) SetValue(v string) *UpdateExperimentTemplateStopConditionInput {
4451	s.Value = &v
4452	return s
4453}
4454
4455// Specifies a target for an experiment. You must specify at least one Amazon
4456// Resource Name (ARN) or at least one resource tag. You cannot specify both.
4457type UpdateExperimentTemplateTargetInput struct {
4458	_ struct{} `type:"structure"`
4459
4460	// The filters to apply to identify target resources using specific attributes.
4461	Filters []*ExperimentTemplateTargetInputFilter `locationName:"filters" type:"list"`
4462
4463	// The Amazon Resource Names (ARNs) of the targets.
4464	ResourceArns []*string `locationName:"resourceArns" type:"list"`
4465
4466	// The tags for the target resources.
4467	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
4468
4469	// The AWS resource type. The resource type must be supported for the specified
4470	// action.
4471	//
4472	// ResourceType is a required field
4473	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
4474
4475	// Scopes the identified resources to a specific count or percentage.
4476	//
4477	// SelectionMode is a required field
4478	SelectionMode *string `locationName:"selectionMode" type:"string" required:"true"`
4479}
4480
4481// String returns the string representation.
4482//
4483// API parameter values that are decorated as "sensitive" in the API will not
4484// be included in the string output. The member name will be present, but the
4485// value will be replaced with "sensitive".
4486func (s UpdateExperimentTemplateTargetInput) String() string {
4487	return awsutil.Prettify(s)
4488}
4489
4490// GoString returns the string representation.
4491//
4492// API parameter values that are decorated as "sensitive" in the API will not
4493// be included in the string output. The member name will be present, but the
4494// value will be replaced with "sensitive".
4495func (s UpdateExperimentTemplateTargetInput) GoString() string {
4496	return s.String()
4497}
4498
4499// Validate inspects the fields of the type to determine if they are valid.
4500func (s *UpdateExperimentTemplateTargetInput) Validate() error {
4501	invalidParams := request.ErrInvalidParams{Context: "UpdateExperimentTemplateTargetInput"}
4502	if s.ResourceType == nil {
4503		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
4504	}
4505	if s.SelectionMode == nil {
4506		invalidParams.Add(request.NewErrParamRequired("SelectionMode"))
4507	}
4508	if s.Filters != nil {
4509		for i, v := range s.Filters {
4510			if v == nil {
4511				continue
4512			}
4513			if err := v.Validate(); err != nil {
4514				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
4515			}
4516		}
4517	}
4518
4519	if invalidParams.Len() > 0 {
4520		return invalidParams
4521	}
4522	return nil
4523}
4524
4525// SetFilters sets the Filters field's value.
4526func (s *UpdateExperimentTemplateTargetInput) SetFilters(v []*ExperimentTemplateTargetInputFilter) *UpdateExperimentTemplateTargetInput {
4527	s.Filters = v
4528	return s
4529}
4530
4531// SetResourceArns sets the ResourceArns field's value.
4532func (s *UpdateExperimentTemplateTargetInput) SetResourceArns(v []*string) *UpdateExperimentTemplateTargetInput {
4533	s.ResourceArns = v
4534	return s
4535}
4536
4537// SetResourceTags sets the ResourceTags field's value.
4538func (s *UpdateExperimentTemplateTargetInput) SetResourceTags(v map[string]*string) *UpdateExperimentTemplateTargetInput {
4539	s.ResourceTags = v
4540	return s
4541}
4542
4543// SetResourceType sets the ResourceType field's value.
4544func (s *UpdateExperimentTemplateTargetInput) SetResourceType(v string) *UpdateExperimentTemplateTargetInput {
4545	s.ResourceType = &v
4546	return s
4547}
4548
4549// SetSelectionMode sets the SelectionMode field's value.
4550func (s *UpdateExperimentTemplateTargetInput) SetSelectionMode(v string) *UpdateExperimentTemplateTargetInput {
4551	s.SelectionMode = &v
4552	return s
4553}
4554
4555// The specified input is not valid, or fails to satisfy the constraints for
4556// the request.
4557type ValidationException struct {
4558	_            struct{}                  `type:"structure"`
4559	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
4560
4561	Message_ *string `locationName:"message" type:"string"`
4562}
4563
4564// String returns the string representation.
4565//
4566// API parameter values that are decorated as "sensitive" in the API will not
4567// be included in the string output. The member name will be present, but the
4568// value will be replaced with "sensitive".
4569func (s ValidationException) String() string {
4570	return awsutil.Prettify(s)
4571}
4572
4573// GoString returns the string representation.
4574//
4575// API parameter values that are decorated as "sensitive" in the API will not
4576// be included in the string output. The member name will be present, but the
4577// value will be replaced with "sensitive".
4578func (s ValidationException) GoString() string {
4579	return s.String()
4580}
4581
4582func newErrorValidationException(v protocol.ResponseMetadata) error {
4583	return &ValidationException{
4584		RespMetadata: v,
4585	}
4586}
4587
4588// Code returns the exception type name.
4589func (s *ValidationException) Code() string {
4590	return "ValidationException"
4591}
4592
4593// Message returns the exception's message.
4594func (s *ValidationException) Message() string {
4595	if s.Message_ != nil {
4596		return *s.Message_
4597	}
4598	return ""
4599}
4600
4601// OrigErr always returns nil, satisfies awserr.Error interface.
4602func (s *ValidationException) OrigErr() error {
4603	return nil
4604}
4605
4606func (s *ValidationException) Error() string {
4607	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
4608}
4609
4610// Status code returns the HTTP status code for the request's response error.
4611func (s *ValidationException) StatusCode() int {
4612	return s.RespMetadata.StatusCode
4613}
4614
4615// RequestID returns the service's response RequestID for request.
4616func (s *ValidationException) RequestID() string {
4617	return s.RespMetadata.RequestID
4618}
4619
4620const (
4621	// ExperimentActionStatusPending is a ExperimentActionStatus enum value
4622	ExperimentActionStatusPending = "pending"
4623
4624	// ExperimentActionStatusInitiating is a ExperimentActionStatus enum value
4625	ExperimentActionStatusInitiating = "initiating"
4626
4627	// ExperimentActionStatusRunning is a ExperimentActionStatus enum value
4628	ExperimentActionStatusRunning = "running"
4629
4630	// ExperimentActionStatusCompleted is a ExperimentActionStatus enum value
4631	ExperimentActionStatusCompleted = "completed"
4632
4633	// ExperimentActionStatusCancelled is a ExperimentActionStatus enum value
4634	ExperimentActionStatusCancelled = "cancelled"
4635
4636	// ExperimentActionStatusStopping is a ExperimentActionStatus enum value
4637	ExperimentActionStatusStopping = "stopping"
4638
4639	// ExperimentActionStatusStopped is a ExperimentActionStatus enum value
4640	ExperimentActionStatusStopped = "stopped"
4641
4642	// ExperimentActionStatusFailed is a ExperimentActionStatus enum value
4643	ExperimentActionStatusFailed = "failed"
4644)
4645
4646// ExperimentActionStatus_Values returns all elements of the ExperimentActionStatus enum
4647func ExperimentActionStatus_Values() []string {
4648	return []string{
4649		ExperimentActionStatusPending,
4650		ExperimentActionStatusInitiating,
4651		ExperimentActionStatusRunning,
4652		ExperimentActionStatusCompleted,
4653		ExperimentActionStatusCancelled,
4654		ExperimentActionStatusStopping,
4655		ExperimentActionStatusStopped,
4656		ExperimentActionStatusFailed,
4657	}
4658}
4659
4660const (
4661	// ExperimentStatusPending is a ExperimentStatus enum value
4662	ExperimentStatusPending = "pending"
4663
4664	// ExperimentStatusInitiating is a ExperimentStatus enum value
4665	ExperimentStatusInitiating = "initiating"
4666
4667	// ExperimentStatusRunning is a ExperimentStatus enum value
4668	ExperimentStatusRunning = "running"
4669
4670	// ExperimentStatusCompleted is a ExperimentStatus enum value
4671	ExperimentStatusCompleted = "completed"
4672
4673	// ExperimentStatusStopping is a ExperimentStatus enum value
4674	ExperimentStatusStopping = "stopping"
4675
4676	// ExperimentStatusStopped is a ExperimentStatus enum value
4677	ExperimentStatusStopped = "stopped"
4678
4679	// ExperimentStatusFailed is a ExperimentStatus enum value
4680	ExperimentStatusFailed = "failed"
4681)
4682
4683// ExperimentStatus_Values returns all elements of the ExperimentStatus enum
4684func ExperimentStatus_Values() []string {
4685	return []string{
4686		ExperimentStatusPending,
4687		ExperimentStatusInitiating,
4688		ExperimentStatusRunning,
4689		ExperimentStatusCompleted,
4690		ExperimentStatusStopping,
4691		ExperimentStatusStopped,
4692		ExperimentStatusFailed,
4693	}
4694}
4695