// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.

// Package opsworkscm provides a client for AWS OpsWorks for Chef Automate.
package opsworkscm

import (
	"time"

	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
)

const opAssociateNode = "AssociateNode"

// AssociateNodeRequest generates a "aws/request.Request" representing the
// client's request for the AssociateNode operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See AssociateNode for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the AssociateNode method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the AssociateNodeRequest method.
//    req, resp := client.AssociateNodeRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/AssociateNode
func (c *OpsWorksCM) AssociateNodeRequest(input *AssociateNodeInput) (req *request.Request, output *AssociateNodeOutput) {
	op := &request.Operation{
		Name:       opAssociateNode,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &AssociateNodeInput{}
	}

	output = &AssociateNodeOutput{}
	req = c.newRequest(op, input, output)
	return
}

// AssociateNode API operation for AWS OpsWorks for Chef Automate.
//
// Associates a new node with the Chef server. This command is an alternative
// to knife bootstrap. For more information about how to disassociate a node,
// see DisassociateNode.
//
// A node can can only be associated with servers that are in a HEALTHY state.
// Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException
// is thrown when the server does not exist. A ValidationException is raised
// when parameters of the request are not valid. The AssociateNode API call
// can be integrated into Auto Scaling configurations, AWS Cloudformation templates,
// or the user data of a server's instance.
//
// Example: aws opsworks-cm associate-node --server-name MyServer --node-name
// MyManagedNode --engine-attributes "Name=MyOrganization,Value=default" "Name=Chef_node_public_key,Value=Public_key_contents"
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation AssociateNode for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/AssociateNode
func (c *OpsWorksCM) AssociateNode(input *AssociateNodeInput) (*AssociateNodeOutput, error) {
	req, out := c.AssociateNodeRequest(input)
	err := req.Send()
	return out, err
}

const opCreateBackup = "CreateBackup"

// CreateBackupRequest generates a "aws/request.Request" representing the
// client's request for the CreateBackup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateBackup for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateBackup method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateBackupRequest method.
//    req, resp := client.CreateBackupRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateBackup
func (c *OpsWorksCM) CreateBackupRequest(input *CreateBackupInput) (req *request.Request, output *CreateBackupOutput) {
	op := &request.Operation{
		Name:       opCreateBackup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateBackupInput{}
	}

	output = &CreateBackupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateBackup API operation for AWS OpsWorks for Chef Automate.
//
// Creates an application-level backup of a server. While the server is in the
// BACKING_UP state, the server cannot be changed, and no additional backup
// can be created.
//
// Backups can be created for servers in RUNNING, HEALTHY, and UNHEALTHY states.
// By default, you can create a maximum of 50 manual backups.
//
// This operation is asynchronous.
//
// A LimitExceededException is thrown when the maximum number of manual backups
// is reached. An InvalidStateException is thrown when the server is not in
// any of the following states: RUNNING, HEALTHY, or UNHEALTHY. A ResourceNotFoundException
// is thrown when the server is not found. A ValidationException is thrown when
// parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation CreateBackup for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeLimitExceededException "LimitExceededException"
//   The limit of servers or backups has been reached.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateBackup
func (c *OpsWorksCM) CreateBackup(input *CreateBackupInput) (*CreateBackupOutput, error) {
	req, out := c.CreateBackupRequest(input)
	err := req.Send()
	return out, err
}

const opCreateServer = "CreateServer"

// CreateServerRequest generates a "aws/request.Request" representing the
// client's request for the CreateServer operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateServer for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateServer method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the CreateServerRequest method.
//    req, resp := client.CreateServerRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateServer
func (c *OpsWorksCM) CreateServerRequest(input *CreateServerInput) (req *request.Request, output *CreateServerOutput) {
	op := &request.Operation{
		Name:       opCreateServer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateServerInput{}
	}

	output = &CreateServerOutput{}
	req = c.newRequest(op, input, output)
	return
}

// CreateServer API operation for AWS OpsWorks for Chef Automate.
//
// Creates and immedately starts a new server. The server is ready to use when
// it is in the HEALTHY state. By default, you can create a maximum of 10 servers.
//
// This operation is asynchronous.
//
// A LimitExceededException is thrown when you have created the maximum number
// of servers (10). A ResourceAlreadyExistsException is thrown when a server
// with the same name already exists in the account. A ResourceNotFoundException
// is thrown when you specify a backup ID that is not valid or is for a backup
// that does not exist. A ValidationException is thrown when parameters of the
// request are not valid.
//
// If you do not specify a security group by adding the SecurityGroupIds parameter,
// AWS OpsWorks creates a new security group. The default security group opens
// the Chef server to the world on TCP port 443. If a KeyName is present, AWS
// OpsWorks enables SSH access. SSH is also open to the world on TCP port 22.
//
// By default, the Chef Server is accessible from any IP address. We recommend
// that you update your security group rules to allow access from known IP addresses
// and address ranges only. To edit security group rules, open Security Groups
// in the navigation pane of the EC2 management console.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation CreateServer for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeLimitExceededException "LimitExceededException"
//   The limit of servers or backups has been reached.
//
//   * ErrCodeResourceAlreadyExistsException "ResourceAlreadyExistsException"
//   The requested resource cannot be created because it already exists.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateServer
func (c *OpsWorksCM) CreateServer(input *CreateServerInput) (*CreateServerOutput, error) {
	req, out := c.CreateServerRequest(input)
	err := req.Send()
	return out, err
}

const opDeleteBackup = "DeleteBackup"

// DeleteBackupRequest generates a "aws/request.Request" representing the
// client's request for the DeleteBackup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteBackup for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteBackup method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteBackupRequest method.
//    req, resp := client.DeleteBackupRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteBackup
func (c *OpsWorksCM) DeleteBackupRequest(input *DeleteBackupInput) (req *request.Request, output *DeleteBackupOutput) {
	op := &request.Operation{
		Name:       opDeleteBackup,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteBackupInput{}
	}

	output = &DeleteBackupOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteBackup API operation for AWS OpsWorks for Chef Automate.
//
// Deletes a backup. You can delete both manual and automated backups. This
// operation is asynchronous.
//
// An InvalidStateException is thrown when a backup deletion is already in progress.
// A ResourceNotFoundException is thrown when the backup does not exist. A ValidationException
// is thrown when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DeleteBackup for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteBackup
func (c *OpsWorksCM) DeleteBackup(input *DeleteBackupInput) (*DeleteBackupOutput, error) {
	req, out := c.DeleteBackupRequest(input)
	err := req.Send()
	return out, err
}

const opDeleteServer = "DeleteServer"

// DeleteServerRequest generates a "aws/request.Request" representing the
// client's request for the DeleteServer operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DeleteServer for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DeleteServer method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DeleteServerRequest method.
//    req, resp := client.DeleteServerRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteServer
func (c *OpsWorksCM) DeleteServerRequest(input *DeleteServerInput) (req *request.Request, output *DeleteServerOutput) {
	op := &request.Operation{
		Name:       opDeleteServer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteServerInput{}
	}

	output = &DeleteServerOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteServer API operation for AWS OpsWorks for Chef Automate.
//
// Deletes the server and the underlying AWS CloudFormation stack (including
// the server's EC2 instance). When you run this command, the server state is
// updated to DELETING. After the server is deleted, it is no longer returned
// by DescribeServer requests. If the AWS CloudFormation stack cannot be deleted,
// the server cannot be deleted.
//
// This operation is asynchronous.
//
// An InvalidStateException is thrown when a server deletion is already in progress.
// A ResourceNotFoundException is thrown when the server does not exist. A ValidationException
// is raised when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DeleteServer for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteServer
func (c *OpsWorksCM) DeleteServer(input *DeleteServerInput) (*DeleteServerOutput, error) {
	req, out := c.DeleteServerRequest(input)
	err := req.Send()
	return out, err
}

const opDescribeAccountAttributes = "DescribeAccountAttributes"

// DescribeAccountAttributesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAccountAttributes operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeAccountAttributes for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeAccountAttributes method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeAccountAttributesRequest method.
//    req, resp := client.DescribeAccountAttributesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeAccountAttributes
func (c *OpsWorksCM) DescribeAccountAttributesRequest(input *DescribeAccountAttributesInput) (req *request.Request, output *DescribeAccountAttributesOutput) {
	op := &request.Operation{
		Name:       opDescribeAccountAttributes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeAccountAttributesInput{}
	}

	output = &DescribeAccountAttributesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeAccountAttributes API operation for AWS OpsWorks for Chef Automate.
//
// Describes your account attributes, and creates requests to increase limits
// before they are reached or exceeded.
//
// This operation is synchronous.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DescribeAccountAttributes for usage and error information.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeAccountAttributes
func (c *OpsWorksCM) DescribeAccountAttributes(input *DescribeAccountAttributesInput) (*DescribeAccountAttributesOutput, error) {
	req, out := c.DescribeAccountAttributesRequest(input)
	err := req.Send()
	return out, err
}

const opDescribeBackups = "DescribeBackups"

// DescribeBackupsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeBackups operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeBackups for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeBackups method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeBackupsRequest method.
//    req, resp := client.DescribeBackupsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeBackups
func (c *OpsWorksCM) DescribeBackupsRequest(input *DescribeBackupsInput) (req *request.Request, output *DescribeBackupsOutput) {
	op := &request.Operation{
		Name:       opDescribeBackups,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeBackupsInput{}
	}

	output = &DescribeBackupsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeBackups API operation for AWS OpsWorks for Chef Automate.
//
// Describes backups. The results are ordered by time, with newest backups first.
// If you do not specify a BackupId or ServerName, the command returns all backups.
//
// This operation is synchronous.
//
// A ResourceNotFoundException is thrown when the backup does not exist. A ValidationException
// is raised when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DescribeBackups for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
//   This occurs when the provided nextToken is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeBackups
func (c *OpsWorksCM) DescribeBackups(input *DescribeBackupsInput) (*DescribeBackupsOutput, error) {
	req, out := c.DescribeBackupsRequest(input)
	err := req.Send()
	return out, err
}

const opDescribeEvents = "DescribeEvents"

// DescribeEventsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeEvents operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeEvents for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeEvents method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeEventsRequest method.
//    req, resp := client.DescribeEventsRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeEvents
func (c *OpsWorksCM) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
	op := &request.Operation{
		Name:       opDescribeEvents,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeEventsInput{}
	}

	output = &DescribeEventsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeEvents API operation for AWS OpsWorks for Chef Automate.
//
// Describes events for a specified server. Results are ordered by time, with
// newest events first.
//
// This operation is synchronous.
//
// A ResourceNotFoundException is thrown when the server does not exist. A ValidationException
// is raised when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DescribeEvents for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
//   This occurs when the provided nextToken is not valid.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeEvents
func (c *OpsWorksCM) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
	req, out := c.DescribeEventsRequest(input)
	err := req.Send()
	return out, err
}

const opDescribeNodeAssociationStatus = "DescribeNodeAssociationStatus"

// DescribeNodeAssociationStatusRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNodeAssociationStatus operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeNodeAssociationStatus for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeNodeAssociationStatus method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeNodeAssociationStatusRequest method.
//    req, resp := client.DescribeNodeAssociationStatusRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeNodeAssociationStatus
func (c *OpsWorksCM) DescribeNodeAssociationStatusRequest(input *DescribeNodeAssociationStatusInput) (req *request.Request, output *DescribeNodeAssociationStatusOutput) {
	op := &request.Operation{
		Name:       opDescribeNodeAssociationStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeNodeAssociationStatusInput{}
	}

	output = &DescribeNodeAssociationStatusOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeNodeAssociationStatus API operation for AWS OpsWorks for Chef Automate.
//
// Returns the current status of an existing association or disassociation request.
//
// A ResourceNotFoundException is thrown when no recent association or disassociation
// request with the specified token is found, or when the server does not exist.
// A ValidationException is raised when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DescribeNodeAssociationStatus for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeNodeAssociationStatus
func (c *OpsWorksCM) DescribeNodeAssociationStatus(input *DescribeNodeAssociationStatusInput) (*DescribeNodeAssociationStatusOutput, error) {
	req, out := c.DescribeNodeAssociationStatusRequest(input)
	err := req.Send()
	return out, err
}

const opDescribeServers = "DescribeServers"

// DescribeServersRequest generates a "aws/request.Request" representing the
// client's request for the DescribeServers operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DescribeServers for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DescribeServers method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DescribeServersRequest method.
//    req, resp := client.DescribeServersRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeServers
func (c *OpsWorksCM) DescribeServersRequest(input *DescribeServersInput) (req *request.Request, output *DescribeServersOutput) {
	op := &request.Operation{
		Name:       opDescribeServers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DescribeServersInput{}
	}

	output = &DescribeServersOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DescribeServers API operation for AWS OpsWorks for Chef Automate.
//
// Lists all configuration management servers that are identified with your
// account. Only the stored results from Amazon DynamoDB are returned. AWS OpsWorks
// for Chef Automate does not query other services.
//
// This operation is synchronous.
//
// A ResourceNotFoundException is thrown when the server does not exist. A ValidationException
// is raised when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DescribeServers for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeInvalidNextTokenException "InvalidNextTokenException"
//   This occurs when the provided nextToken is not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeServers
func (c *OpsWorksCM) DescribeServers(input *DescribeServersInput) (*DescribeServersOutput, error) {
	req, out := c.DescribeServersRequest(input)
	err := req.Send()
	return out, err
}

const opDisassociateNode = "DisassociateNode"

// DisassociateNodeRequest generates a "aws/request.Request" representing the
// client's request for the DisassociateNode operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See DisassociateNode for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the DisassociateNode method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the DisassociateNodeRequest method.
//    req, resp := client.DisassociateNodeRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DisassociateNode
func (c *OpsWorksCM) DisassociateNodeRequest(input *DisassociateNodeInput) (req *request.Request, output *DisassociateNodeOutput) {
	op := &request.Operation{
		Name:       opDisassociateNode,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DisassociateNodeInput{}
	}

	output = &DisassociateNodeOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DisassociateNode API operation for AWS OpsWorks for Chef Automate.
//
// Disassociates a node from a Chef server, and removes the node from the Chef
// server's managed nodes. After a node is disassociated, the node key pair
// is no longer valid for accessing the Chef API. For more information about
// how to associate a node, see AssociateNode.
//
// A node can can only be disassociated from a server that is in a HEALTHY state.
// Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException
// is thrown when the server does not exist. A ValidationException is raised
// when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation DisassociateNode for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DisassociateNode
func (c *OpsWorksCM) DisassociateNode(input *DisassociateNodeInput) (*DisassociateNodeOutput, error) {
	req, out := c.DisassociateNodeRequest(input)
	err := req.Send()
	return out, err
}

const opRestoreServer = "RestoreServer"

// RestoreServerRequest generates a "aws/request.Request" representing the
// client's request for the RestoreServer operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See RestoreServer for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the RestoreServer method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the RestoreServerRequest method.
//    req, resp := client.RestoreServerRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/RestoreServer
func (c *OpsWorksCM) RestoreServerRequest(input *RestoreServerInput) (req *request.Request, output *RestoreServerOutput) {
	op := &request.Operation{
		Name:       opRestoreServer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RestoreServerInput{}
	}

	output = &RestoreServerOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RestoreServer API operation for AWS OpsWorks for Chef Automate.
//
// Restores a backup to a server that is in a CONNECTION_LOST, HEALTHY, RUNNING,
// UNHEALTHY, or TERMINATED state. When you run RestoreServer, the server's
// EC2 instance is deleted, and a new EC2 instance is configured. RestoreServer
// maintains the existing server endpoint, so configuration management of the
// server's client devices (nodes) should continue to work.
//
// This operation is asynchronous.
//
// An InvalidStateException is thrown when the server is not in a valid state.
// A ResourceNotFoundException is thrown when the server does not exist. A ValidationException
// is raised when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation RestoreServer for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/RestoreServer
func (c *OpsWorksCM) RestoreServer(input *RestoreServerInput) (*RestoreServerOutput, error) {
	req, out := c.RestoreServerRequest(input)
	err := req.Send()
	return out, err
}

const opStartMaintenance = "StartMaintenance"

// StartMaintenanceRequest generates a "aws/request.Request" representing the
// client's request for the StartMaintenance operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See StartMaintenance for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the StartMaintenance method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the StartMaintenanceRequest method.
//    req, resp := client.StartMaintenanceRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/StartMaintenance
func (c *OpsWorksCM) StartMaintenanceRequest(input *StartMaintenanceInput) (req *request.Request, output *StartMaintenanceOutput) {
	op := &request.Operation{
		Name:       opStartMaintenance,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartMaintenanceInput{}
	}

	output = &StartMaintenanceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// StartMaintenance API operation for AWS OpsWorks for Chef Automate.
//
// Manually starts server maintenance. This command can be useful if an earlier
// maintenance attempt failed, and the underlying cause of maintenance failure
// has been resolved. The server is in an UNDER_MAINTENANCE state while maintenance
// is in progress.
//
// Maintenance can only be started on servers in HEALTHY and UNHEALTHY states.
// Otherwise, an InvalidStateException is thrown. A ResourceNotFoundException
// is thrown when the server does not exist. A ValidationException is raised
// when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation StartMaintenance for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/StartMaintenance
func (c *OpsWorksCM) StartMaintenance(input *StartMaintenanceInput) (*StartMaintenanceOutput, error) {
	req, out := c.StartMaintenanceRequest(input)
	err := req.Send()
	return out, err
}

const opUpdateServer = "UpdateServer"

// UpdateServerRequest generates a "aws/request.Request" representing the
// client's request for the UpdateServer operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateServer for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateServer method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateServerRequest method.
//    req, resp := client.UpdateServerRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServer
func (c *OpsWorksCM) UpdateServerRequest(input *UpdateServerInput) (req *request.Request, output *UpdateServerOutput) {
	op := &request.Operation{
		Name:       opUpdateServer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateServerInput{}
	}

	output = &UpdateServerOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateServer API operation for AWS OpsWorks for Chef Automate.
//
// Updates settings for a server.
//
// This operation is synchronous.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation UpdateServer for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServer
func (c *OpsWorksCM) UpdateServer(input *UpdateServerInput) (*UpdateServerOutput, error) {
	req, out := c.UpdateServerRequest(input)
	err := req.Send()
	return out, err
}

const opUpdateServerEngineAttributes = "UpdateServerEngineAttributes"

// UpdateServerEngineAttributesRequest generates a "aws/request.Request" representing the
// client's request for the UpdateServerEngineAttributes operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateServerEngineAttributes for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateServerEngineAttributes method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
//    // Example sending a request using the UpdateServerEngineAttributesRequest method.
//    req, resp := client.UpdateServerEngineAttributesRequest(params)
//
//    err := req.Send()
//    if err == nil { // resp is now filled
//        fmt.Println(resp)
//    }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServerEngineAttributes
func (c *OpsWorksCM) UpdateServerEngineAttributesRequest(input *UpdateServerEngineAttributesInput) (req *request.Request, output *UpdateServerEngineAttributesOutput) {
	op := &request.Operation{
		Name:       opUpdateServerEngineAttributes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateServerEngineAttributesInput{}
	}

	output = &UpdateServerEngineAttributesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateServerEngineAttributes API operation for AWS OpsWorks for Chef Automate.
//
// Updates engine-specific attributes on a specified server. The server enters
// the MODIFYING state when this operation is in progress. Only one update can
// occur at a time. You can use this command to reset the Chef server's private
// key (CHEF_PIVOTAL_KEY).
//
// This operation is asynchronous.
//
// This operation can only be called for servers in HEALTHY or UNHEALTHY states.
// Otherwise, an InvalidStateException is raised. A ResourceNotFoundException
// is thrown when the server does not exist. A ValidationException is raised
// when parameters of the request are not valid.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS OpsWorks for Chef Automate's
// API operation UpdateServerEngineAttributes for usage and error information.
//
// Returned Error Codes:
//   * ErrCodeInvalidStateException "InvalidStateException"
//   The resource is in a state that does not allow you to perform a specified
//   action.
//
//   * ErrCodeResourceNotFoundException "ResourceNotFoundException"
//   The requested resource does not exist, or access was denied.
//
//   * ErrCodeValidationException "ValidationException"
//   One or more of the provided request parameters are not valid.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServerEngineAttributes
func (c *OpsWorksCM) UpdateServerEngineAttributes(input *UpdateServerEngineAttributesInput) (*UpdateServerEngineAttributesOutput, error) {
	req, out := c.UpdateServerEngineAttributesRequest(input)
	err := req.Send()
	return out, err
}

// Stores account attributes.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/AccountAttribute
type AccountAttribute struct {
	_ struct{} `type:"structure"`

	// The maximum allowed value.
	Maximum *int64 `type:"integer"`

	// The attribute name. The following are supported attribute names.
	//
	//    * ServerLimit: The number of current servers/maximum number of servers
	//    allowed. By default, you can have a maximum of 10 servers.
	//
	//    * ManualBackupLimit: The number of current manual backups/maximum number
	//    of backups allowed. By default, you can have a maximum of 50 manual backups
	//    saved.
	Name *string `type:"string"`

	// The current usage, such as the current number of servers that are associated
	// with the account.
	Used *int64 `type:"integer"`
}

// String returns the string representation
func (s AccountAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AccountAttribute) GoString() string {
	return s.String()
}

// SetMaximum sets the Maximum field's value.
func (s *AccountAttribute) SetMaximum(v int64) *AccountAttribute {
	s.Maximum = &v
	return s
}

// SetName sets the Name field's value.
func (s *AccountAttribute) SetName(v string) *AccountAttribute {
	s.Name = &v
	return s
}

// SetUsed sets the Used field's value.
func (s *AccountAttribute) SetUsed(v int64) *AccountAttribute {
	s.Used = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/AssociateNodeRequest
type AssociateNodeInput struct {
	_ struct{} `type:"structure"`

	// Engine attributes used for associating the node.
	//
	// Attributes accepted in a AssociateNode request:
	//
	//    * CHEF_ORGANIZATION: The Chef organization with which the node is associated.
	//    By default only one organization named default can exist.
	//
	//    * CHEF_NODE_PUBLIC_KEY: A PEM-formatted public key. This key is required
	//    for the chef-client agent to access the Chef API.
	//
	// EngineAttributes is a required field
	EngineAttributes []*EngineAttribute `type:"list" required:"true"`

	// The name of the Chef client node.
	//
	// NodeName is a required field
	NodeName *string `type:"string" required:"true"`

	// The name of the server with which to associate the node.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s AssociateNodeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AssociateNodeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssociateNodeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssociateNodeInput"}
	if s.EngineAttributes == nil {
		invalidParams.Add(request.NewErrParamRequired("EngineAttributes"))
	}
	if s.NodeName == nil {
		invalidParams.Add(request.NewErrParamRequired("NodeName"))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEngineAttributes sets the EngineAttributes field's value.
func (s *AssociateNodeInput) SetEngineAttributes(v []*EngineAttribute) *AssociateNodeInput {
	s.EngineAttributes = v
	return s
}

// SetNodeName sets the NodeName field's value.
func (s *AssociateNodeInput) SetNodeName(v string) *AssociateNodeInput {
	s.NodeName = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *AssociateNodeInput) SetServerName(v string) *AssociateNodeInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/AssociateNodeResponse
type AssociateNodeOutput struct {
	_ struct{} `type:"structure"`

	// Contains a token which can be passed to the DescribeNodeAssociationStatus
	// API call to get the status of the association request.
	NodeAssociationStatusToken *string `type:"string"`
}

// String returns the string representation
func (s AssociateNodeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s AssociateNodeOutput) GoString() string {
	return s.String()
}

// SetNodeAssociationStatusToken sets the NodeAssociationStatusToken field's value.
func (s *AssociateNodeOutput) SetNodeAssociationStatusToken(v string) *AssociateNodeOutput {
	s.NodeAssociationStatusToken = &v
	return s
}

// Describes a single backup.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/Backup
type Backup struct {
	_ struct{} `type:"structure"`

	// The ARN of the backup.
	BackupArn *string `type:"string"`

	// The generated ID of the backup. Example: myServerName-yyyyMMddHHmmssSSS
	BackupId *string `type:"string"`

	// The backup type. Valid values are automated or manual.
	BackupType *string `type:"string" enum:"BackupType"`

	// The time stamp when the backup was created in the database. Example: 2016-07-29T13:38:47.520Z
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"unix"`

	// A user-provided description for a manual backup. This field is empty for
	// automated backups.
	Description *string `type:"string"`

	// The engine type that is obtained from the server when the backup is created.
	Engine *string `type:"string"`

	// The engine model that is obtained from the server when the backup is created.
	EngineModel *string `type:"string"`

	// The engine version that is obtained from the server when the backup is created.
	EngineVersion *string `type:"string"`

	// The EC2 instance profile ARN that is obtained from the server when the backup
	// is created. Because this value is stored, you are not required to provide
	// the InstanceProfileArn again if you restore a backup.
	InstanceProfileArn *string `type:"string"`

	// The instance type that is obtained from the server when the backup is created.
	InstanceType *string `type:"string"`

	// The key pair that is obtained from the server when the backup is created.
	KeyPair *string `type:"string"`

	// The preferred backup period that is obtained from the server when the backup
	// is created.
	PreferredBackupWindow *string `type:"string"`

	// The preferred maintenance period that is obtained from the server when the
	// backup is created.
	PreferredMaintenanceWindow *string `type:"string"`

	// This field is deprecated and is no longer used.
	S3DataSize *int64 `deprecated:"true" type:"integer"`

	// This field is deprecated and is no longer used.
	S3DataUrl *string `deprecated:"true" type:"string"`

	// The Amazon S3 URL of the backup's log file.
	S3LogUrl *string `type:"string"`

	// The security group IDs that are obtained from the server when the backup
	// is created.
	SecurityGroupIds []*string `type:"list"`

	// The name of the server from which the backup was made.
	ServerName *string `min:"1" type:"string"`

	// The service role ARN that is obtained from the server when the backup is
	// created.
	ServiceRoleArn *string `type:"string"`

	// The status of a backup while in progress.
	Status *string `type:"string" enum:"BackupStatus"`

	// An informational message about backup status.
	StatusDescription *string `type:"string"`

	// The subnet IDs that are obtained from the server when the backup is created.
	SubnetIds []*string `type:"list"`

	// The version of AWS OpsWorks for Chef Automate-specific tools that is obtained
	// from the server when the backup is created.
	ToolsVersion *string `type:"string"`

	// The IAM user ARN of the requester for manual backups. This field is empty
	// for automated backups.
	UserArn *string `type:"string"`
}

// String returns the string representation
func (s Backup) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Backup) GoString() string {
	return s.String()
}

// SetBackupArn sets the BackupArn field's value.
func (s *Backup) SetBackupArn(v string) *Backup {
	s.BackupArn = &v
	return s
}

// SetBackupId sets the BackupId field's value.
func (s *Backup) SetBackupId(v string) *Backup {
	s.BackupId = &v
	return s
}

// SetBackupType sets the BackupType field's value.
func (s *Backup) SetBackupType(v string) *Backup {
	s.BackupType = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *Backup) SetCreatedAt(v time.Time) *Backup {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Backup) SetDescription(v string) *Backup {
	s.Description = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *Backup) SetEngine(v string) *Backup {
	s.Engine = &v
	return s
}

// SetEngineModel sets the EngineModel field's value.
func (s *Backup) SetEngineModel(v string) *Backup {
	s.EngineModel = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *Backup) SetEngineVersion(v string) *Backup {
	s.EngineVersion = &v
	return s
}

// SetInstanceProfileArn sets the InstanceProfileArn field's value.
func (s *Backup) SetInstanceProfileArn(v string) *Backup {
	s.InstanceProfileArn = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *Backup) SetInstanceType(v string) *Backup {
	s.InstanceType = &v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *Backup) SetKeyPair(v string) *Backup {
	s.KeyPair = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *Backup) SetPreferredBackupWindow(v string) *Backup {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *Backup) SetPreferredMaintenanceWindow(v string) *Backup {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetS3DataSize sets the S3DataSize field's value.
func (s *Backup) SetS3DataSize(v int64) *Backup {
	s.S3DataSize = &v
	return s
}

// SetS3DataUrl sets the S3DataUrl field's value.
func (s *Backup) SetS3DataUrl(v string) *Backup {
	s.S3DataUrl = &v
	return s
}

// SetS3LogUrl sets the S3LogUrl field's value.
func (s *Backup) SetS3LogUrl(v string) *Backup {
	s.S3LogUrl = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *Backup) SetSecurityGroupIds(v []*string) *Backup {
	s.SecurityGroupIds = v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *Backup) SetServerName(v string) *Backup {
	s.ServerName = &v
	return s
}

// SetServiceRoleArn sets the ServiceRoleArn field's value.
func (s *Backup) SetServiceRoleArn(v string) *Backup {
	s.ServiceRoleArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Backup) SetStatus(v string) *Backup {
	s.Status = &v
	return s
}

// SetStatusDescription sets the StatusDescription field's value.
func (s *Backup) SetStatusDescription(v string) *Backup {
	s.StatusDescription = &v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *Backup) SetSubnetIds(v []*string) *Backup {
	s.SubnetIds = v
	return s
}

// SetToolsVersion sets the ToolsVersion field's value.
func (s *Backup) SetToolsVersion(v string) *Backup {
	s.ToolsVersion = &v
	return s
}

// SetUserArn sets the UserArn field's value.
func (s *Backup) SetUserArn(v string) *Backup {
	s.UserArn = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateBackupRequest
type CreateBackupInput struct {
	_ struct{} `type:"structure"`

	// A user-defined description of the backup.
	Description *string `type:"string"`

	// The name of the server that you want to back up.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s CreateBackupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateBackupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateBackupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateBackupInput"}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateBackupInput) SetDescription(v string) *CreateBackupInput {
	s.Description = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *CreateBackupInput) SetServerName(v string) *CreateBackupInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateBackupResponse
type CreateBackupOutput struct {
	_ struct{} `type:"structure"`

	// Backup created by request.
	Backup *Backup `type:"structure"`
}

// String returns the string representation
func (s CreateBackupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateBackupOutput) GoString() string {
	return s.String()
}

// SetBackup sets the Backup field's value.
func (s *CreateBackupOutput) SetBackup(v *Backup) *CreateBackupOutput {
	s.Backup = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateServerRequest
type CreateServerInput struct {
	_ struct{} `type:"structure"`

	// Associate a public IP address with a server that you are launching. Valid
	// values are true or false. The default value is true.
	AssociatePublicIpAddress *bool `type:"boolean"`

	// If you specify this field, AWS OpsWorks for Chef Automate creates the server
	// by using the backup represented by BackupId.
	BackupId *string `type:"string"`

	// The number of automated backups that you want to keep. Whenever a new backup
	// is created, AWS OpsWorks for Chef Automate deletes the oldest backups if
	// this number is exceeded. The default value is 1.
	BackupRetentionCount *int64 `min:"1" type:"integer"`

	// Enable or disable scheduled backups. Valid values are true or false. The
	// default value is true.
	DisableAutomatedBackup *bool `type:"boolean"`

	// The configuration management engine to use. Valid values include Chef.
	Engine *string `type:"string"`

	// Optional engine attributes on a specified server.
	//
	// Attributes accepted in a createServer request:
	//
	//    * CHEF_PIVOTAL_KEY: A base64-encoded RSA private key that is not stored
	//    by AWS OpsWorks for Chef. This private key is required to access the Chef
	//    API. When no CHEF_PIVOTAL_KEY is set, one is generated and returned in
	//    the response.
	//
	//    * CHEF_DELIVERY_ADMIN_PASSWORD: The password for the administrative user
	//    in the Chef Automate GUI. The password length is a minimum of eight characters,
	//    and a maximum of 32. The password can contain letters, numbers, and special
	//    characters (!/@#$%^&+=_). The password must contain at least one lower
	//    case letter, one upper case letter, one number, and one special character.
	//    When no CHEF_DELIVERY_ADMIN_PASSWORD is set, one is generated and returned
	//    in the response.
	EngineAttributes []*EngineAttribute `type:"list"`

	// The engine model, or option. Valid values include Single.
	EngineModel *string `type:"string"`

	// The major release version of the engine that you want to use. Values depend
	// on the engine that you choose.
	EngineVersion *string `type:"string"`

	// The ARN of the instance profile that your Amazon EC2 instances use. Although
	// the AWS OpsWorks console typically creates the instance profile for you,
	// if you are using API commands instead, run the service-role-creation.yaml
	// AWS CloudFormation template, located at https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml.
	// This template creates a CloudFormation stack that includes the instance profile
	// you need.
	//
	// InstanceProfileArn is a required field
	InstanceProfileArn *string `type:"string" required:"true"`

	// The Amazon EC2 instance type to use. Valid values must be specified in the
	// following format: ^([cm][34]|t2).* For example, m4.large. Valid values are
	// t2.medium, m4.large, or m4.2xlarge.
	//
	// InstanceType is a required field
	InstanceType *string `type:"string" required:"true"`

	// The Amazon EC2 key pair to set for the instance. This parameter is optional;
	// if desired, you may specify this parameter to connect to your instances by
	// using SSH.
	KeyPair *string `type:"string"`

	// The start time for a one-hour period during which AWS OpsWorks for Chef Automate
	// backs up application-level data on your server if automated backups are enabled.
	// Valid values must be specified in one of the following formats:
	//
	//    * HH:MM for daily backups
	//
	//    * DDD:HH:MM for weekly backups
	//
	// The specified time is in coordinated universal time (UTC). The default value
	// is a random, daily start time.
	//
	// Example:08:00, which represents a daily start time of 08:00 UTC.
	//
	// Example:Mon:08:00, which represents a start time of every Monday at 08:00
	// UTC. (8:00 a.m.)
	PreferredBackupWindow *string `type:"string"`

	// The start time for a one-hour period each week during which AWS OpsWorks
	// for Chef Automate performs maintenance on the instance. Valid values must
	// be specified in the following format: DDD:HH:MM. The specified time is in
	// coordinated universal time (UTC). The default value is a random one-hour
	// period on Tuesday, Wednesday, or Friday. See TimeWindowDefinition for more
	// information.
	//
	// Example:Mon:08:00, which represents a start time of every Monday at 08:00
	// UTC. (8:00 a.m.)
	PreferredMaintenanceWindow *string `type:"string"`

	// A list of security group IDs to attach to the Amazon EC2 instance. If you
	// add this parameter, the specified security groups must be within the VPC
	// that is specified by SubnetIds.
	//
	// If you do not specify this parameter, AWS OpsWorks for Chef Automate creates
	// one new security group that uses TCP ports 22 and 443, open to 0.0.0.0/0
	// (everyone).
	SecurityGroupIds []*string `type:"list"`

	// The name of the server. The server name must be unique within your AWS account,
	// within each region. Server names must start with a letter; then letters,
	// numbers, or hyphens (-) are allowed, up to a maximum of 40 characters.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`

	// The service role that the AWS OpsWorks for Chef Automate service backend
	// uses to work with your account. Although the AWS OpsWorks management console
	// typically creates the service role for you, if you are using the AWS CLI
	// or API commands, run the service-role-creation.yaml AWS CloudFormation template,
	// located at https://s3.amazonaws.com/opsworks-stuff/latest/service-role-creation.yaml.
	// This template creates a CloudFormation stack that includes the service role
	// that you need.
	//
	// ServiceRoleArn is a required field
	ServiceRoleArn *string `type:"string" required:"true"`

	// The IDs of subnets in which to launch the server EC2 instance.
	//
	// Amazon EC2-Classic customers: This field is required. All servers must run
	// within a VPC. The VPC must have "Auto Assign Public IP" enabled.
	//
	// EC2-VPC customers: This field is optional. If you do not specify subnet IDs,
	// your EC2 instances are created in a default subnet that is selected by Amazon
	// EC2. If you specify subnet IDs, the VPC must have "Auto Assign Public IP"
	// enabled.
	//
	// For more information about supported Amazon EC2 platforms, see Supported
	// Platforms (http://docs.aws.amazon.com/https:/docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html).
	SubnetIds []*string `type:"list"`
}

// String returns the string representation
func (s CreateServerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateServerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateServerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateServerInput"}
	if s.BackupRetentionCount != nil && *s.BackupRetentionCount < 1 {
		invalidParams.Add(request.NewErrParamMinValue("BackupRetentionCount", 1))
	}
	if s.InstanceProfileArn == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceProfileArn"))
	}
	if s.InstanceType == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}
	if s.ServiceRoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ServiceRoleArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value.
func (s *CreateServerInput) SetAssociatePublicIpAddress(v bool) *CreateServerInput {
	s.AssociatePublicIpAddress = &v
	return s
}

// SetBackupId sets the BackupId field's value.
func (s *CreateServerInput) SetBackupId(v string) *CreateServerInput {
	s.BackupId = &v
	return s
}

// SetBackupRetentionCount sets the BackupRetentionCount field's value.
func (s *CreateServerInput) SetBackupRetentionCount(v int64) *CreateServerInput {
	s.BackupRetentionCount = &v
	return s
}

// SetDisableAutomatedBackup sets the DisableAutomatedBackup field's value.
func (s *CreateServerInput) SetDisableAutomatedBackup(v bool) *CreateServerInput {
	s.DisableAutomatedBackup = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *CreateServerInput) SetEngine(v string) *CreateServerInput {
	s.Engine = &v
	return s
}

// SetEngineAttributes sets the EngineAttributes field's value.
func (s *CreateServerInput) SetEngineAttributes(v []*EngineAttribute) *CreateServerInput {
	s.EngineAttributes = v
	return s
}

// SetEngineModel sets the EngineModel field's value.
func (s *CreateServerInput) SetEngineModel(v string) *CreateServerInput {
	s.EngineModel = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *CreateServerInput) SetEngineVersion(v string) *CreateServerInput {
	s.EngineVersion = &v
	return s
}

// SetInstanceProfileArn sets the InstanceProfileArn field's value.
func (s *CreateServerInput) SetInstanceProfileArn(v string) *CreateServerInput {
	s.InstanceProfileArn = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *CreateServerInput) SetInstanceType(v string) *CreateServerInput {
	s.InstanceType = &v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *CreateServerInput) SetKeyPair(v string) *CreateServerInput {
	s.KeyPair = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *CreateServerInput) SetPreferredBackupWindow(v string) *CreateServerInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *CreateServerInput) SetPreferredMaintenanceWindow(v string) *CreateServerInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *CreateServerInput) SetSecurityGroupIds(v []*string) *CreateServerInput {
	s.SecurityGroupIds = v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *CreateServerInput) SetServerName(v string) *CreateServerInput {
	s.ServerName = &v
	return s
}

// SetServiceRoleArn sets the ServiceRoleArn field's value.
func (s *CreateServerInput) SetServiceRoleArn(v string) *CreateServerInput {
	s.ServiceRoleArn = &v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *CreateServerInput) SetSubnetIds(v []*string) *CreateServerInput {
	s.SubnetIds = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/CreateServerResponse
type CreateServerOutput struct {
	_ struct{} `type:"structure"`

	// The server that is created by the request.
	Server *Server `type:"structure"`
}

// String returns the string representation
func (s CreateServerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s CreateServerOutput) GoString() string {
	return s.String()
}

// SetServer sets the Server field's value.
func (s *CreateServerOutput) SetServer(v *Server) *CreateServerOutput {
	s.Server = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteBackupRequest
type DeleteBackupInput struct {
	_ struct{} `type:"structure"`

	// The ID of the backup to delete. Run the DescribeBackups command to get a
	// list of backup IDs. Backup IDs are in the format ServerName-yyyyMMddHHmmssSSS.
	//
	// BackupId is a required field
	BackupId *string `type:"string" required:"true"`
}

// String returns the string representation
func (s DeleteBackupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteBackupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteBackupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteBackupInput"}
	if s.BackupId == nil {
		invalidParams.Add(request.NewErrParamRequired("BackupId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackupId sets the BackupId field's value.
func (s *DeleteBackupInput) SetBackupId(v string) *DeleteBackupInput {
	s.BackupId = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteBackupResponse
type DeleteBackupOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeleteBackupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteBackupOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteServerRequest
type DeleteServerInput struct {
	_ struct{} `type:"structure"`

	// The ID of the server to delete.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DeleteServerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteServerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteServerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteServerInput"}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServerName sets the ServerName field's value.
func (s *DeleteServerInput) SetServerName(v string) *DeleteServerInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DeleteServerResponse
type DeleteServerOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DeleteServerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DeleteServerOutput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeAccountAttributesRequest
type DescribeAccountAttributesInput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s DescribeAccountAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAccountAttributesInput) GoString() string {
	return s.String()
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeAccountAttributesResponse
type DescribeAccountAttributesOutput struct {
	_ struct{} `type:"structure"`

	// The attributes that are currently set for the account.
	Attributes []*AccountAttribute `type:"list"`
}

// String returns the string representation
func (s DescribeAccountAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeAccountAttributesOutput) GoString() string {
	return s.String()
}

// SetAttributes sets the Attributes field's value.
func (s *DescribeAccountAttributesOutput) SetAttributes(v []*AccountAttribute) *DescribeAccountAttributesOutput {
	s.Attributes = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeBackupsRequest
type DescribeBackupsInput struct {
	_ struct{} `type:"structure"`

	// Describes a single backup.
	BackupId *string `type:"string"`

	// To receive a paginated response, use this parameter to specify the maximum
	// number of results to be returned with a single call. If the number of available
	// results exceeds this maximum, the response includes a NextToken value that
	// you can assign to the NextToken request parameter to get the next set of
	// results.
	MaxResults *int64 `min:"1" type:"integer"`

	// NextToken is a string that is returned in some command responses. It indicates
	// that not all entries have been returned, and that you must run at least one
	// more request to get remaining items. To get remaining results, call DescribeBackups
	// again, and assign the token from the previous results as the value of the
	// nextToken parameter. If there are no more results, the response object's
	// nextToken parameter value is null. Setting a nextToken value that was not
	// returned in your previous results causes an InvalidNextTokenException to
	// occur.
	NextToken *string `type:"string"`

	// Returns backups for the server with the specified ServerName.
	ServerName *string `min:"1" type:"string"`
}

// String returns the string representation
func (s DescribeBackupsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeBackupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeBackupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeBackupsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackupId sets the BackupId field's value.
func (s *DescribeBackupsInput) SetBackupId(v string) *DescribeBackupsInput {
	s.BackupId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeBackupsInput) SetMaxResults(v int64) *DescribeBackupsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeBackupsInput) SetNextToken(v string) *DescribeBackupsInput {
	s.NextToken = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *DescribeBackupsInput) SetServerName(v string) *DescribeBackupsInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeBackupsResponse
type DescribeBackupsOutput struct {
	_ struct{} `type:"structure"`

	// Contains the response to a DescribeBackups request.
	Backups []*Backup `type:"list"`

	// NextToken is a string that is returned in some command responses. It indicates
	// that not all entries have been returned, and that you must run at least one
	// more request to get remaining items. To get remaining results, call DescribeBackups
	// again, and assign the token from the previous results as the value of the
	// nextToken parameter. If there are no more results, the response object's
	// nextToken parameter value is null. Setting a nextToken value that was not
	// returned in your previous results causes an InvalidNextTokenException to
	// occur.
	NextToken *string `type:"string"`
}

// String returns the string representation
func (s DescribeBackupsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeBackupsOutput) GoString() string {
	return s.String()
}

// SetBackups sets the Backups field's value.
func (s *DescribeBackupsOutput) SetBackups(v []*Backup) *DescribeBackupsOutput {
	s.Backups = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeBackupsOutput) SetNextToken(v string) *DescribeBackupsOutput {
	s.NextToken = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeEventsRequest
type DescribeEventsInput struct {
	_ struct{} `type:"structure"`

	// To receive a paginated response, use this parameter to specify the maximum
	// number of results to be returned with a single call. If the number of available
	// results exceeds this maximum, the response includes a NextToken value that
	// you can assign to the NextToken request parameter to get the next set of
	// results.
	MaxResults *int64 `min:"1" type:"integer"`

	// NextToken is a string that is returned in some command responses. It indicates
	// that not all entries have been returned, and that you must run at least one
	// more request to get remaining items. To get remaining results, call DescribeEvents
	// again, and assign the token from the previous results as the value of the
	// nextToken parameter. If there are no more results, the response object's
	// nextToken parameter value is null. Setting a nextToken value that was not
	// returned in your previous results causes an InvalidNextTokenException to
	// occur.
	NextToken *string `type:"string"`

	// The name of the server for which you want to view events.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeEventsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeEventsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeEventsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeEventsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeEventsInput) SetMaxResults(v int64) *DescribeEventsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeEventsInput) SetNextToken(v string) *DescribeEventsInput {
	s.NextToken = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *DescribeEventsInput) SetServerName(v string) *DescribeEventsInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeEventsResponse
type DescribeEventsOutput struct {
	_ struct{} `type:"structure"`

	// NextToken is a string that is returned in some command responses. It indicates
	// that not all entries have been returned, and that you must run at least one
	// more request to get remaining items. To get remaining results, call DescribeEvents
	// again, and assign the token from the previous results as the value of the
	// nextToken parameter. If there are no more results, the response object's
	// nextToken parameter value is null. Setting a nextToken value that was not
	// returned in your previous results causes an InvalidNextTokenException to
	// occur.
	NextToken *string `type:"string"`

	// Contains the response to a DescribeEvents request.
	ServerEvents []*ServerEvent `type:"list"`
}

// String returns the string representation
func (s DescribeEventsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeEventsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeEventsOutput) SetNextToken(v string) *DescribeEventsOutput {
	s.NextToken = &v
	return s
}

// SetServerEvents sets the ServerEvents field's value.
func (s *DescribeEventsOutput) SetServerEvents(v []*ServerEvent) *DescribeEventsOutput {
	s.ServerEvents = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeNodeAssociationStatusRequest
type DescribeNodeAssociationStatusInput struct {
	_ struct{} `type:"structure"`

	// NodeAssociationStatusToken is a required field
	NodeAssociationStatusToken *string `type:"string" required:"true"`

	// The name of the server from which to disassociate the node.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DescribeNodeAssociationStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeNodeAssociationStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeNodeAssociationStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeNodeAssociationStatusInput"}
	if s.NodeAssociationStatusToken == nil {
		invalidParams.Add(request.NewErrParamRequired("NodeAssociationStatusToken"))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNodeAssociationStatusToken sets the NodeAssociationStatusToken field's value.
func (s *DescribeNodeAssociationStatusInput) SetNodeAssociationStatusToken(v string) *DescribeNodeAssociationStatusInput {
	s.NodeAssociationStatusToken = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *DescribeNodeAssociationStatusInput) SetServerName(v string) *DescribeNodeAssociationStatusInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeNodeAssociationStatusResponse
type DescribeNodeAssociationStatusOutput struct {
	_ struct{} `type:"structure"`

	// The status of the association or disassociation request.
	//
	// Possible values:
	//
	//    * SUCCESS: The association or disassociation succeeded.
	//
	//    * FAILED: The association or disassociation failed.
	//
	//    * IN_PROGRESS: The association or disassociation is still in progress.
	//
	NodeAssociationStatus *string `type:"string" enum:"NodeAssociationStatus"`
}

// String returns the string representation
func (s DescribeNodeAssociationStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeNodeAssociationStatusOutput) GoString() string {
	return s.String()
}

// SetNodeAssociationStatus sets the NodeAssociationStatus field's value.
func (s *DescribeNodeAssociationStatusOutput) SetNodeAssociationStatus(v string) *DescribeNodeAssociationStatusOutput {
	s.NodeAssociationStatus = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeServersRequest
type DescribeServersInput struct {
	_ struct{} `type:"structure"`

	// To receive a paginated response, use this parameter to specify the maximum
	// number of results to be returned with a single call. If the number of available
	// results exceeds this maximum, the response includes a NextToken value that
	// you can assign to the NextToken request parameter to get the next set of
	// results.
	MaxResults *int64 `min:"1" type:"integer"`

	// NextToken is a string that is returned in some command responses. It indicates
	// that not all entries have been returned, and that you must run at least one
	// more request to get remaining items. To get remaining results, call DescribeServers
	// again, and assign the token from the previous results as the value of the
	// nextToken parameter. If there are no more results, the response object's
	// nextToken parameter value is null. Setting a nextToken value that was not
	// returned in your previous results causes an InvalidNextTokenException to
	// occur.
	NextToken *string `type:"string"`

	// Describes the server with the specified ServerName.
	ServerName *string `min:"1" type:"string"`
}

// String returns the string representation
func (s DescribeServersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeServersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeServersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeServersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeServersInput) SetMaxResults(v int64) *DescribeServersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeServersInput) SetNextToken(v string) *DescribeServersInput {
	s.NextToken = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *DescribeServersInput) SetServerName(v string) *DescribeServersInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DescribeServersResponse
type DescribeServersOutput struct {
	_ struct{} `type:"structure"`

	// NextToken is a string that is returned in some command responses. It indicates
	// that not all entries have been returned, and that you must run at least one
	// more request to get remaining items. To get remaining results, call DescribeServers
	// again, and assign the token from the previous results as the value of the
	// nextToken parameter. If there are no more results, the response object's
	// nextToken parameter value is null. Setting a nextToken value that was not
	// returned in your previous results causes an InvalidNextTokenException to
	// occur.
	NextToken *string `type:"string"`

	// Contains the response to a DescribeServers request.
	Servers []*Server `type:"list"`
}

// String returns the string representation
func (s DescribeServersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DescribeServersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeServersOutput) SetNextToken(v string) *DescribeServersOutput {
	s.NextToken = &v
	return s
}

// SetServers sets the Servers field's value.
func (s *DescribeServersOutput) SetServers(v []*Server) *DescribeServersOutput {
	s.Servers = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DisassociateNodeRequest
type DisassociateNodeInput struct {
	_ struct{} `type:"structure"`

	// Engine attributes used for disassociating the node.
	//
	// Attributes accepted in a DisassociateNode request:
	//
	//    * CHEF_ORGANIZATION: The Chef organization with which the node was associated.
	//    By default only one organization named default can exist.
	EngineAttributes []*EngineAttribute `type:"list"`

	// The name of the Chef client node.
	//
	// NodeName is a required field
	NodeName *string `type:"string" required:"true"`

	// The name of the server from which to disassociate the node.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s DisassociateNodeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DisassociateNodeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DisassociateNodeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DisassociateNodeInput"}
	if s.NodeName == nil {
		invalidParams.Add(request.NewErrParamRequired("NodeName"))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEngineAttributes sets the EngineAttributes field's value.
func (s *DisassociateNodeInput) SetEngineAttributes(v []*EngineAttribute) *DisassociateNodeInput {
	s.EngineAttributes = v
	return s
}

// SetNodeName sets the NodeName field's value.
func (s *DisassociateNodeInput) SetNodeName(v string) *DisassociateNodeInput {
	s.NodeName = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *DisassociateNodeInput) SetServerName(v string) *DisassociateNodeInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/DisassociateNodeResponse
type DisassociateNodeOutput struct {
	_ struct{} `type:"structure"`

	// Contains a token which can be passed to the DescribeNodeAssociationStatus
	// API call to get the status of the disassociation request.
	NodeAssociationStatusToken *string `type:"string"`
}

// String returns the string representation
func (s DisassociateNodeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s DisassociateNodeOutput) GoString() string {
	return s.String()
}

// SetNodeAssociationStatusToken sets the NodeAssociationStatusToken field's value.
func (s *DisassociateNodeOutput) SetNodeAssociationStatusToken(v string) *DisassociateNodeOutput {
	s.NodeAssociationStatusToken = &v
	return s
}

// A name and value pair that is specific to the engine of the server.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/EngineAttribute
type EngineAttribute struct {
	_ struct{} `type:"structure"`

	// The name of the engine attribute.
	Name *string `type:"string"`

	// The value of the engine attribute.
	Value *string `type:"string"`
}

// String returns the string representation
func (s EngineAttribute) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s EngineAttribute) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *EngineAttribute) SetName(v string) *EngineAttribute {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EngineAttribute) SetValue(v string) *EngineAttribute {
	s.Value = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/RestoreServerRequest
type RestoreServerInput struct {
	_ struct{} `type:"structure"`

	// The ID of the backup that you want to use to restore a server.
	//
	// BackupId is a required field
	BackupId *string `type:"string" required:"true"`

	// The type of the instance to create. Valid values must be specified in the
	// following format: ^([cm][34]|t2).* For example, m4.large. Valid values are
	// t2.medium, m4.large, and m4.2xlarge. If you do not specify this parameter,
	// RestoreServer uses the instance type from the specified backup.
	InstanceType *string `type:"string"`

	// The name of the key pair to set on the new EC2 instance. This can be helpful
	// if the administrator no longer has the SSH key.
	KeyPair *string `type:"string"`

	// The name of the server that you want to restore.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s RestoreServerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RestoreServerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreServerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreServerInput"}
	if s.BackupId == nil {
		invalidParams.Add(request.NewErrParamRequired("BackupId"))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackupId sets the BackupId field's value.
func (s *RestoreServerInput) SetBackupId(v string) *RestoreServerInput {
	s.BackupId = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *RestoreServerInput) SetInstanceType(v string) *RestoreServerInput {
	s.InstanceType = &v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *RestoreServerInput) SetKeyPair(v string) *RestoreServerInput {
	s.KeyPair = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *RestoreServerInput) SetServerName(v string) *RestoreServerInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/RestoreServerResponse
type RestoreServerOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation
func (s RestoreServerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s RestoreServerOutput) GoString() string {
	return s.String()
}

// Describes a configuration management server.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/Server
type Server struct {
	_ struct{} `type:"structure"`

	// Associate a public IP address with a server that you are launching.
	AssociatePublicIpAddress *bool `type:"boolean"`

	// The number of automated backups to keep.
	BackupRetentionCount *int64 `type:"integer"`

	// The ARN of the CloudFormation stack that was used to create the server.
	CloudFormationStackArn *string `type:"string"`

	// Time stamp of server creation. Example 2016-07-29T13:38:47.520Z
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"unix"`

	// Disables automated backups. The number of stored backups is dependent on
	// the value of PreferredBackupCount.
	DisableAutomatedBackup *bool `type:"boolean"`

	// A DNS name that can be used to access the engine. Example: myserver-asdfghjkl.us-east-1.opsworks.io
	Endpoint *string `type:"string"`

	// The engine type of the server. The valid value in this release is Chef.
	Engine *string `type:"string"`

	// The response of a createServer() request returns the master credential to
	// access the server in EngineAttributes. These credentials are not stored by
	// AWS OpsWorks for Chef Automate; they are returned only as part of the result
	// of createServer().
	//
	// Attributes returned in a createServer response:
	//
	//    * CHEF_PIVOTAL_KEY: A base64-encoded RSA private key that is generated
	//    by AWS OpsWorks for Chef Automate. This private key is required to access
	//    the Chef API.
	//
	//    * CHEF_STARTER_KIT: A base64-encoded ZIP file. The ZIP file contains a
	//    Chef starter kit, which includes a README, a configuration file, and the
	//    required RSA private key. Save this file, unzip it, and then change to
	//    the directory where you've unzipped the file contents. From this directory,
	//    you can run Knife commands.
	EngineAttributes []*EngineAttribute `type:"list"`

	// The engine model of the server. The valid value in this release is Single.
	EngineModel *string `type:"string"`

	// The engine version of the server. Because Chef is the engine available in
	// this release, the valid value for EngineVersion is 12.
	EngineVersion *string `type:"string"`

	// The instance profile ARN of the server.
	InstanceProfileArn *string `type:"string"`

	// The instance type for the server, as specified in the CloudFormation stack.
	// This might not be the same instance type that is shown in the EC2 console.
	InstanceType *string `type:"string"`

	// The key pair associated with the server.
	KeyPair *string `type:"string"`

	// The status of the most recent server maintenance run. Shows SUCCESS or FAILED.
	MaintenanceStatus *string `type:"string" enum:"MaintenanceStatus"`

	// The preferred backup period specified for the server.
	PreferredBackupWindow *string `type:"string"`

	// The preferred maintenance period specified for the server.
	PreferredMaintenanceWindow *string `type:"string"`

	// The security group IDs for the server, as specified in the CloudFormation
	// stack. These might not be the same security groups that are shown in the
	// EC2 console.
	SecurityGroupIds []*string `type:"list"`

	// The ARN of the server.
	ServerArn *string `type:"string"`

	// The name of the server.
	ServerName *string `type:"string"`

	// The service role ARN used to create the server.
	ServiceRoleArn *string `type:"string"`

	// The server's status. This field displays the states of actions in progress,
	// such as creating, running, or backing up the server, as well as the server's
	// health state.
	Status *string `type:"string" enum:"ServerStatus"`

	// Depending on the server status, this field has either a human-readable message
	// (such as a create or backup error), or an escaped block of JSON (used for
	// health check results).
	StatusReason *string `type:"string"`

	// The subnet IDs specified in a CreateServer request.
	SubnetIds []*string `type:"list"`
}

// String returns the string representation
func (s Server) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s Server) GoString() string {
	return s.String()
}

// SetAssociatePublicIpAddress sets the AssociatePublicIpAddress field's value.
func (s *Server) SetAssociatePublicIpAddress(v bool) *Server {
	s.AssociatePublicIpAddress = &v
	return s
}

// SetBackupRetentionCount sets the BackupRetentionCount field's value.
func (s *Server) SetBackupRetentionCount(v int64) *Server {
	s.BackupRetentionCount = &v
	return s
}

// SetCloudFormationStackArn sets the CloudFormationStackArn field's value.
func (s *Server) SetCloudFormationStackArn(v string) *Server {
	s.CloudFormationStackArn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *Server) SetCreatedAt(v time.Time) *Server {
	s.CreatedAt = &v
	return s
}

// SetDisableAutomatedBackup sets the DisableAutomatedBackup field's value.
func (s *Server) SetDisableAutomatedBackup(v bool) *Server {
	s.DisableAutomatedBackup = &v
	return s
}

// SetEndpoint sets the Endpoint field's value.
func (s *Server) SetEndpoint(v string) *Server {
	s.Endpoint = &v
	return s
}

// SetEngine sets the Engine field's value.
func (s *Server) SetEngine(v string) *Server {
	s.Engine = &v
	return s
}

// SetEngineAttributes sets the EngineAttributes field's value.
func (s *Server) SetEngineAttributes(v []*EngineAttribute) *Server {
	s.EngineAttributes = v
	return s
}

// SetEngineModel sets the EngineModel field's value.
func (s *Server) SetEngineModel(v string) *Server {
	s.EngineModel = &v
	return s
}

// SetEngineVersion sets the EngineVersion field's value.
func (s *Server) SetEngineVersion(v string) *Server {
	s.EngineVersion = &v
	return s
}

// SetInstanceProfileArn sets the InstanceProfileArn field's value.
func (s *Server) SetInstanceProfileArn(v string) *Server {
	s.InstanceProfileArn = &v
	return s
}

// SetInstanceType sets the InstanceType field's value.
func (s *Server) SetInstanceType(v string) *Server {
	s.InstanceType = &v
	return s
}

// SetKeyPair sets the KeyPair field's value.
func (s *Server) SetKeyPair(v string) *Server {
	s.KeyPair = &v
	return s
}

// SetMaintenanceStatus sets the MaintenanceStatus field's value.
func (s *Server) SetMaintenanceStatus(v string) *Server {
	s.MaintenanceStatus = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *Server) SetPreferredBackupWindow(v string) *Server {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *Server) SetPreferredMaintenanceWindow(v string) *Server {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *Server) SetSecurityGroupIds(v []*string) *Server {
	s.SecurityGroupIds = v
	return s
}

// SetServerArn sets the ServerArn field's value.
func (s *Server) SetServerArn(v string) *Server {
	s.ServerArn = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *Server) SetServerName(v string) *Server {
	s.ServerName = &v
	return s
}

// SetServiceRoleArn sets the ServiceRoleArn field's value.
func (s *Server) SetServiceRoleArn(v string) *Server {
	s.ServiceRoleArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Server) SetStatus(v string) *Server {
	s.Status = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *Server) SetStatusReason(v string) *Server {
	s.StatusReason = &v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *Server) SetSubnetIds(v []*string) *Server {
	s.SubnetIds = v
	return s
}

// An event that is related to the server, such as the start of maintenance
// or backup.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/ServerEvent
type ServerEvent struct {
	_ struct{} `type:"structure"`

	// The time when the event occurred.
	CreatedAt *time.Time `type:"timestamp" timestampFormat:"unix"`

	// The Amazon S3 URL of the event's log file.
	LogUrl *string `type:"string"`

	// A human-readable informational or status message.
	Message *string `type:"string"`

	// The name of the server on or for which the event occurred.
	ServerName *string `type:"string"`
}

// String returns the string representation
func (s ServerEvent) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s ServerEvent) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *ServerEvent) SetCreatedAt(v time.Time) *ServerEvent {
	s.CreatedAt = &v
	return s
}

// SetLogUrl sets the LogUrl field's value.
func (s *ServerEvent) SetLogUrl(v string) *ServerEvent {
	s.LogUrl = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *ServerEvent) SetMessage(v string) *ServerEvent {
	s.Message = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *ServerEvent) SetServerName(v string) *ServerEvent {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/StartMaintenanceRequest
type StartMaintenanceInput struct {
	_ struct{} `type:"structure"`

	// The name of the server on which to run maintenance.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s StartMaintenanceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StartMaintenanceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartMaintenanceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartMaintenanceInput"}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetServerName sets the ServerName field's value.
func (s *StartMaintenanceInput) SetServerName(v string) *StartMaintenanceInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/StartMaintenanceResponse
type StartMaintenanceOutput struct {
	_ struct{} `type:"structure"`

	// Contains the response to a StartMaintenance request.
	Server *Server `type:"structure"`
}

// String returns the string representation
func (s StartMaintenanceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s StartMaintenanceOutput) GoString() string {
	return s.String()
}

// SetServer sets the Server field's value.
func (s *StartMaintenanceOutput) SetServer(v *Server) *StartMaintenanceOutput {
	s.Server = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServerEngineAttributesRequest
type UpdateServerEngineAttributesInput struct {
	_ struct{} `type:"structure"`

	// The name of the engine attribute to update.
	//
	// AttributeName is a required field
	AttributeName *string `min:"1" type:"string" required:"true"`

	// The value to set for the attribute.
	AttributeValue *string `type:"string"`

	// The name of the server to update.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateServerEngineAttributesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateServerEngineAttributesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateServerEngineAttributesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateServerEngineAttributesInput"}
	if s.AttributeName == nil {
		invalidParams.Add(request.NewErrParamRequired("AttributeName"))
	}
	if s.AttributeName != nil && len(*s.AttributeName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AttributeName", 1))
	}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttributeName sets the AttributeName field's value.
func (s *UpdateServerEngineAttributesInput) SetAttributeName(v string) *UpdateServerEngineAttributesInput {
	s.AttributeName = &v
	return s
}

// SetAttributeValue sets the AttributeValue field's value.
func (s *UpdateServerEngineAttributesInput) SetAttributeValue(v string) *UpdateServerEngineAttributesInput {
	s.AttributeValue = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *UpdateServerEngineAttributesInput) SetServerName(v string) *UpdateServerEngineAttributesInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServerEngineAttributesResponse
type UpdateServerEngineAttributesOutput struct {
	_ struct{} `type:"structure"`

	// Contains the response to an UpdateServerEngineAttributes request.
	Server *Server `type:"structure"`
}

// String returns the string representation
func (s UpdateServerEngineAttributesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateServerEngineAttributesOutput) GoString() string {
	return s.String()
}

// SetServer sets the Server field's value.
func (s *UpdateServerEngineAttributesOutput) SetServer(v *Server) *UpdateServerEngineAttributesOutput {
	s.Server = v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServerRequest
type UpdateServerInput struct {
	_ struct{} `type:"structure"`

	// Sets the number of automated backups that you want to keep.
	BackupRetentionCount *int64 `type:"integer"`

	// Setting DisableAutomatedBackup to true disables automated or scheduled backups.
	// Automated backups are enabled by default.
	DisableAutomatedBackup *bool `type:"boolean"`

	// DDD:HH:MM (weekly start time) or HH:MM (daily start time).
	//
	// Time windows always use coordinated universal time (UTC). Valid strings for
	// day of week (DDD) are: Mon, Tue, Wed, Thr, Fri, Sat, or Sun.
	PreferredBackupWindow *string `type:"string"`

	// DDD:HH:MM (weekly start time) or HH:MM (daily start time).
	//
	// Time windows always use coordinated universal time (UTC). Valid strings for
	// day of week (DDD) are: Mon, Tue, Wed, Thr, Fri, Sat, or Sun.
	PreferredMaintenanceWindow *string `type:"string"`

	// The name of the server to update.
	//
	// ServerName is a required field
	ServerName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation
func (s UpdateServerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateServerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateServerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateServerInput"}
	if s.ServerName == nil {
		invalidParams.Add(request.NewErrParamRequired("ServerName"))
	}
	if s.ServerName != nil && len(*s.ServerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ServerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackupRetentionCount sets the BackupRetentionCount field's value.
func (s *UpdateServerInput) SetBackupRetentionCount(v int64) *UpdateServerInput {
	s.BackupRetentionCount = &v
	return s
}

// SetDisableAutomatedBackup sets the DisableAutomatedBackup field's value.
func (s *UpdateServerInput) SetDisableAutomatedBackup(v bool) *UpdateServerInput {
	s.DisableAutomatedBackup = &v
	return s
}

// SetPreferredBackupWindow sets the PreferredBackupWindow field's value.
func (s *UpdateServerInput) SetPreferredBackupWindow(v string) *UpdateServerInput {
	s.PreferredBackupWindow = &v
	return s
}

// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
func (s *UpdateServerInput) SetPreferredMaintenanceWindow(v string) *UpdateServerInput {
	s.PreferredMaintenanceWindow = &v
	return s
}

// SetServerName sets the ServerName field's value.
func (s *UpdateServerInput) SetServerName(v string) *UpdateServerInput {
	s.ServerName = &v
	return s
}

// Please also see https://docs.aws.amazon.com/goto/WebAPI/opsworkscm-2016-11-01/UpdateServerResponse
type UpdateServerOutput struct {
	_ struct{} `type:"structure"`

	// Contains the response to a UpdateServer request.
	Server *Server `type:"structure"`
}

// String returns the string representation
func (s UpdateServerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation
func (s UpdateServerOutput) GoString() string {
	return s.String()
}

// SetServer sets the Server field's value.
func (s *UpdateServerOutput) SetServer(v *Server) *UpdateServerOutput {
	s.Server = v
	return s
}

const (
	// BackupStatusInProgress is a BackupStatus enum value
	BackupStatusInProgress = "IN_PROGRESS"

	// BackupStatusOk is a BackupStatus enum value
	BackupStatusOk = "OK"

	// BackupStatusFailed is a BackupStatus enum value
	BackupStatusFailed = "FAILED"

	// BackupStatusDeleting is a BackupStatus enum value
	BackupStatusDeleting = "DELETING"
)

const (
	// BackupTypeAutomated is a BackupType enum value
	BackupTypeAutomated = "AUTOMATED"

	// BackupTypeManual is a BackupType enum value
	BackupTypeManual = "MANUAL"
)

const (
	// MaintenanceStatusSuccess is a MaintenanceStatus enum value
	MaintenanceStatusSuccess = "SUCCESS"

	// MaintenanceStatusFailed is a MaintenanceStatus enum value
	MaintenanceStatusFailed = "FAILED"
)

// The status of the association or disassociation request.
//
// Possible values:
//
//    * SUCCESS: The association or disassociation succeeded.
//
//    * FAILED: The association or disassociation failed.
//
//    * IN_PROGRESS: The association or disassociation is still in progress.
//
const (
	// NodeAssociationStatusSuccess is a NodeAssociationStatus enum value
	NodeAssociationStatusSuccess = "SUCCESS"

	// NodeAssociationStatusFailed is a NodeAssociationStatus enum value
	NodeAssociationStatusFailed = "FAILED"

	// NodeAssociationStatusInProgress is a NodeAssociationStatus enum value
	NodeAssociationStatusInProgress = "IN_PROGRESS"
)

const (
	// ServerStatusBackingUp is a ServerStatus enum value
	ServerStatusBackingUp = "BACKING_UP"

	// ServerStatusConnectionLost is a ServerStatus enum value
	ServerStatusConnectionLost = "CONNECTION_LOST"

	// ServerStatusCreating is a ServerStatus enum value
	ServerStatusCreating = "CREATING"

	// ServerStatusDeleting is a ServerStatus enum value
	ServerStatusDeleting = "DELETING"

	// ServerStatusModifying is a ServerStatus enum value
	ServerStatusModifying = "MODIFYING"

	// ServerStatusFailed is a ServerStatus enum value
	ServerStatusFailed = "FAILED"

	// ServerStatusHealthy is a ServerStatus enum value
	ServerStatusHealthy = "HEALTHY"

	// ServerStatusRunning is a ServerStatus enum value
	ServerStatusRunning = "RUNNING"

	// ServerStatusRestoring is a ServerStatus enum value
	ServerStatusRestoring = "RESTORING"

	// ServerStatusSetup is a ServerStatus enum value
	ServerStatusSetup = "SETUP"

	// ServerStatusUnderMaintenance is a ServerStatus enum value
	ServerStatusUnderMaintenance = "UNDER_MAINTENANCE"

	// ServerStatusUnhealthy is a ServerStatus enum value
	ServerStatusUnhealthy = "UNHEALTHY"

	// ServerStatusTerminated is a ServerStatus enum value
	ServerStatusTerminated = "TERMINATED"
)
