github.com/aavshr/aws-sdk-go@v1.41.3/service/fis/api.go (about)

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