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
1371func (s Action) String() string {
1372	return awsutil.Prettify(s)
1373}
1374
1375// GoString returns the string representation
1376func (s Action) GoString() string {
1377	return s.String()
1378}
1379
1380// SetDescription sets the Description field's value.
1381func (s *Action) SetDescription(v string) *Action {
1382	s.Description = &v
1383	return s
1384}
1385
1386// SetId sets the Id field's value.
1387func (s *Action) SetId(v string) *Action {
1388	s.Id = &v
1389	return s
1390}
1391
1392// SetParameters sets the Parameters field's value.
1393func (s *Action) SetParameters(v map[string]*ActionParameter) *Action {
1394	s.Parameters = v
1395	return s
1396}
1397
1398// SetTags sets the Tags field's value.
1399func (s *Action) SetTags(v map[string]*string) *Action {
1400	s.Tags = v
1401	return s
1402}
1403
1404// SetTargets sets the Targets field's value.
1405func (s *Action) SetTargets(v map[string]*ActionTarget) *Action {
1406	s.Targets = v
1407	return s
1408}
1409
1410// Describes a parameter for an action.
1411type ActionParameter struct {
1412	_ struct{} `type:"structure"`
1413
1414	// The parameter description.
1415	Description *string `locationName:"description" type:"string"`
1416
1417	// Indicates whether the parameter is required.
1418	Required *bool `locationName:"required" type:"boolean"`
1419}
1420
1421// String returns the string representation
1422func (s ActionParameter) String() string {
1423	return awsutil.Prettify(s)
1424}
1425
1426// GoString returns the string representation
1427func (s ActionParameter) GoString() string {
1428	return s.String()
1429}
1430
1431// SetDescription sets the Description field's value.
1432func (s *ActionParameter) SetDescription(v string) *ActionParameter {
1433	s.Description = &v
1434	return s
1435}
1436
1437// SetRequired sets the Required field's value.
1438func (s *ActionParameter) SetRequired(v bool) *ActionParameter {
1439	s.Required = &v
1440	return s
1441}
1442
1443// Provides a summary of an action.
1444type ActionSummary struct {
1445	_ struct{} `type:"structure"`
1446
1447	// The description for the action.
1448	Description *string `locationName:"description" type:"string"`
1449
1450	// The ID of the action.
1451	Id *string `locationName:"id" type:"string"`
1452
1453	// The tags for the action.
1454	Tags map[string]*string `locationName:"tags" type:"map"`
1455
1456	// The targets for the action.
1457	Targets map[string]*ActionTarget `locationName:"targets" type:"map"`
1458}
1459
1460// String returns the string representation
1461func (s ActionSummary) String() string {
1462	return awsutil.Prettify(s)
1463}
1464
1465// GoString returns the string representation
1466func (s ActionSummary) GoString() string {
1467	return s.String()
1468}
1469
1470// SetDescription sets the Description field's value.
1471func (s *ActionSummary) SetDescription(v string) *ActionSummary {
1472	s.Description = &v
1473	return s
1474}
1475
1476// SetId sets the Id field's value.
1477func (s *ActionSummary) SetId(v string) *ActionSummary {
1478	s.Id = &v
1479	return s
1480}
1481
1482// SetTags sets the Tags field's value.
1483func (s *ActionSummary) SetTags(v map[string]*string) *ActionSummary {
1484	s.Tags = v
1485	return s
1486}
1487
1488// SetTargets sets the Targets field's value.
1489func (s *ActionSummary) SetTargets(v map[string]*ActionTarget) *ActionSummary {
1490	s.Targets = v
1491	return s
1492}
1493
1494// Describes a target for an action.
1495type ActionTarget struct {
1496	_ struct{} `type:"structure"`
1497
1498	// The resource type of the target.
1499	ResourceType *string `locationName:"resourceType" type:"string"`
1500}
1501
1502// String returns the string representation
1503func (s ActionTarget) String() string {
1504	return awsutil.Prettify(s)
1505}
1506
1507// GoString returns the string representation
1508func (s ActionTarget) GoString() string {
1509	return s.String()
1510}
1511
1512// SetResourceType sets the ResourceType field's value.
1513func (s *ActionTarget) SetResourceType(v string) *ActionTarget {
1514	s.ResourceType = &v
1515	return s
1516}
1517
1518// The request could not be processed because of a conflict.
1519type ConflictException struct {
1520	_            struct{}                  `type:"structure"`
1521	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1522
1523	Message_ *string `locationName:"message" type:"string"`
1524}
1525
1526// String returns the string representation
1527func (s ConflictException) String() string {
1528	return awsutil.Prettify(s)
1529}
1530
1531// GoString returns the string representation
1532func (s ConflictException) GoString() string {
1533	return s.String()
1534}
1535
1536func newErrorConflictException(v protocol.ResponseMetadata) error {
1537	return &ConflictException{
1538		RespMetadata: v,
1539	}
1540}
1541
1542// Code returns the exception type name.
1543func (s *ConflictException) Code() string {
1544	return "ConflictException"
1545}
1546
1547// Message returns the exception's message.
1548func (s *ConflictException) Message() string {
1549	if s.Message_ != nil {
1550		return *s.Message_
1551	}
1552	return ""
1553}
1554
1555// OrigErr always returns nil, satisfies awserr.Error interface.
1556func (s *ConflictException) OrigErr() error {
1557	return nil
1558}
1559
1560func (s *ConflictException) Error() string {
1561	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1562}
1563
1564// Status code returns the HTTP status code for the request's response error.
1565func (s *ConflictException) StatusCode() int {
1566	return s.RespMetadata.StatusCode
1567}
1568
1569// RequestID returns the service's response RequestID for request.
1570func (s *ConflictException) RequestID() string {
1571	return s.RespMetadata.RequestID
1572}
1573
1574// Specifies an action for an experiment template.
1575type CreateExperimentTemplateActionInput struct {
1576	_ struct{} `type:"structure"`
1577
1578	// The ID of the action.
1579	//
1580	// ActionId is a required field
1581	ActionId *string `locationName:"actionId" type:"string" required:"true"`
1582
1583	// A description for the action.
1584	Description *string `locationName:"description" type:"string"`
1585
1586	// The parameters for the action, if applicable.
1587	Parameters map[string]*string `locationName:"parameters" type:"map"`
1588
1589	// The name of the action that must be completed before the current action starts.
1590	// Omit this parameter to run the action at the start of the experiment.
1591	StartAfter []*string `locationName:"startAfter" type:"list"`
1592
1593	// The targets for the action.
1594	Targets map[string]*string `locationName:"targets" type:"map"`
1595}
1596
1597// String returns the string representation
1598func (s CreateExperimentTemplateActionInput) String() string {
1599	return awsutil.Prettify(s)
1600}
1601
1602// GoString returns the string representation
1603func (s CreateExperimentTemplateActionInput) GoString() string {
1604	return s.String()
1605}
1606
1607// Validate inspects the fields of the type to determine if they are valid.
1608func (s *CreateExperimentTemplateActionInput) Validate() error {
1609	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateActionInput"}
1610	if s.ActionId == nil {
1611		invalidParams.Add(request.NewErrParamRequired("ActionId"))
1612	}
1613
1614	if invalidParams.Len() > 0 {
1615		return invalidParams
1616	}
1617	return nil
1618}
1619
1620// SetActionId sets the ActionId field's value.
1621func (s *CreateExperimentTemplateActionInput) SetActionId(v string) *CreateExperimentTemplateActionInput {
1622	s.ActionId = &v
1623	return s
1624}
1625
1626// SetDescription sets the Description field's value.
1627func (s *CreateExperimentTemplateActionInput) SetDescription(v string) *CreateExperimentTemplateActionInput {
1628	s.Description = &v
1629	return s
1630}
1631
1632// SetParameters sets the Parameters field's value.
1633func (s *CreateExperimentTemplateActionInput) SetParameters(v map[string]*string) *CreateExperimentTemplateActionInput {
1634	s.Parameters = v
1635	return s
1636}
1637
1638// SetStartAfter sets the StartAfter field's value.
1639func (s *CreateExperimentTemplateActionInput) SetStartAfter(v []*string) *CreateExperimentTemplateActionInput {
1640	s.StartAfter = v
1641	return s
1642}
1643
1644// SetTargets sets the Targets field's value.
1645func (s *CreateExperimentTemplateActionInput) SetTargets(v map[string]*string) *CreateExperimentTemplateActionInput {
1646	s.Targets = v
1647	return s
1648}
1649
1650type CreateExperimentTemplateInput struct {
1651	_ struct{} `type:"structure"`
1652
1653	// The actions for the experiment.
1654	//
1655	// Actions is a required field
1656	Actions map[string]*CreateExperimentTemplateActionInput `locationName:"actions" type:"map" required:"true"`
1657
1658	// Unique, case-sensitive identifier that you provide to ensure the idempotency
1659	// of the request.
1660	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`
1661
1662	// A description for the experiment template. Can contain up to 64 letters (A-Z
1663	// and a-z).
1664	//
1665	// Description is a required field
1666	Description *string `locationName:"description" type:"string" required:"true"`
1667
1668	// The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service
1669	// permission to perform service actions on your behalf.
1670	//
1671	// RoleArn is a required field
1672	RoleArn *string `locationName:"roleArn" min:"20" type:"string" required:"true"`
1673
1674	// The stop conditions.
1675	//
1676	// StopConditions is a required field
1677	StopConditions []*CreateExperimentTemplateStopConditionInput `locationName:"stopConditions" type:"list" required:"true"`
1678
1679	// The tags to apply to the experiment template.
1680	Tags map[string]*string `locationName:"tags" type:"map"`
1681
1682	// The targets for the experiment.
1683	Targets map[string]*CreateExperimentTemplateTargetInput `locationName:"targets" type:"map"`
1684}
1685
1686// String returns the string representation
1687func (s CreateExperimentTemplateInput) String() string {
1688	return awsutil.Prettify(s)
1689}
1690
1691// GoString returns the string representation
1692func (s CreateExperimentTemplateInput) GoString() string {
1693	return s.String()
1694}
1695
1696// Validate inspects the fields of the type to determine if they are valid.
1697func (s *CreateExperimentTemplateInput) Validate() error {
1698	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateInput"}
1699	if s.Actions == nil {
1700		invalidParams.Add(request.NewErrParamRequired("Actions"))
1701	}
1702	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
1703		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
1704	}
1705	if s.Description == nil {
1706		invalidParams.Add(request.NewErrParamRequired("Description"))
1707	}
1708	if s.RoleArn == nil {
1709		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
1710	}
1711	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
1712		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
1713	}
1714	if s.StopConditions == nil {
1715		invalidParams.Add(request.NewErrParamRequired("StopConditions"))
1716	}
1717	if s.Actions != nil {
1718		for i, v := range s.Actions {
1719			if v == nil {
1720				continue
1721			}
1722			if err := v.Validate(); err != nil {
1723				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
1724			}
1725		}
1726	}
1727	if s.StopConditions != nil {
1728		for i, v := range s.StopConditions {
1729			if v == nil {
1730				continue
1731			}
1732			if err := v.Validate(); err != nil {
1733				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StopConditions", i), err.(request.ErrInvalidParams))
1734			}
1735		}
1736	}
1737	if s.Targets != nil {
1738		for i, v := range s.Targets {
1739			if v == nil {
1740				continue
1741			}
1742			if err := v.Validate(); err != nil {
1743				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
1744			}
1745		}
1746	}
1747
1748	if invalidParams.Len() > 0 {
1749		return invalidParams
1750	}
1751	return nil
1752}
1753
1754// SetActions sets the Actions field's value.
1755func (s *CreateExperimentTemplateInput) SetActions(v map[string]*CreateExperimentTemplateActionInput) *CreateExperimentTemplateInput {
1756	s.Actions = v
1757	return s
1758}
1759
1760// SetClientToken sets the ClientToken field's value.
1761func (s *CreateExperimentTemplateInput) SetClientToken(v string) *CreateExperimentTemplateInput {
1762	s.ClientToken = &v
1763	return s
1764}
1765
1766// SetDescription sets the Description field's value.
1767func (s *CreateExperimentTemplateInput) SetDescription(v string) *CreateExperimentTemplateInput {
1768	s.Description = &v
1769	return s
1770}
1771
1772// SetRoleArn sets the RoleArn field's value.
1773func (s *CreateExperimentTemplateInput) SetRoleArn(v string) *CreateExperimentTemplateInput {
1774	s.RoleArn = &v
1775	return s
1776}
1777
1778// SetStopConditions sets the StopConditions field's value.
1779func (s *CreateExperimentTemplateInput) SetStopConditions(v []*CreateExperimentTemplateStopConditionInput) *CreateExperimentTemplateInput {
1780	s.StopConditions = v
1781	return s
1782}
1783
1784// SetTags sets the Tags field's value.
1785func (s *CreateExperimentTemplateInput) SetTags(v map[string]*string) *CreateExperimentTemplateInput {
1786	s.Tags = v
1787	return s
1788}
1789
1790// SetTargets sets the Targets field's value.
1791func (s *CreateExperimentTemplateInput) SetTargets(v map[string]*CreateExperimentTemplateTargetInput) *CreateExperimentTemplateInput {
1792	s.Targets = v
1793	return s
1794}
1795
1796type CreateExperimentTemplateOutput struct {
1797	_ struct{} `type:"structure"`
1798
1799	// Information about the experiment template.
1800	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
1801}
1802
1803// String returns the string representation
1804func (s CreateExperimentTemplateOutput) String() string {
1805	return awsutil.Prettify(s)
1806}
1807
1808// GoString returns the string representation
1809func (s CreateExperimentTemplateOutput) GoString() string {
1810	return s.String()
1811}
1812
1813// SetExperimentTemplate sets the ExperimentTemplate field's value.
1814func (s *CreateExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *CreateExperimentTemplateOutput {
1815	s.ExperimentTemplate = v
1816	return s
1817}
1818
1819// Specifies a stop condition for an experiment template.
1820type CreateExperimentTemplateStopConditionInput struct {
1821	_ struct{} `type:"structure"`
1822
1823	// The source for the stop condition. Specify aws:cloudwatch:alarm if the stop
1824	// condition is defined by a CloudWatch alarm. Specify none if there is no stop
1825	// condition.
1826	//
1827	// Source is a required field
1828	Source *string `locationName:"source" type:"string" required:"true"`
1829
1830	// The Amazon Resource Name (ARN) of the CloudWatch alarm. This is required
1831	// if the source is a CloudWatch alarm.
1832	Value *string `locationName:"value" min:"20" type:"string"`
1833}
1834
1835// String returns the string representation
1836func (s CreateExperimentTemplateStopConditionInput) String() string {
1837	return awsutil.Prettify(s)
1838}
1839
1840// GoString returns the string representation
1841func (s CreateExperimentTemplateStopConditionInput) GoString() string {
1842	return s.String()
1843}
1844
1845// Validate inspects the fields of the type to determine if they are valid.
1846func (s *CreateExperimentTemplateStopConditionInput) Validate() error {
1847	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateStopConditionInput"}
1848	if s.Source == nil {
1849		invalidParams.Add(request.NewErrParamRequired("Source"))
1850	}
1851	if s.Value != nil && len(*s.Value) < 20 {
1852		invalidParams.Add(request.NewErrParamMinLen("Value", 20))
1853	}
1854
1855	if invalidParams.Len() > 0 {
1856		return invalidParams
1857	}
1858	return nil
1859}
1860
1861// SetSource sets the Source field's value.
1862func (s *CreateExperimentTemplateStopConditionInput) SetSource(v string) *CreateExperimentTemplateStopConditionInput {
1863	s.Source = &v
1864	return s
1865}
1866
1867// SetValue sets the Value field's value.
1868func (s *CreateExperimentTemplateStopConditionInput) SetValue(v string) *CreateExperimentTemplateStopConditionInput {
1869	s.Value = &v
1870	return s
1871}
1872
1873// Specifies a target for an experiment. You must specify at least one Amazon
1874// Resource Name (ARN) or at least one resource tag. You cannot specify both
1875// ARNs and tags.
1876type CreateExperimentTemplateTargetInput struct {
1877	_ struct{} `type:"structure"`
1878
1879	// The filters to apply to identify target resources using specific attributes.
1880	Filters []*ExperimentTemplateTargetInputFilter `locationName:"filters" type:"list"`
1881
1882	// The Amazon Resource Names (ARNs) of the resources.
1883	ResourceArns []*string `locationName:"resourceArns" type:"list"`
1884
1885	// The tags for the target resources.
1886	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
1887
1888	// The AWS resource type. The resource type must be supported for the specified
1889	// action.
1890	//
1891	// ResourceType is a required field
1892	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
1893
1894	// Scopes the identified resources to a specific count of the resources at random,
1895	// or a percentage of the resources. All identified resources are included in
1896	// the target.
1897	//
1898	//    * ALL - Run the action on all identified targets. This is the default.
1899	//
1900	//    * COUNT(n) - Run the action on the specified number of targets, chosen
1901	//    from the identified targets at random. For example, COUNT(1) selects one
1902	//    of the targets.
1903	//
1904	//    * PERCENT(n) - Run the action on the specified percentage of targets,
1905	//    chosen from the identified targets at random. For example, PERCENT(25)
1906	//    selects 25% of the targets.
1907	//
1908	// SelectionMode is a required field
1909	SelectionMode *string `locationName:"selectionMode" type:"string" required:"true"`
1910}
1911
1912// String returns the string representation
1913func (s CreateExperimentTemplateTargetInput) String() string {
1914	return awsutil.Prettify(s)
1915}
1916
1917// GoString returns the string representation
1918func (s CreateExperimentTemplateTargetInput) GoString() string {
1919	return s.String()
1920}
1921
1922// Validate inspects the fields of the type to determine if they are valid.
1923func (s *CreateExperimentTemplateTargetInput) Validate() error {
1924	invalidParams := request.ErrInvalidParams{Context: "CreateExperimentTemplateTargetInput"}
1925	if s.ResourceType == nil {
1926		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
1927	}
1928	if s.SelectionMode == nil {
1929		invalidParams.Add(request.NewErrParamRequired("SelectionMode"))
1930	}
1931	if s.Filters != nil {
1932		for i, v := range s.Filters {
1933			if v == nil {
1934				continue
1935			}
1936			if err := v.Validate(); err != nil {
1937				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
1938			}
1939		}
1940	}
1941
1942	if invalidParams.Len() > 0 {
1943		return invalidParams
1944	}
1945	return nil
1946}
1947
1948// SetFilters sets the Filters field's value.
1949func (s *CreateExperimentTemplateTargetInput) SetFilters(v []*ExperimentTemplateTargetInputFilter) *CreateExperimentTemplateTargetInput {
1950	s.Filters = v
1951	return s
1952}
1953
1954// SetResourceArns sets the ResourceArns field's value.
1955func (s *CreateExperimentTemplateTargetInput) SetResourceArns(v []*string) *CreateExperimentTemplateTargetInput {
1956	s.ResourceArns = v
1957	return s
1958}
1959
1960// SetResourceTags sets the ResourceTags field's value.
1961func (s *CreateExperimentTemplateTargetInput) SetResourceTags(v map[string]*string) *CreateExperimentTemplateTargetInput {
1962	s.ResourceTags = v
1963	return s
1964}
1965
1966// SetResourceType sets the ResourceType field's value.
1967func (s *CreateExperimentTemplateTargetInput) SetResourceType(v string) *CreateExperimentTemplateTargetInput {
1968	s.ResourceType = &v
1969	return s
1970}
1971
1972// SetSelectionMode sets the SelectionMode field's value.
1973func (s *CreateExperimentTemplateTargetInput) SetSelectionMode(v string) *CreateExperimentTemplateTargetInput {
1974	s.SelectionMode = &v
1975	return s
1976}
1977
1978type DeleteExperimentTemplateInput struct {
1979	_ struct{} `type:"structure"`
1980
1981	// The ID of the experiment template.
1982	//
1983	// Id is a required field
1984	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
1985}
1986
1987// String returns the string representation
1988func (s DeleteExperimentTemplateInput) String() string {
1989	return awsutil.Prettify(s)
1990}
1991
1992// GoString returns the string representation
1993func (s DeleteExperimentTemplateInput) GoString() string {
1994	return s.String()
1995}
1996
1997// Validate inspects the fields of the type to determine if they are valid.
1998func (s *DeleteExperimentTemplateInput) Validate() error {
1999	invalidParams := request.ErrInvalidParams{Context: "DeleteExperimentTemplateInput"}
2000	if s.Id == nil {
2001		invalidParams.Add(request.NewErrParamRequired("Id"))
2002	}
2003	if s.Id != nil && len(*s.Id) < 1 {
2004		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
2005	}
2006
2007	if invalidParams.Len() > 0 {
2008		return invalidParams
2009	}
2010	return nil
2011}
2012
2013// SetId sets the Id field's value.
2014func (s *DeleteExperimentTemplateInput) SetId(v string) *DeleteExperimentTemplateInput {
2015	s.Id = &v
2016	return s
2017}
2018
2019type DeleteExperimentTemplateOutput struct {
2020	_ struct{} `type:"structure"`
2021
2022	// Information about the experiment template.
2023	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
2024}
2025
2026// String returns the string representation
2027func (s DeleteExperimentTemplateOutput) String() string {
2028	return awsutil.Prettify(s)
2029}
2030
2031// GoString returns the string representation
2032func (s DeleteExperimentTemplateOutput) GoString() string {
2033	return s.String()
2034}
2035
2036// SetExperimentTemplate sets the ExperimentTemplate field's value.
2037func (s *DeleteExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *DeleteExperimentTemplateOutput {
2038	s.ExperimentTemplate = v
2039	return s
2040}
2041
2042// Describes an experiment.
2043type Experiment struct {
2044	_ struct{} `type:"structure"`
2045
2046	// The actions for the experiment.
2047	Actions map[string]*ExperimentAction `locationName:"actions" type:"map"`
2048
2049	// The time the experiment was created.
2050	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2051
2052	// The time that the experiment ended.
2053	EndTime *time.Time `locationName:"endTime" type:"timestamp"`
2054
2055	// The ID of the experiment template.
2056	ExperimentTemplateId *string `locationName:"experimentTemplateId" type:"string"`
2057
2058	// The ID of the experiment.
2059	Id *string `locationName:"id" type:"string"`
2060
2061	// The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service
2062	// permission to perform service actions on your behalf.
2063	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`
2064
2065	// The time that the experiment was started.
2066	StartTime *time.Time `locationName:"startTime" type:"timestamp"`
2067
2068	// The state of the experiment.
2069	State *ExperimentState `locationName:"state" type:"structure"`
2070
2071	// The stop conditions for the experiment.
2072	StopConditions []*ExperimentStopCondition `locationName:"stopConditions" type:"list"`
2073
2074	// The tags for the experiment.
2075	Tags map[string]*string `locationName:"tags" type:"map"`
2076
2077	// The targets for the experiment.
2078	Targets map[string]*ExperimentTarget `locationName:"targets" type:"map"`
2079}
2080
2081// String returns the string representation
2082func (s Experiment) String() string {
2083	return awsutil.Prettify(s)
2084}
2085
2086// GoString returns the string representation
2087func (s Experiment) GoString() string {
2088	return s.String()
2089}
2090
2091// SetActions sets the Actions field's value.
2092func (s *Experiment) SetActions(v map[string]*ExperimentAction) *Experiment {
2093	s.Actions = v
2094	return s
2095}
2096
2097// SetCreationTime sets the CreationTime field's value.
2098func (s *Experiment) SetCreationTime(v time.Time) *Experiment {
2099	s.CreationTime = &v
2100	return s
2101}
2102
2103// SetEndTime sets the EndTime field's value.
2104func (s *Experiment) SetEndTime(v time.Time) *Experiment {
2105	s.EndTime = &v
2106	return s
2107}
2108
2109// SetExperimentTemplateId sets the ExperimentTemplateId field's value.
2110func (s *Experiment) SetExperimentTemplateId(v string) *Experiment {
2111	s.ExperimentTemplateId = &v
2112	return s
2113}
2114
2115// SetId sets the Id field's value.
2116func (s *Experiment) SetId(v string) *Experiment {
2117	s.Id = &v
2118	return s
2119}
2120
2121// SetRoleArn sets the RoleArn field's value.
2122func (s *Experiment) SetRoleArn(v string) *Experiment {
2123	s.RoleArn = &v
2124	return s
2125}
2126
2127// SetStartTime sets the StartTime field's value.
2128func (s *Experiment) SetStartTime(v time.Time) *Experiment {
2129	s.StartTime = &v
2130	return s
2131}
2132
2133// SetState sets the State field's value.
2134func (s *Experiment) SetState(v *ExperimentState) *Experiment {
2135	s.State = v
2136	return s
2137}
2138
2139// SetStopConditions sets the StopConditions field's value.
2140func (s *Experiment) SetStopConditions(v []*ExperimentStopCondition) *Experiment {
2141	s.StopConditions = v
2142	return s
2143}
2144
2145// SetTags sets the Tags field's value.
2146func (s *Experiment) SetTags(v map[string]*string) *Experiment {
2147	s.Tags = v
2148	return s
2149}
2150
2151// SetTargets sets the Targets field's value.
2152func (s *Experiment) SetTargets(v map[string]*ExperimentTarget) *Experiment {
2153	s.Targets = v
2154	return s
2155}
2156
2157// Describes the action for an experiment.
2158type ExperimentAction struct {
2159	_ struct{} `type:"structure"`
2160
2161	// The ID of the action.
2162	ActionId *string `locationName:"actionId" type:"string"`
2163
2164	// The description for the action.
2165	Description *string `locationName:"description" type:"string"`
2166
2167	// The parameters for the action.
2168	Parameters map[string]*string `locationName:"parameters" type:"map"`
2169
2170	// The name of the action that must be completed before this action starts.
2171	StartAfter []*string `locationName:"startAfter" type:"list"`
2172
2173	// The state of the action.
2174	State *ExperimentActionState `locationName:"state" type:"structure"`
2175
2176	// The targets for the action.
2177	Targets map[string]*string `locationName:"targets" type:"map"`
2178}
2179
2180// String returns the string representation
2181func (s ExperimentAction) String() string {
2182	return awsutil.Prettify(s)
2183}
2184
2185// GoString returns the string representation
2186func (s ExperimentAction) GoString() string {
2187	return s.String()
2188}
2189
2190// SetActionId sets the ActionId field's value.
2191func (s *ExperimentAction) SetActionId(v string) *ExperimentAction {
2192	s.ActionId = &v
2193	return s
2194}
2195
2196// SetDescription sets the Description field's value.
2197func (s *ExperimentAction) SetDescription(v string) *ExperimentAction {
2198	s.Description = &v
2199	return s
2200}
2201
2202// SetParameters sets the Parameters field's value.
2203func (s *ExperimentAction) SetParameters(v map[string]*string) *ExperimentAction {
2204	s.Parameters = v
2205	return s
2206}
2207
2208// SetStartAfter sets the StartAfter field's value.
2209func (s *ExperimentAction) SetStartAfter(v []*string) *ExperimentAction {
2210	s.StartAfter = v
2211	return s
2212}
2213
2214// SetState sets the State field's value.
2215func (s *ExperimentAction) SetState(v *ExperimentActionState) *ExperimentAction {
2216	s.State = v
2217	return s
2218}
2219
2220// SetTargets sets the Targets field's value.
2221func (s *ExperimentAction) SetTargets(v map[string]*string) *ExperimentAction {
2222	s.Targets = v
2223	return s
2224}
2225
2226// Describes the state of an action.
2227type ExperimentActionState struct {
2228	_ struct{} `type:"structure"`
2229
2230	// The reason for the state.
2231	Reason *string `locationName:"reason" type:"string"`
2232
2233	// The state of the action.
2234	Status *string `locationName:"status" type:"string" enum:"ExperimentActionStatus"`
2235}
2236
2237// String returns the string representation
2238func (s ExperimentActionState) String() string {
2239	return awsutil.Prettify(s)
2240}
2241
2242// GoString returns the string representation
2243func (s ExperimentActionState) GoString() string {
2244	return s.String()
2245}
2246
2247// SetReason sets the Reason field's value.
2248func (s *ExperimentActionState) SetReason(v string) *ExperimentActionState {
2249	s.Reason = &v
2250	return s
2251}
2252
2253// SetStatus sets the Status field's value.
2254func (s *ExperimentActionState) SetStatus(v string) *ExperimentActionState {
2255	s.Status = &v
2256	return s
2257}
2258
2259// Describes the state of an experiment.
2260type ExperimentState struct {
2261	_ struct{} `type:"structure"`
2262
2263	// The reason for the state.
2264	Reason *string `locationName:"reason" type:"string"`
2265
2266	// The state of the experiment.
2267	Status *string `locationName:"status" type:"string" enum:"ExperimentStatus"`
2268}
2269
2270// String returns the string representation
2271func (s ExperimentState) String() string {
2272	return awsutil.Prettify(s)
2273}
2274
2275// GoString returns the string representation
2276func (s ExperimentState) GoString() string {
2277	return s.String()
2278}
2279
2280// SetReason sets the Reason field's value.
2281func (s *ExperimentState) SetReason(v string) *ExperimentState {
2282	s.Reason = &v
2283	return s
2284}
2285
2286// SetStatus sets the Status field's value.
2287func (s *ExperimentState) SetStatus(v string) *ExperimentState {
2288	s.Status = &v
2289	return s
2290}
2291
2292// Describes the stop condition for an experiment.
2293type ExperimentStopCondition struct {
2294	_ struct{} `type:"structure"`
2295
2296	// The source for the stop condition.
2297	Source *string `locationName:"source" type:"string"`
2298
2299	// The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.
2300	Value *string `locationName:"value" min:"20" type:"string"`
2301}
2302
2303// String returns the string representation
2304func (s ExperimentStopCondition) String() string {
2305	return awsutil.Prettify(s)
2306}
2307
2308// GoString returns the string representation
2309func (s ExperimentStopCondition) GoString() string {
2310	return s.String()
2311}
2312
2313// SetSource sets the Source field's value.
2314func (s *ExperimentStopCondition) SetSource(v string) *ExperimentStopCondition {
2315	s.Source = &v
2316	return s
2317}
2318
2319// SetValue sets the Value field's value.
2320func (s *ExperimentStopCondition) SetValue(v string) *ExperimentStopCondition {
2321	s.Value = &v
2322	return s
2323}
2324
2325// Provides a summary of an experiment.
2326type ExperimentSummary struct {
2327	_ struct{} `type:"structure"`
2328
2329	// The time that the experiment was created.
2330	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2331
2332	// The ID of the experiment template.
2333	ExperimentTemplateId *string `locationName:"experimentTemplateId" type:"string"`
2334
2335	// The ID of the experiment.
2336	Id *string `locationName:"id" type:"string"`
2337
2338	// The state of the experiment.
2339	State *ExperimentState `locationName:"state" type:"structure"`
2340
2341	// The tags for the experiment.
2342	Tags map[string]*string `locationName:"tags" type:"map"`
2343}
2344
2345// String returns the string representation
2346func (s ExperimentSummary) String() string {
2347	return awsutil.Prettify(s)
2348}
2349
2350// GoString returns the string representation
2351func (s ExperimentSummary) GoString() string {
2352	return s.String()
2353}
2354
2355// SetCreationTime sets the CreationTime field's value.
2356func (s *ExperimentSummary) SetCreationTime(v time.Time) *ExperimentSummary {
2357	s.CreationTime = &v
2358	return s
2359}
2360
2361// SetExperimentTemplateId sets the ExperimentTemplateId field's value.
2362func (s *ExperimentSummary) SetExperimentTemplateId(v string) *ExperimentSummary {
2363	s.ExperimentTemplateId = &v
2364	return s
2365}
2366
2367// SetId sets the Id field's value.
2368func (s *ExperimentSummary) SetId(v string) *ExperimentSummary {
2369	s.Id = &v
2370	return s
2371}
2372
2373// SetState sets the State field's value.
2374func (s *ExperimentSummary) SetState(v *ExperimentState) *ExperimentSummary {
2375	s.State = v
2376	return s
2377}
2378
2379// SetTags sets the Tags field's value.
2380func (s *ExperimentSummary) SetTags(v map[string]*string) *ExperimentSummary {
2381	s.Tags = v
2382	return s
2383}
2384
2385// Describes a target for an experiment.
2386type ExperimentTarget struct {
2387	_ struct{} `type:"structure"`
2388
2389	// The filters to apply to identify target resources using specific attributes.
2390	Filters []*ExperimentTargetFilter `locationName:"filters" type:"list"`
2391
2392	// The Amazon Resource Names (ARNs) of the resources.
2393	ResourceArns []*string `locationName:"resourceArns" type:"list"`
2394
2395	// The tags for the target resources.
2396	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
2397
2398	// The resource type.
2399	ResourceType *string `locationName:"resourceType" type:"string"`
2400
2401	// Scopes the identified resources to a specific count or percentage.
2402	SelectionMode *string `locationName:"selectionMode" type:"string"`
2403}
2404
2405// String returns the string representation
2406func (s ExperimentTarget) String() string {
2407	return awsutil.Prettify(s)
2408}
2409
2410// GoString returns the string representation
2411func (s ExperimentTarget) GoString() string {
2412	return s.String()
2413}
2414
2415// SetFilters sets the Filters field's value.
2416func (s *ExperimentTarget) SetFilters(v []*ExperimentTargetFilter) *ExperimentTarget {
2417	s.Filters = v
2418	return s
2419}
2420
2421// SetResourceArns sets the ResourceArns field's value.
2422func (s *ExperimentTarget) SetResourceArns(v []*string) *ExperimentTarget {
2423	s.ResourceArns = v
2424	return s
2425}
2426
2427// SetResourceTags sets the ResourceTags field's value.
2428func (s *ExperimentTarget) SetResourceTags(v map[string]*string) *ExperimentTarget {
2429	s.ResourceTags = v
2430	return s
2431}
2432
2433// SetResourceType sets the ResourceType field's value.
2434func (s *ExperimentTarget) SetResourceType(v string) *ExperimentTarget {
2435	s.ResourceType = &v
2436	return s
2437}
2438
2439// SetSelectionMode sets the SelectionMode field's value.
2440func (s *ExperimentTarget) SetSelectionMode(v string) *ExperimentTarget {
2441	s.SelectionMode = &v
2442	return s
2443}
2444
2445// Describes a filter used for the target resources in an experiment.
2446type ExperimentTargetFilter struct {
2447	_ struct{} `type:"structure"`
2448
2449	// The attribute path for the filter.
2450	Path *string `locationName:"path" type:"string"`
2451
2452	// The attribute values for the filter.
2453	Values []*string `locationName:"values" type:"list"`
2454}
2455
2456// String returns the string representation
2457func (s ExperimentTargetFilter) String() string {
2458	return awsutil.Prettify(s)
2459}
2460
2461// GoString returns the string representation
2462func (s ExperimentTargetFilter) GoString() string {
2463	return s.String()
2464}
2465
2466// SetPath sets the Path field's value.
2467func (s *ExperimentTargetFilter) SetPath(v string) *ExperimentTargetFilter {
2468	s.Path = &v
2469	return s
2470}
2471
2472// SetValues sets the Values field's value.
2473func (s *ExperimentTargetFilter) SetValues(v []*string) *ExperimentTargetFilter {
2474	s.Values = v
2475	return s
2476}
2477
2478// Describes an experiment template.
2479type ExperimentTemplate struct {
2480	_ struct{} `type:"structure"`
2481
2482	// The actions for the experiment.
2483	Actions map[string]*ExperimentTemplateAction `locationName:"actions" type:"map"`
2484
2485	// The time the experiment template was created.
2486	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2487
2488	// The description for the experiment template.
2489	Description *string `locationName:"description" type:"string"`
2490
2491	// The ID of the experiment template.
2492	Id *string `locationName:"id" type:"string"`
2493
2494	// The time the experiment template was last updated.
2495	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp"`
2496
2497	// The Amazon Resource Name (ARN) of an IAM role.
2498	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`
2499
2500	// The stop conditions for the experiment.
2501	StopConditions []*ExperimentTemplateStopCondition `locationName:"stopConditions" type:"list"`
2502
2503	// The tags for the experiment template.
2504	Tags map[string]*string `locationName:"tags" type:"map"`
2505
2506	// The targets for the experiment.
2507	Targets map[string]*ExperimentTemplateTarget `locationName:"targets" type:"map"`
2508}
2509
2510// String returns the string representation
2511func (s ExperimentTemplate) String() string {
2512	return awsutil.Prettify(s)
2513}
2514
2515// GoString returns the string representation
2516func (s ExperimentTemplate) GoString() string {
2517	return s.String()
2518}
2519
2520// SetActions sets the Actions field's value.
2521func (s *ExperimentTemplate) SetActions(v map[string]*ExperimentTemplateAction) *ExperimentTemplate {
2522	s.Actions = v
2523	return s
2524}
2525
2526// SetCreationTime sets the CreationTime field's value.
2527func (s *ExperimentTemplate) SetCreationTime(v time.Time) *ExperimentTemplate {
2528	s.CreationTime = &v
2529	return s
2530}
2531
2532// SetDescription sets the Description field's value.
2533func (s *ExperimentTemplate) SetDescription(v string) *ExperimentTemplate {
2534	s.Description = &v
2535	return s
2536}
2537
2538// SetId sets the Id field's value.
2539func (s *ExperimentTemplate) SetId(v string) *ExperimentTemplate {
2540	s.Id = &v
2541	return s
2542}
2543
2544// SetLastUpdateTime sets the LastUpdateTime field's value.
2545func (s *ExperimentTemplate) SetLastUpdateTime(v time.Time) *ExperimentTemplate {
2546	s.LastUpdateTime = &v
2547	return s
2548}
2549
2550// SetRoleArn sets the RoleArn field's value.
2551func (s *ExperimentTemplate) SetRoleArn(v string) *ExperimentTemplate {
2552	s.RoleArn = &v
2553	return s
2554}
2555
2556// SetStopConditions sets the StopConditions field's value.
2557func (s *ExperimentTemplate) SetStopConditions(v []*ExperimentTemplateStopCondition) *ExperimentTemplate {
2558	s.StopConditions = v
2559	return s
2560}
2561
2562// SetTags sets the Tags field's value.
2563func (s *ExperimentTemplate) SetTags(v map[string]*string) *ExperimentTemplate {
2564	s.Tags = v
2565	return s
2566}
2567
2568// SetTargets sets the Targets field's value.
2569func (s *ExperimentTemplate) SetTargets(v map[string]*ExperimentTemplateTarget) *ExperimentTemplate {
2570	s.Targets = v
2571	return s
2572}
2573
2574// Describes an action for an experiment template.
2575type ExperimentTemplateAction struct {
2576	_ struct{} `type:"structure"`
2577
2578	// The ID of the action.
2579	ActionId *string `locationName:"actionId" type:"string"`
2580
2581	// A description for the action.
2582	Description *string `locationName:"description" type:"string"`
2583
2584	// The parameters for the action.
2585	Parameters map[string]*string `locationName:"parameters" type:"map"`
2586
2587	// The name of the action that must be completed before the current action starts.
2588	StartAfter []*string `locationName:"startAfter" type:"list"`
2589
2590	// The targets for the action.
2591	Targets map[string]*string `locationName:"targets" type:"map"`
2592}
2593
2594// String returns the string representation
2595func (s ExperimentTemplateAction) String() string {
2596	return awsutil.Prettify(s)
2597}
2598
2599// GoString returns the string representation
2600func (s ExperimentTemplateAction) GoString() string {
2601	return s.String()
2602}
2603
2604// SetActionId sets the ActionId field's value.
2605func (s *ExperimentTemplateAction) SetActionId(v string) *ExperimentTemplateAction {
2606	s.ActionId = &v
2607	return s
2608}
2609
2610// SetDescription sets the Description field's value.
2611func (s *ExperimentTemplateAction) SetDescription(v string) *ExperimentTemplateAction {
2612	s.Description = &v
2613	return s
2614}
2615
2616// SetParameters sets the Parameters field's value.
2617func (s *ExperimentTemplateAction) SetParameters(v map[string]*string) *ExperimentTemplateAction {
2618	s.Parameters = v
2619	return s
2620}
2621
2622// SetStartAfter sets the StartAfter field's value.
2623func (s *ExperimentTemplateAction) SetStartAfter(v []*string) *ExperimentTemplateAction {
2624	s.StartAfter = v
2625	return s
2626}
2627
2628// SetTargets sets the Targets field's value.
2629func (s *ExperimentTemplateAction) SetTargets(v map[string]*string) *ExperimentTemplateAction {
2630	s.Targets = v
2631	return s
2632}
2633
2634// Describes a stop condition for an experiment template.
2635type ExperimentTemplateStopCondition struct {
2636	_ struct{} `type:"structure"`
2637
2638	// The source for the stop condition.
2639	Source *string `locationName:"source" type:"string"`
2640
2641	// The Amazon Resource Name (ARN) of the CloudWatch alarm, if applicable.
2642	Value *string `locationName:"value" min:"20" type:"string"`
2643}
2644
2645// String returns the string representation
2646func (s ExperimentTemplateStopCondition) String() string {
2647	return awsutil.Prettify(s)
2648}
2649
2650// GoString returns the string representation
2651func (s ExperimentTemplateStopCondition) GoString() string {
2652	return s.String()
2653}
2654
2655// SetSource sets the Source field's value.
2656func (s *ExperimentTemplateStopCondition) SetSource(v string) *ExperimentTemplateStopCondition {
2657	s.Source = &v
2658	return s
2659}
2660
2661// SetValue sets the Value field's value.
2662func (s *ExperimentTemplateStopCondition) SetValue(v string) *ExperimentTemplateStopCondition {
2663	s.Value = &v
2664	return s
2665}
2666
2667// Provides a summary of an experiment template.
2668type ExperimentTemplateSummary struct {
2669	_ struct{} `type:"structure"`
2670
2671	// The time that the experiment template was created.
2672	CreationTime *time.Time `locationName:"creationTime" type:"timestamp"`
2673
2674	// The description of the experiment template.
2675	Description *string `locationName:"description" type:"string"`
2676
2677	// The ID of the experiment template.
2678	Id *string `locationName:"id" type:"string"`
2679
2680	// The time that the experiment template was last updated.
2681	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp"`
2682
2683	// The tags for the experiment template.
2684	Tags map[string]*string `locationName:"tags" type:"map"`
2685}
2686
2687// String returns the string representation
2688func (s ExperimentTemplateSummary) String() string {
2689	return awsutil.Prettify(s)
2690}
2691
2692// GoString returns the string representation
2693func (s ExperimentTemplateSummary) GoString() string {
2694	return s.String()
2695}
2696
2697// SetCreationTime sets the CreationTime field's value.
2698func (s *ExperimentTemplateSummary) SetCreationTime(v time.Time) *ExperimentTemplateSummary {
2699	s.CreationTime = &v
2700	return s
2701}
2702
2703// SetDescription sets the Description field's value.
2704func (s *ExperimentTemplateSummary) SetDescription(v string) *ExperimentTemplateSummary {
2705	s.Description = &v
2706	return s
2707}
2708
2709// SetId sets the Id field's value.
2710func (s *ExperimentTemplateSummary) SetId(v string) *ExperimentTemplateSummary {
2711	s.Id = &v
2712	return s
2713}
2714
2715// SetLastUpdateTime sets the LastUpdateTime field's value.
2716func (s *ExperimentTemplateSummary) SetLastUpdateTime(v time.Time) *ExperimentTemplateSummary {
2717	s.LastUpdateTime = &v
2718	return s
2719}
2720
2721// SetTags sets the Tags field's value.
2722func (s *ExperimentTemplateSummary) SetTags(v map[string]*string) *ExperimentTemplateSummary {
2723	s.Tags = v
2724	return s
2725}
2726
2727// Describes a target for an experiment template.
2728type ExperimentTemplateTarget struct {
2729	_ struct{} `type:"structure"`
2730
2731	// The filters to apply to identify target resources using specific attributes.
2732	Filters []*ExperimentTemplateTargetFilter `locationName:"filters" type:"list"`
2733
2734	// The Amazon Resource Names (ARNs) of the targets.
2735	ResourceArns []*string `locationName:"resourceArns" type:"list"`
2736
2737	// The tags for the target resources.
2738	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
2739
2740	// The resource type.
2741	ResourceType *string `locationName:"resourceType" type:"string"`
2742
2743	// Scopes the identified resources to a specific count or percentage.
2744	SelectionMode *string `locationName:"selectionMode" type:"string"`
2745}
2746
2747// String returns the string representation
2748func (s ExperimentTemplateTarget) String() string {
2749	return awsutil.Prettify(s)
2750}
2751
2752// GoString returns the string representation
2753func (s ExperimentTemplateTarget) GoString() string {
2754	return s.String()
2755}
2756
2757// SetFilters sets the Filters field's value.
2758func (s *ExperimentTemplateTarget) SetFilters(v []*ExperimentTemplateTargetFilter) *ExperimentTemplateTarget {
2759	s.Filters = v
2760	return s
2761}
2762
2763// SetResourceArns sets the ResourceArns field's value.
2764func (s *ExperimentTemplateTarget) SetResourceArns(v []*string) *ExperimentTemplateTarget {
2765	s.ResourceArns = v
2766	return s
2767}
2768
2769// SetResourceTags sets the ResourceTags field's value.
2770func (s *ExperimentTemplateTarget) SetResourceTags(v map[string]*string) *ExperimentTemplateTarget {
2771	s.ResourceTags = v
2772	return s
2773}
2774
2775// SetResourceType sets the ResourceType field's value.
2776func (s *ExperimentTemplateTarget) SetResourceType(v string) *ExperimentTemplateTarget {
2777	s.ResourceType = &v
2778	return s
2779}
2780
2781// SetSelectionMode sets the SelectionMode field's value.
2782func (s *ExperimentTemplateTarget) SetSelectionMode(v string) *ExperimentTemplateTarget {
2783	s.SelectionMode = &v
2784	return s
2785}
2786
2787// Describes a filter used for the target resources in an experiment template.
2788type ExperimentTemplateTargetFilter struct {
2789	_ struct{} `type:"structure"`
2790
2791	// The attribute path for the filter.
2792	Path *string `locationName:"path" type:"string"`
2793
2794	// The attribute values for the filter.
2795	Values []*string `locationName:"values" type:"list"`
2796}
2797
2798// String returns the string representation
2799func (s ExperimentTemplateTargetFilter) String() string {
2800	return awsutil.Prettify(s)
2801}
2802
2803// GoString returns the string representation
2804func (s ExperimentTemplateTargetFilter) GoString() string {
2805	return s.String()
2806}
2807
2808// SetPath sets the Path field's value.
2809func (s *ExperimentTemplateTargetFilter) SetPath(v string) *ExperimentTemplateTargetFilter {
2810	s.Path = &v
2811	return s
2812}
2813
2814// SetValues sets the Values field's value.
2815func (s *ExperimentTemplateTargetFilter) SetValues(v []*string) *ExperimentTemplateTargetFilter {
2816	s.Values = v
2817	return s
2818}
2819
2820// Describes a filter used for the target resource input in an experiment template.
2821type ExperimentTemplateTargetInputFilter struct {
2822	_ struct{} `type:"structure"`
2823
2824	// The attribute path for the filter.
2825	//
2826	// Path is a required field
2827	Path *string `locationName:"path" type:"string" required:"true"`
2828
2829	// The attribute values for the filter.
2830	//
2831	// Values is a required field
2832	Values []*string `locationName:"values" type:"list" required:"true"`
2833}
2834
2835// String returns the string representation
2836func (s ExperimentTemplateTargetInputFilter) String() string {
2837	return awsutil.Prettify(s)
2838}
2839
2840// GoString returns the string representation
2841func (s ExperimentTemplateTargetInputFilter) GoString() string {
2842	return s.String()
2843}
2844
2845// Validate inspects the fields of the type to determine if they are valid.
2846func (s *ExperimentTemplateTargetInputFilter) Validate() error {
2847	invalidParams := request.ErrInvalidParams{Context: "ExperimentTemplateTargetInputFilter"}
2848	if s.Path == nil {
2849		invalidParams.Add(request.NewErrParamRequired("Path"))
2850	}
2851	if s.Values == nil {
2852		invalidParams.Add(request.NewErrParamRequired("Values"))
2853	}
2854
2855	if invalidParams.Len() > 0 {
2856		return invalidParams
2857	}
2858	return nil
2859}
2860
2861// SetPath sets the Path field's value.
2862func (s *ExperimentTemplateTargetInputFilter) SetPath(v string) *ExperimentTemplateTargetInputFilter {
2863	s.Path = &v
2864	return s
2865}
2866
2867// SetValues sets the Values field's value.
2868func (s *ExperimentTemplateTargetInputFilter) SetValues(v []*string) *ExperimentTemplateTargetInputFilter {
2869	s.Values = v
2870	return s
2871}
2872
2873type GetActionInput struct {
2874	_ struct{} `type:"structure"`
2875
2876	// The ID of the action.
2877	//
2878	// Id is a required field
2879	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
2880}
2881
2882// String returns the string representation
2883func (s GetActionInput) String() string {
2884	return awsutil.Prettify(s)
2885}
2886
2887// GoString returns the string representation
2888func (s GetActionInput) GoString() string {
2889	return s.String()
2890}
2891
2892// Validate inspects the fields of the type to determine if they are valid.
2893func (s *GetActionInput) Validate() error {
2894	invalidParams := request.ErrInvalidParams{Context: "GetActionInput"}
2895	if s.Id == nil {
2896		invalidParams.Add(request.NewErrParamRequired("Id"))
2897	}
2898	if s.Id != nil && len(*s.Id) < 1 {
2899		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
2900	}
2901
2902	if invalidParams.Len() > 0 {
2903		return invalidParams
2904	}
2905	return nil
2906}
2907
2908// SetId sets the Id field's value.
2909func (s *GetActionInput) SetId(v string) *GetActionInput {
2910	s.Id = &v
2911	return s
2912}
2913
2914type GetActionOutput struct {
2915	_ struct{} `type:"structure"`
2916
2917	// Information about the action.
2918	Action *Action `locationName:"action" type:"structure"`
2919}
2920
2921// String returns the string representation
2922func (s GetActionOutput) String() string {
2923	return awsutil.Prettify(s)
2924}
2925
2926// GoString returns the string representation
2927func (s GetActionOutput) GoString() string {
2928	return s.String()
2929}
2930
2931// SetAction sets the Action field's value.
2932func (s *GetActionOutput) SetAction(v *Action) *GetActionOutput {
2933	s.Action = v
2934	return s
2935}
2936
2937type GetExperimentInput struct {
2938	_ struct{} `type:"structure"`
2939
2940	// The ID of the experiment.
2941	//
2942	// Id is a required field
2943	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
2944}
2945
2946// String returns the string representation
2947func (s GetExperimentInput) String() string {
2948	return awsutil.Prettify(s)
2949}
2950
2951// GoString returns the string representation
2952func (s GetExperimentInput) GoString() string {
2953	return s.String()
2954}
2955
2956// Validate inspects the fields of the type to determine if they are valid.
2957func (s *GetExperimentInput) Validate() error {
2958	invalidParams := request.ErrInvalidParams{Context: "GetExperimentInput"}
2959	if s.Id == nil {
2960		invalidParams.Add(request.NewErrParamRequired("Id"))
2961	}
2962	if s.Id != nil && len(*s.Id) < 1 {
2963		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
2964	}
2965
2966	if invalidParams.Len() > 0 {
2967		return invalidParams
2968	}
2969	return nil
2970}
2971
2972// SetId sets the Id field's value.
2973func (s *GetExperimentInput) SetId(v string) *GetExperimentInput {
2974	s.Id = &v
2975	return s
2976}
2977
2978type GetExperimentOutput struct {
2979	_ struct{} `type:"structure"`
2980
2981	// Information about the experiment.
2982	Experiment *Experiment `locationName:"experiment" type:"structure"`
2983}
2984
2985// String returns the string representation
2986func (s GetExperimentOutput) String() string {
2987	return awsutil.Prettify(s)
2988}
2989
2990// GoString returns the string representation
2991func (s GetExperimentOutput) GoString() string {
2992	return s.String()
2993}
2994
2995// SetExperiment sets the Experiment field's value.
2996func (s *GetExperimentOutput) SetExperiment(v *Experiment) *GetExperimentOutput {
2997	s.Experiment = v
2998	return s
2999}
3000
3001type GetExperimentTemplateInput struct {
3002	_ struct{} `type:"structure"`
3003
3004	// The ID of the experiment template.
3005	//
3006	// Id is a required field
3007	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3008}
3009
3010// String returns the string representation
3011func (s GetExperimentTemplateInput) String() string {
3012	return awsutil.Prettify(s)
3013}
3014
3015// GoString returns the string representation
3016func (s GetExperimentTemplateInput) GoString() string {
3017	return s.String()
3018}
3019
3020// Validate inspects the fields of the type to determine if they are valid.
3021func (s *GetExperimentTemplateInput) Validate() error {
3022	invalidParams := request.ErrInvalidParams{Context: "GetExperimentTemplateInput"}
3023	if s.Id == nil {
3024		invalidParams.Add(request.NewErrParamRequired("Id"))
3025	}
3026	if s.Id != nil && len(*s.Id) < 1 {
3027		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3028	}
3029
3030	if invalidParams.Len() > 0 {
3031		return invalidParams
3032	}
3033	return nil
3034}
3035
3036// SetId sets the Id field's value.
3037func (s *GetExperimentTemplateInput) SetId(v string) *GetExperimentTemplateInput {
3038	s.Id = &v
3039	return s
3040}
3041
3042type GetExperimentTemplateOutput struct {
3043	_ struct{} `type:"structure"`
3044
3045	// Information about the experiment template.
3046	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
3047}
3048
3049// String returns the string representation
3050func (s GetExperimentTemplateOutput) String() string {
3051	return awsutil.Prettify(s)
3052}
3053
3054// GoString returns the string representation
3055func (s GetExperimentTemplateOutput) GoString() string {
3056	return s.String()
3057}
3058
3059// SetExperimentTemplate sets the ExperimentTemplate field's value.
3060func (s *GetExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *GetExperimentTemplateOutput {
3061	s.ExperimentTemplate = v
3062	return s
3063}
3064
3065type ListActionsInput struct {
3066	_ struct{} `type:"structure"`
3067
3068	// The maximum number of results to return with a single call. To retrieve the
3069	// remaining results, make another call with the returned nextToken value.
3070	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3071
3072	// The token for the next page of results.
3073	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
3074}
3075
3076// String returns the string representation
3077func (s ListActionsInput) String() string {
3078	return awsutil.Prettify(s)
3079}
3080
3081// GoString returns the string representation
3082func (s ListActionsInput) GoString() string {
3083	return s.String()
3084}
3085
3086// Validate inspects the fields of the type to determine if they are valid.
3087func (s *ListActionsInput) Validate() error {
3088	invalidParams := request.ErrInvalidParams{Context: "ListActionsInput"}
3089	if s.MaxResults != nil && *s.MaxResults < 1 {
3090		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3091	}
3092	if s.NextToken != nil && len(*s.NextToken) < 1 {
3093		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
3094	}
3095
3096	if invalidParams.Len() > 0 {
3097		return invalidParams
3098	}
3099	return nil
3100}
3101
3102// SetMaxResults sets the MaxResults field's value.
3103func (s *ListActionsInput) SetMaxResults(v int64) *ListActionsInput {
3104	s.MaxResults = &v
3105	return s
3106}
3107
3108// SetNextToken sets the NextToken field's value.
3109func (s *ListActionsInput) SetNextToken(v string) *ListActionsInput {
3110	s.NextToken = &v
3111	return s
3112}
3113
3114type ListActionsOutput struct {
3115	_ struct{} `type:"structure"`
3116
3117	// The actions.
3118	Actions []*ActionSummary `locationName:"actions" type:"list"`
3119
3120	// The token to use to retrieve the next page of results. This value is null
3121	// when there are no more results to return.
3122	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
3123}
3124
3125// String returns the string representation
3126func (s ListActionsOutput) String() string {
3127	return awsutil.Prettify(s)
3128}
3129
3130// GoString returns the string representation
3131func (s ListActionsOutput) GoString() string {
3132	return s.String()
3133}
3134
3135// SetActions sets the Actions field's value.
3136func (s *ListActionsOutput) SetActions(v []*ActionSummary) *ListActionsOutput {
3137	s.Actions = v
3138	return s
3139}
3140
3141// SetNextToken sets the NextToken field's value.
3142func (s *ListActionsOutput) SetNextToken(v string) *ListActionsOutput {
3143	s.NextToken = &v
3144	return s
3145}
3146
3147type ListExperimentTemplatesInput struct {
3148	_ struct{} `type:"structure"`
3149
3150	// The maximum number of results to return with a single call. To retrieve the
3151	// remaining results, make another call with the returned nextToken value.
3152	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3153
3154	// The token for the next page of results.
3155	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
3156}
3157
3158// String returns the string representation
3159func (s ListExperimentTemplatesInput) String() string {
3160	return awsutil.Prettify(s)
3161}
3162
3163// GoString returns the string representation
3164func (s ListExperimentTemplatesInput) GoString() string {
3165	return s.String()
3166}
3167
3168// Validate inspects the fields of the type to determine if they are valid.
3169func (s *ListExperimentTemplatesInput) Validate() error {
3170	invalidParams := request.ErrInvalidParams{Context: "ListExperimentTemplatesInput"}
3171	if s.MaxResults != nil && *s.MaxResults < 1 {
3172		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3173	}
3174	if s.NextToken != nil && len(*s.NextToken) < 1 {
3175		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
3176	}
3177
3178	if invalidParams.Len() > 0 {
3179		return invalidParams
3180	}
3181	return nil
3182}
3183
3184// SetMaxResults sets the MaxResults field's value.
3185func (s *ListExperimentTemplatesInput) SetMaxResults(v int64) *ListExperimentTemplatesInput {
3186	s.MaxResults = &v
3187	return s
3188}
3189
3190// SetNextToken sets the NextToken field's value.
3191func (s *ListExperimentTemplatesInput) SetNextToken(v string) *ListExperimentTemplatesInput {
3192	s.NextToken = &v
3193	return s
3194}
3195
3196type ListExperimentTemplatesOutput struct {
3197	_ struct{} `type:"structure"`
3198
3199	// The experiment templates.
3200	ExperimentTemplates []*ExperimentTemplateSummary `locationName:"experimentTemplates" type:"list"`
3201
3202	// The token to use to retrieve the next page of results. This value is null
3203	// when there are no more results to return.
3204	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
3205}
3206
3207// String returns the string representation
3208func (s ListExperimentTemplatesOutput) String() string {
3209	return awsutil.Prettify(s)
3210}
3211
3212// GoString returns the string representation
3213func (s ListExperimentTemplatesOutput) GoString() string {
3214	return s.String()
3215}
3216
3217// SetExperimentTemplates sets the ExperimentTemplates field's value.
3218func (s *ListExperimentTemplatesOutput) SetExperimentTemplates(v []*ExperimentTemplateSummary) *ListExperimentTemplatesOutput {
3219	s.ExperimentTemplates = v
3220	return s
3221}
3222
3223// SetNextToken sets the NextToken field's value.
3224func (s *ListExperimentTemplatesOutput) SetNextToken(v string) *ListExperimentTemplatesOutput {
3225	s.NextToken = &v
3226	return s
3227}
3228
3229type ListExperimentsInput struct {
3230	_ struct{} `type:"structure"`
3231
3232	// The maximum number of results to return with a single call. To retrieve the
3233	// remaining results, make another call with the returned nextToken value.
3234	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3235
3236	// The token for the next page of results.
3237	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
3238}
3239
3240// String returns the string representation
3241func (s ListExperimentsInput) String() string {
3242	return awsutil.Prettify(s)
3243}
3244
3245// GoString returns the string representation
3246func (s ListExperimentsInput) GoString() string {
3247	return s.String()
3248}
3249
3250// Validate inspects the fields of the type to determine if they are valid.
3251func (s *ListExperimentsInput) Validate() error {
3252	invalidParams := request.ErrInvalidParams{Context: "ListExperimentsInput"}
3253	if s.MaxResults != nil && *s.MaxResults < 1 {
3254		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3255	}
3256	if s.NextToken != nil && len(*s.NextToken) < 1 {
3257		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
3258	}
3259
3260	if invalidParams.Len() > 0 {
3261		return invalidParams
3262	}
3263	return nil
3264}
3265
3266// SetMaxResults sets the MaxResults field's value.
3267func (s *ListExperimentsInput) SetMaxResults(v int64) *ListExperimentsInput {
3268	s.MaxResults = &v
3269	return s
3270}
3271
3272// SetNextToken sets the NextToken field's value.
3273func (s *ListExperimentsInput) SetNextToken(v string) *ListExperimentsInput {
3274	s.NextToken = &v
3275	return s
3276}
3277
3278type ListExperimentsOutput struct {
3279	_ struct{} `type:"structure"`
3280
3281	// The experiments.
3282	Experiments []*ExperimentSummary `locationName:"experiments" type:"list"`
3283
3284	// The token to use to retrieve the next page of results. This value is null
3285	// when there are no more results to return.
3286	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
3287}
3288
3289// String returns the string representation
3290func (s ListExperimentsOutput) String() string {
3291	return awsutil.Prettify(s)
3292}
3293
3294// GoString returns the string representation
3295func (s ListExperimentsOutput) GoString() string {
3296	return s.String()
3297}
3298
3299// SetExperiments sets the Experiments field's value.
3300func (s *ListExperimentsOutput) SetExperiments(v []*ExperimentSummary) *ListExperimentsOutput {
3301	s.Experiments = v
3302	return s
3303}
3304
3305// SetNextToken sets the NextToken field's value.
3306func (s *ListExperimentsOutput) SetNextToken(v string) *ListExperimentsOutput {
3307	s.NextToken = &v
3308	return s
3309}
3310
3311type ListTagsForResourceInput struct {
3312	_ struct{} `type:"structure"`
3313
3314	// The Amazon Resource Name (ARN) of the resource.
3315	//
3316	// ResourceArn is a required field
3317	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`
3318}
3319
3320// String returns the string representation
3321func (s ListTagsForResourceInput) String() string {
3322	return awsutil.Prettify(s)
3323}
3324
3325// GoString returns the string representation
3326func (s ListTagsForResourceInput) GoString() string {
3327	return s.String()
3328}
3329
3330// Validate inspects the fields of the type to determine if they are valid.
3331func (s *ListTagsForResourceInput) Validate() error {
3332	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
3333	if s.ResourceArn == nil {
3334		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
3335	}
3336	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
3337		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
3338	}
3339
3340	if invalidParams.Len() > 0 {
3341		return invalidParams
3342	}
3343	return nil
3344}
3345
3346// SetResourceArn sets the ResourceArn field's value.
3347func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
3348	s.ResourceArn = &v
3349	return s
3350}
3351
3352type ListTagsForResourceOutput struct {
3353	_ struct{} `type:"structure"`
3354
3355	// The tags for the resource.
3356	Tags map[string]*string `locationName:"tags" type:"map"`
3357}
3358
3359// String returns the string representation
3360func (s ListTagsForResourceOutput) String() string {
3361	return awsutil.Prettify(s)
3362}
3363
3364// GoString returns the string representation
3365func (s ListTagsForResourceOutput) GoString() string {
3366	return s.String()
3367}
3368
3369// SetTags sets the Tags field's value.
3370func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
3371	s.Tags = v
3372	return s
3373}
3374
3375// The specified resource cannot be found.
3376type ResourceNotFoundException struct {
3377	_            struct{}                  `type:"structure"`
3378	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3379
3380	Message_ *string `locationName:"message" type:"string"`
3381}
3382
3383// String returns the string representation
3384func (s ResourceNotFoundException) String() string {
3385	return awsutil.Prettify(s)
3386}
3387
3388// GoString returns the string representation
3389func (s ResourceNotFoundException) GoString() string {
3390	return s.String()
3391}
3392
3393func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
3394	return &ResourceNotFoundException{
3395		RespMetadata: v,
3396	}
3397}
3398
3399// Code returns the exception type name.
3400func (s *ResourceNotFoundException) Code() string {
3401	return "ResourceNotFoundException"
3402}
3403
3404// Message returns the exception's message.
3405func (s *ResourceNotFoundException) Message() string {
3406	if s.Message_ != nil {
3407		return *s.Message_
3408	}
3409	return ""
3410}
3411
3412// OrigErr always returns nil, satisfies awserr.Error interface.
3413func (s *ResourceNotFoundException) OrigErr() error {
3414	return nil
3415}
3416
3417func (s *ResourceNotFoundException) Error() string {
3418	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3419}
3420
3421// Status code returns the HTTP status code for the request's response error.
3422func (s *ResourceNotFoundException) StatusCode() int {
3423	return s.RespMetadata.StatusCode
3424}
3425
3426// RequestID returns the service's response RequestID for request.
3427func (s *ResourceNotFoundException) RequestID() string {
3428	return s.RespMetadata.RequestID
3429}
3430
3431// You have exceeded your service quota.
3432type ServiceQuotaExceededException struct {
3433	_            struct{}                  `type:"structure"`
3434	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3435
3436	Message_ *string `locationName:"message" type:"string"`
3437}
3438
3439// String returns the string representation
3440func (s ServiceQuotaExceededException) String() string {
3441	return awsutil.Prettify(s)
3442}
3443
3444// GoString returns the string representation
3445func (s ServiceQuotaExceededException) GoString() string {
3446	return s.String()
3447}
3448
3449func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
3450	return &ServiceQuotaExceededException{
3451		RespMetadata: v,
3452	}
3453}
3454
3455// Code returns the exception type name.
3456func (s *ServiceQuotaExceededException) Code() string {
3457	return "ServiceQuotaExceededException"
3458}
3459
3460// Message returns the exception's message.
3461func (s *ServiceQuotaExceededException) Message() string {
3462	if s.Message_ != nil {
3463		return *s.Message_
3464	}
3465	return ""
3466}
3467
3468// OrigErr always returns nil, satisfies awserr.Error interface.
3469func (s *ServiceQuotaExceededException) OrigErr() error {
3470	return nil
3471}
3472
3473func (s *ServiceQuotaExceededException) Error() string {
3474	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3475}
3476
3477// Status code returns the HTTP status code for the request's response error.
3478func (s *ServiceQuotaExceededException) StatusCode() int {
3479	return s.RespMetadata.StatusCode
3480}
3481
3482// RequestID returns the service's response RequestID for request.
3483func (s *ServiceQuotaExceededException) RequestID() string {
3484	return s.RespMetadata.RequestID
3485}
3486
3487type StartExperimentInput struct {
3488	_ struct{} `type:"structure"`
3489
3490	// Unique, case-sensitive identifier that you provide to ensure the idempotency
3491	// of the request.
3492	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`
3493
3494	// The ID of the experiment template.
3495	//
3496	// ExperimentTemplateId is a required field
3497	ExperimentTemplateId *string `locationName:"experimentTemplateId" type:"string" required:"true"`
3498
3499	// The tags to apply to the experiment.
3500	Tags map[string]*string `locationName:"tags" type:"map"`
3501}
3502
3503// String returns the string representation
3504func (s StartExperimentInput) String() string {
3505	return awsutil.Prettify(s)
3506}
3507
3508// GoString returns the string representation
3509func (s StartExperimentInput) GoString() string {
3510	return s.String()
3511}
3512
3513// Validate inspects the fields of the type to determine if they are valid.
3514func (s *StartExperimentInput) Validate() error {
3515	invalidParams := request.ErrInvalidParams{Context: "StartExperimentInput"}
3516	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
3517		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
3518	}
3519	if s.ExperimentTemplateId == nil {
3520		invalidParams.Add(request.NewErrParamRequired("ExperimentTemplateId"))
3521	}
3522
3523	if invalidParams.Len() > 0 {
3524		return invalidParams
3525	}
3526	return nil
3527}
3528
3529// SetClientToken sets the ClientToken field's value.
3530func (s *StartExperimentInput) SetClientToken(v string) *StartExperimentInput {
3531	s.ClientToken = &v
3532	return s
3533}
3534
3535// SetExperimentTemplateId sets the ExperimentTemplateId field's value.
3536func (s *StartExperimentInput) SetExperimentTemplateId(v string) *StartExperimentInput {
3537	s.ExperimentTemplateId = &v
3538	return s
3539}
3540
3541// SetTags sets the Tags field's value.
3542func (s *StartExperimentInput) SetTags(v map[string]*string) *StartExperimentInput {
3543	s.Tags = v
3544	return s
3545}
3546
3547type StartExperimentOutput struct {
3548	_ struct{} `type:"structure"`
3549
3550	// Information about the experiment.
3551	Experiment *Experiment `locationName:"experiment" type:"structure"`
3552}
3553
3554// String returns the string representation
3555func (s StartExperimentOutput) String() string {
3556	return awsutil.Prettify(s)
3557}
3558
3559// GoString returns the string representation
3560func (s StartExperimentOutput) GoString() string {
3561	return s.String()
3562}
3563
3564// SetExperiment sets the Experiment field's value.
3565func (s *StartExperimentOutput) SetExperiment(v *Experiment) *StartExperimentOutput {
3566	s.Experiment = v
3567	return s
3568}
3569
3570type StopExperimentInput struct {
3571	_ struct{} `type:"structure"`
3572
3573	// The ID of the experiment.
3574	//
3575	// Id is a required field
3576	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3577}
3578
3579// String returns the string representation
3580func (s StopExperimentInput) String() string {
3581	return awsutil.Prettify(s)
3582}
3583
3584// GoString returns the string representation
3585func (s StopExperimentInput) GoString() string {
3586	return s.String()
3587}
3588
3589// Validate inspects the fields of the type to determine if they are valid.
3590func (s *StopExperimentInput) Validate() error {
3591	invalidParams := request.ErrInvalidParams{Context: "StopExperimentInput"}
3592	if s.Id == nil {
3593		invalidParams.Add(request.NewErrParamRequired("Id"))
3594	}
3595	if s.Id != nil && len(*s.Id) < 1 {
3596		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3597	}
3598
3599	if invalidParams.Len() > 0 {
3600		return invalidParams
3601	}
3602	return nil
3603}
3604
3605// SetId sets the Id field's value.
3606func (s *StopExperimentInput) SetId(v string) *StopExperimentInput {
3607	s.Id = &v
3608	return s
3609}
3610
3611type StopExperimentOutput struct {
3612	_ struct{} `type:"structure"`
3613
3614	// Information about the experiment.
3615	Experiment *Experiment `locationName:"experiment" type:"structure"`
3616}
3617
3618// String returns the string representation
3619func (s StopExperimentOutput) String() string {
3620	return awsutil.Prettify(s)
3621}
3622
3623// GoString returns the string representation
3624func (s StopExperimentOutput) GoString() string {
3625	return s.String()
3626}
3627
3628// SetExperiment sets the Experiment field's value.
3629func (s *StopExperimentOutput) SetExperiment(v *Experiment) *StopExperimentOutput {
3630	s.Experiment = v
3631	return s
3632}
3633
3634type TagResourceInput struct {
3635	_ struct{} `type:"structure"`
3636
3637	// The Amazon Resource Name (ARN) of the resource.
3638	//
3639	// ResourceArn is a required field
3640	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`
3641
3642	// The tags for the resource.
3643	//
3644	// Tags is a required field
3645	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
3646}
3647
3648// String returns the string representation
3649func (s TagResourceInput) String() string {
3650	return awsutil.Prettify(s)
3651}
3652
3653// GoString returns the string representation
3654func (s TagResourceInput) GoString() string {
3655	return s.String()
3656}
3657
3658// Validate inspects the fields of the type to determine if they are valid.
3659func (s *TagResourceInput) Validate() error {
3660	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
3661	if s.ResourceArn == nil {
3662		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
3663	}
3664	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
3665		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
3666	}
3667	if s.Tags == nil {
3668		invalidParams.Add(request.NewErrParamRequired("Tags"))
3669	}
3670
3671	if invalidParams.Len() > 0 {
3672		return invalidParams
3673	}
3674	return nil
3675}
3676
3677// SetResourceArn sets the ResourceArn field's value.
3678func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
3679	s.ResourceArn = &v
3680	return s
3681}
3682
3683// SetTags sets the Tags field's value.
3684func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
3685	s.Tags = v
3686	return s
3687}
3688
3689type TagResourceOutput struct {
3690	_ struct{} `type:"structure"`
3691}
3692
3693// String returns the string representation
3694func (s TagResourceOutput) String() string {
3695	return awsutil.Prettify(s)
3696}
3697
3698// GoString returns the string representation
3699func (s TagResourceOutput) GoString() string {
3700	return s.String()
3701}
3702
3703type UntagResourceInput struct {
3704	_ struct{} `type:"structure"`
3705
3706	// The Amazon Resource Name (ARN) of the resource.
3707	//
3708	// ResourceArn is a required field
3709	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"20" type:"string" required:"true"`
3710
3711	// The tag keys to remove.
3712	TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list"`
3713}
3714
3715// String returns the string representation
3716func (s UntagResourceInput) String() string {
3717	return awsutil.Prettify(s)
3718}
3719
3720// GoString returns the string representation
3721func (s UntagResourceInput) GoString() string {
3722	return s.String()
3723}
3724
3725// Validate inspects the fields of the type to determine if they are valid.
3726func (s *UntagResourceInput) Validate() error {
3727	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
3728	if s.ResourceArn == nil {
3729		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
3730	}
3731	if s.ResourceArn != nil && len(*s.ResourceArn) < 20 {
3732		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 20))
3733	}
3734
3735	if invalidParams.Len() > 0 {
3736		return invalidParams
3737	}
3738	return nil
3739}
3740
3741// SetResourceArn sets the ResourceArn field's value.
3742func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
3743	s.ResourceArn = &v
3744	return s
3745}
3746
3747// SetTagKeys sets the TagKeys field's value.
3748func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
3749	s.TagKeys = v
3750	return s
3751}
3752
3753type UntagResourceOutput struct {
3754	_ struct{} `type:"structure"`
3755}
3756
3757// String returns the string representation
3758func (s UntagResourceOutput) String() string {
3759	return awsutil.Prettify(s)
3760}
3761
3762// GoString returns the string representation
3763func (s UntagResourceOutput) GoString() string {
3764	return s.String()
3765}
3766
3767// Specifies an action for an experiment template.
3768type UpdateExperimentTemplateActionInputItem struct {
3769	_ struct{} `type:"structure"`
3770
3771	// The ID of the action.
3772	ActionId *string `locationName:"actionId" type:"string"`
3773
3774	// A description for the action.
3775	Description *string `locationName:"description" type:"string"`
3776
3777	// The parameters for the action, if applicable.
3778	Parameters map[string]*string `locationName:"parameters" type:"map"`
3779
3780	// The name of the action that must be completed before the current action starts.
3781	// Omit this parameter to run the action at the start of the experiment.
3782	StartAfter []*string `locationName:"startAfter" type:"list"`
3783
3784	// The targets for the action.
3785	Targets map[string]*string `locationName:"targets" type:"map"`
3786}
3787
3788// String returns the string representation
3789func (s UpdateExperimentTemplateActionInputItem) String() string {
3790	return awsutil.Prettify(s)
3791}
3792
3793// GoString returns the string representation
3794func (s UpdateExperimentTemplateActionInputItem) GoString() string {
3795	return s.String()
3796}
3797
3798// SetActionId sets the ActionId field's value.
3799func (s *UpdateExperimentTemplateActionInputItem) SetActionId(v string) *UpdateExperimentTemplateActionInputItem {
3800	s.ActionId = &v
3801	return s
3802}
3803
3804// SetDescription sets the Description field's value.
3805func (s *UpdateExperimentTemplateActionInputItem) SetDescription(v string) *UpdateExperimentTemplateActionInputItem {
3806	s.Description = &v
3807	return s
3808}
3809
3810// SetParameters sets the Parameters field's value.
3811func (s *UpdateExperimentTemplateActionInputItem) SetParameters(v map[string]*string) *UpdateExperimentTemplateActionInputItem {
3812	s.Parameters = v
3813	return s
3814}
3815
3816// SetStartAfter sets the StartAfter field's value.
3817func (s *UpdateExperimentTemplateActionInputItem) SetStartAfter(v []*string) *UpdateExperimentTemplateActionInputItem {
3818	s.StartAfter = v
3819	return s
3820}
3821
3822// SetTargets sets the Targets field's value.
3823func (s *UpdateExperimentTemplateActionInputItem) SetTargets(v map[string]*string) *UpdateExperimentTemplateActionInputItem {
3824	s.Targets = v
3825	return s
3826}
3827
3828type UpdateExperimentTemplateInput struct {
3829	_ struct{} `type:"structure"`
3830
3831	// The actions for the experiment.
3832	Actions map[string]*UpdateExperimentTemplateActionInputItem `locationName:"actions" type:"map"`
3833
3834	// A description for the template.
3835	Description *string `locationName:"description" type:"string"`
3836
3837	// The ID of the experiment template.
3838	//
3839	// Id is a required field
3840	Id *string `location:"uri" locationName:"id" type:"string" required:"true"`
3841
3842	// The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service
3843	// permission to perform service actions on your behalf.
3844	RoleArn *string `locationName:"roleArn" min:"20" type:"string"`
3845
3846	// The stop conditions for the experiment.
3847	StopConditions []*UpdateExperimentTemplateStopConditionInput `locationName:"stopConditions" type:"list"`
3848
3849	// The targets for the experiment.
3850	Targets map[string]*UpdateExperimentTemplateTargetInput `locationName:"targets" type:"map"`
3851}
3852
3853// String returns the string representation
3854func (s UpdateExperimentTemplateInput) String() string {
3855	return awsutil.Prettify(s)
3856}
3857
3858// GoString returns the string representation
3859func (s UpdateExperimentTemplateInput) GoString() string {
3860	return s.String()
3861}
3862
3863// Validate inspects the fields of the type to determine if they are valid.
3864func (s *UpdateExperimentTemplateInput) Validate() error {
3865	invalidParams := request.ErrInvalidParams{Context: "UpdateExperimentTemplateInput"}
3866	if s.Id == nil {
3867		invalidParams.Add(request.NewErrParamRequired("Id"))
3868	}
3869	if s.Id != nil && len(*s.Id) < 1 {
3870		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
3871	}
3872	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
3873		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
3874	}
3875	if s.StopConditions != nil {
3876		for i, v := range s.StopConditions {
3877			if v == nil {
3878				continue
3879			}
3880			if err := v.Validate(); err != nil {
3881				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StopConditions", i), err.(request.ErrInvalidParams))
3882			}
3883		}
3884	}
3885	if s.Targets != nil {
3886		for i, v := range s.Targets {
3887			if v == nil {
3888				continue
3889			}
3890			if err := v.Validate(); err != nil {
3891				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
3892			}
3893		}
3894	}
3895
3896	if invalidParams.Len() > 0 {
3897		return invalidParams
3898	}
3899	return nil
3900}
3901
3902// SetActions sets the Actions field's value.
3903func (s *UpdateExperimentTemplateInput) SetActions(v map[string]*UpdateExperimentTemplateActionInputItem) *UpdateExperimentTemplateInput {
3904	s.Actions = v
3905	return s
3906}
3907
3908// SetDescription sets the Description field's value.
3909func (s *UpdateExperimentTemplateInput) SetDescription(v string) *UpdateExperimentTemplateInput {
3910	s.Description = &v
3911	return s
3912}
3913
3914// SetId sets the Id field's value.
3915func (s *UpdateExperimentTemplateInput) SetId(v string) *UpdateExperimentTemplateInput {
3916	s.Id = &v
3917	return s
3918}
3919
3920// SetRoleArn sets the RoleArn field's value.
3921func (s *UpdateExperimentTemplateInput) SetRoleArn(v string) *UpdateExperimentTemplateInput {
3922	s.RoleArn = &v
3923	return s
3924}
3925
3926// SetStopConditions sets the StopConditions field's value.
3927func (s *UpdateExperimentTemplateInput) SetStopConditions(v []*UpdateExperimentTemplateStopConditionInput) *UpdateExperimentTemplateInput {
3928	s.StopConditions = v
3929	return s
3930}
3931
3932// SetTargets sets the Targets field's value.
3933func (s *UpdateExperimentTemplateInput) SetTargets(v map[string]*UpdateExperimentTemplateTargetInput) *UpdateExperimentTemplateInput {
3934	s.Targets = v
3935	return s
3936}
3937
3938type UpdateExperimentTemplateOutput struct {
3939	_ struct{} `type:"structure"`
3940
3941	// Information about the experiment template.
3942	ExperimentTemplate *ExperimentTemplate `locationName:"experimentTemplate" type:"structure"`
3943}
3944
3945// String returns the string representation
3946func (s UpdateExperimentTemplateOutput) String() string {
3947	return awsutil.Prettify(s)
3948}
3949
3950// GoString returns the string representation
3951func (s UpdateExperimentTemplateOutput) GoString() string {
3952	return s.String()
3953}
3954
3955// SetExperimentTemplate sets the ExperimentTemplate field's value.
3956func (s *UpdateExperimentTemplateOutput) SetExperimentTemplate(v *ExperimentTemplate) *UpdateExperimentTemplateOutput {
3957	s.ExperimentTemplate = v
3958	return s
3959}
3960
3961// Specifies a stop condition for an experiment. You can define a stop condition
3962// as a CloudWatch alarm.
3963type UpdateExperimentTemplateStopConditionInput struct {
3964	_ struct{} `type:"structure"`
3965
3966	// The source for the stop condition. Specify aws:cloudwatch:alarm if the stop
3967	// condition is defined by a CloudWatch alarm. Specify none if there is no stop
3968	// condition.
3969	//
3970	// Source is a required field
3971	Source *string `locationName:"source" type:"string" required:"true"`
3972
3973	// The Amazon Resource Name (ARN) of the CloudWatch alarm.
3974	Value *string `locationName:"value" min:"20" type:"string"`
3975}
3976
3977// String returns the string representation
3978func (s UpdateExperimentTemplateStopConditionInput) String() string {
3979	return awsutil.Prettify(s)
3980}
3981
3982// GoString returns the string representation
3983func (s UpdateExperimentTemplateStopConditionInput) GoString() string {
3984	return s.String()
3985}
3986
3987// Validate inspects the fields of the type to determine if they are valid.
3988func (s *UpdateExperimentTemplateStopConditionInput) Validate() error {
3989	invalidParams := request.ErrInvalidParams{Context: "UpdateExperimentTemplateStopConditionInput"}
3990	if s.Source == nil {
3991		invalidParams.Add(request.NewErrParamRequired("Source"))
3992	}
3993	if s.Value != nil && len(*s.Value) < 20 {
3994		invalidParams.Add(request.NewErrParamMinLen("Value", 20))
3995	}
3996
3997	if invalidParams.Len() > 0 {
3998		return invalidParams
3999	}
4000	return nil
4001}
4002
4003// SetSource sets the Source field's value.
4004func (s *UpdateExperimentTemplateStopConditionInput) SetSource(v string) *UpdateExperimentTemplateStopConditionInput {
4005	s.Source = &v
4006	return s
4007}
4008
4009// SetValue sets the Value field's value.
4010func (s *UpdateExperimentTemplateStopConditionInput) SetValue(v string) *UpdateExperimentTemplateStopConditionInput {
4011	s.Value = &v
4012	return s
4013}
4014
4015// Specifies a target for an experiment. You must specify at least one Amazon
4016// Resource Name (ARN) or at least one resource tag. You cannot specify both.
4017type UpdateExperimentTemplateTargetInput struct {
4018	_ struct{} `type:"structure"`
4019
4020	// The filters to apply to identify target resources using specific attributes.
4021	Filters []*ExperimentTemplateTargetInputFilter `locationName:"filters" type:"list"`
4022
4023	// The Amazon Resource Names (ARNs) of the targets.
4024	ResourceArns []*string `locationName:"resourceArns" type:"list"`
4025
4026	// The tags for the target resources.
4027	ResourceTags map[string]*string `locationName:"resourceTags" type:"map"`
4028
4029	// The AWS resource type. The resource type must be supported for the specified
4030	// action.
4031	//
4032	// ResourceType is a required field
4033	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
4034
4035	// Scopes the identified resources to a specific count or percentage.
4036	//
4037	// SelectionMode is a required field
4038	SelectionMode *string `locationName:"selectionMode" type:"string" required:"true"`
4039}
4040
4041// String returns the string representation
4042func (s UpdateExperimentTemplateTargetInput) String() string {
4043	return awsutil.Prettify(s)
4044}
4045
4046// GoString returns the string representation
4047func (s UpdateExperimentTemplateTargetInput) GoString() string {
4048	return s.String()
4049}
4050
4051// Validate inspects the fields of the type to determine if they are valid.
4052func (s *UpdateExperimentTemplateTargetInput) Validate() error {
4053	invalidParams := request.ErrInvalidParams{Context: "UpdateExperimentTemplateTargetInput"}
4054	if s.ResourceType == nil {
4055		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
4056	}
4057	if s.SelectionMode == nil {
4058		invalidParams.Add(request.NewErrParamRequired("SelectionMode"))
4059	}
4060	if s.Filters != nil {
4061		for i, v := range s.Filters {
4062			if v == nil {
4063				continue
4064			}
4065			if err := v.Validate(); err != nil {
4066				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
4067			}
4068		}
4069	}
4070
4071	if invalidParams.Len() > 0 {
4072		return invalidParams
4073	}
4074	return nil
4075}
4076
4077// SetFilters sets the Filters field's value.
4078func (s *UpdateExperimentTemplateTargetInput) SetFilters(v []*ExperimentTemplateTargetInputFilter) *UpdateExperimentTemplateTargetInput {
4079	s.Filters = v
4080	return s
4081}
4082
4083// SetResourceArns sets the ResourceArns field's value.
4084func (s *UpdateExperimentTemplateTargetInput) SetResourceArns(v []*string) *UpdateExperimentTemplateTargetInput {
4085	s.ResourceArns = v
4086	return s
4087}
4088
4089// SetResourceTags sets the ResourceTags field's value.
4090func (s *UpdateExperimentTemplateTargetInput) SetResourceTags(v map[string]*string) *UpdateExperimentTemplateTargetInput {
4091	s.ResourceTags = v
4092	return s
4093}
4094
4095// SetResourceType sets the ResourceType field's value.
4096func (s *UpdateExperimentTemplateTargetInput) SetResourceType(v string) *UpdateExperimentTemplateTargetInput {
4097	s.ResourceType = &v
4098	return s
4099}
4100
4101// SetSelectionMode sets the SelectionMode field's value.
4102func (s *UpdateExperimentTemplateTargetInput) SetSelectionMode(v string) *UpdateExperimentTemplateTargetInput {
4103	s.SelectionMode = &v
4104	return s
4105}
4106
4107// The specified input is not valid, or fails to satisfy the constraints for
4108// the request.
4109type ValidationException struct {
4110	_            struct{}                  `type:"structure"`
4111	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
4112
4113	Message_ *string `locationName:"message" type:"string"`
4114}
4115
4116// String returns the string representation
4117func (s ValidationException) String() string {
4118	return awsutil.Prettify(s)
4119}
4120
4121// GoString returns the string representation
4122func (s ValidationException) GoString() string {
4123	return s.String()
4124}
4125
4126func newErrorValidationException(v protocol.ResponseMetadata) error {
4127	return &ValidationException{
4128		RespMetadata: v,
4129	}
4130}
4131
4132// Code returns the exception type name.
4133func (s *ValidationException) Code() string {
4134	return "ValidationException"
4135}
4136
4137// Message returns the exception's message.
4138func (s *ValidationException) Message() string {
4139	if s.Message_ != nil {
4140		return *s.Message_
4141	}
4142	return ""
4143}
4144
4145// OrigErr always returns nil, satisfies awserr.Error interface.
4146func (s *ValidationException) OrigErr() error {
4147	return nil
4148}
4149
4150func (s *ValidationException) Error() string {
4151	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
4152}
4153
4154// Status code returns the HTTP status code for the request's response error.
4155func (s *ValidationException) StatusCode() int {
4156	return s.RespMetadata.StatusCode
4157}
4158
4159// RequestID returns the service's response RequestID for request.
4160func (s *ValidationException) RequestID() string {
4161	return s.RespMetadata.RequestID
4162}
4163
4164const (
4165	// ExperimentActionStatusPending is a ExperimentActionStatus enum value
4166	ExperimentActionStatusPending = "pending"
4167
4168	// ExperimentActionStatusInitiating is a ExperimentActionStatus enum value
4169	ExperimentActionStatusInitiating = "initiating"
4170
4171	// ExperimentActionStatusRunning is a ExperimentActionStatus enum value
4172	ExperimentActionStatusRunning = "running"
4173
4174	// ExperimentActionStatusCompleted is a ExperimentActionStatus enum value
4175	ExperimentActionStatusCompleted = "completed"
4176
4177	// ExperimentActionStatusCancelled is a ExperimentActionStatus enum value
4178	ExperimentActionStatusCancelled = "cancelled"
4179
4180	// ExperimentActionStatusStopping is a ExperimentActionStatus enum value
4181	ExperimentActionStatusStopping = "stopping"
4182
4183	// ExperimentActionStatusStopped is a ExperimentActionStatus enum value
4184	ExperimentActionStatusStopped = "stopped"
4185
4186	// ExperimentActionStatusFailed is a ExperimentActionStatus enum value
4187	ExperimentActionStatusFailed = "failed"
4188)
4189
4190// ExperimentActionStatus_Values returns all elements of the ExperimentActionStatus enum
4191func ExperimentActionStatus_Values() []string {
4192	return []string{
4193		ExperimentActionStatusPending,
4194		ExperimentActionStatusInitiating,
4195		ExperimentActionStatusRunning,
4196		ExperimentActionStatusCompleted,
4197		ExperimentActionStatusCancelled,
4198		ExperimentActionStatusStopping,
4199		ExperimentActionStatusStopped,
4200		ExperimentActionStatusFailed,
4201	}
4202}
4203
4204const (
4205	// ExperimentStatusPending is a ExperimentStatus enum value
4206	ExperimentStatusPending = "pending"
4207
4208	// ExperimentStatusInitiating is a ExperimentStatus enum value
4209	ExperimentStatusInitiating = "initiating"
4210
4211	// ExperimentStatusRunning is a ExperimentStatus enum value
4212	ExperimentStatusRunning = "running"
4213
4214	// ExperimentStatusCompleted is a ExperimentStatus enum value
4215	ExperimentStatusCompleted = "completed"
4216
4217	// ExperimentStatusStopping is a ExperimentStatus enum value
4218	ExperimentStatusStopping = "stopping"
4219
4220	// ExperimentStatusStopped is a ExperimentStatus enum value
4221	ExperimentStatusStopped = "stopped"
4222
4223	// ExperimentStatusFailed is a ExperimentStatus enum value
4224	ExperimentStatusFailed = "failed"
4225)
4226
4227// ExperimentStatus_Values returns all elements of the ExperimentStatus enum
4228func ExperimentStatus_Values() []string {
4229	return []string{
4230		ExperimentStatusPending,
4231		ExperimentStatusInitiating,
4232		ExperimentStatusRunning,
4233		ExperimentStatusCompleted,
4234		ExperimentStatusStopping,
4235		ExperimentStatusStopped,
4236		ExperimentStatusFailed,
4237	}
4238}
4239