/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include  Represents the input of a CreateDeployment
   * operation.See Also:
   AWS
   * API Reference
The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline const Aws::String& GetApplicationName() const{ return m_applicationName; } /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline bool ApplicationNameHasBeenSet() const { return m_applicationNameHasBeenSet; } /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline void SetApplicationName(const Aws::String& value) { m_applicationNameHasBeenSet = true; m_applicationName = value; } /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline void SetApplicationName(Aws::String&& value) { m_applicationNameHasBeenSet = true; m_applicationName = std::move(value); } /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline void SetApplicationName(const char* value) { m_applicationNameHasBeenSet = true; m_applicationName.assign(value); } /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline CreateDeploymentRequest& WithApplicationName(const Aws::String& value) { SetApplicationName(value); return *this;} /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline CreateDeploymentRequest& WithApplicationName(Aws::String&& value) { SetApplicationName(std::move(value)); return *this;} /** *The name of an CodeDeploy application associated with the IAM user or Amazon * Web Services account.
*/ inline CreateDeploymentRequest& WithApplicationName(const char* value) { SetApplicationName(value); return *this;} /** *The name of the deployment group.
*/ inline const Aws::String& GetDeploymentGroupName() const{ return m_deploymentGroupName; } /** *The name of the deployment group.
*/ inline bool DeploymentGroupNameHasBeenSet() const { return m_deploymentGroupNameHasBeenSet; } /** *The name of the deployment group.
*/ inline void SetDeploymentGroupName(const Aws::String& value) { m_deploymentGroupNameHasBeenSet = true; m_deploymentGroupName = value; } /** *The name of the deployment group.
*/ inline void SetDeploymentGroupName(Aws::String&& value) { m_deploymentGroupNameHasBeenSet = true; m_deploymentGroupName = std::move(value); } /** *The name of the deployment group.
*/ inline void SetDeploymentGroupName(const char* value) { m_deploymentGroupNameHasBeenSet = true; m_deploymentGroupName.assign(value); } /** *The name of the deployment group.
*/ inline CreateDeploymentRequest& WithDeploymentGroupName(const Aws::String& value) { SetDeploymentGroupName(value); return *this;} /** *The name of the deployment group.
*/ inline CreateDeploymentRequest& WithDeploymentGroupName(Aws::String&& value) { SetDeploymentGroupName(std::move(value)); return *this;} /** *The name of the deployment group.
*/ inline CreateDeploymentRequest& WithDeploymentGroupName(const char* value) { SetDeploymentGroupName(value); return *this;} /** *The type and location of the revision to deploy.
*/ inline const RevisionLocation& GetRevision() const{ return m_revision; } /** *The type and location of the revision to deploy.
*/ inline bool RevisionHasBeenSet() const { return m_revisionHasBeenSet; } /** *The type and location of the revision to deploy.
*/ inline void SetRevision(const RevisionLocation& value) { m_revisionHasBeenSet = true; m_revision = value; } /** *The type and location of the revision to deploy.
*/ inline void SetRevision(RevisionLocation&& value) { m_revisionHasBeenSet = true; m_revision = std::move(value); } /** *The type and location of the revision to deploy.
*/ inline CreateDeploymentRequest& WithRevision(const RevisionLocation& value) { SetRevision(value); return *this;} /** *The type and location of the revision to deploy.
*/ inline CreateDeploymentRequest& WithRevision(RevisionLocation&& value) { SetRevision(std::move(value)); return *this;} /** *The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
The name of a deployment configuration associated with the IAM user or Amazon * Web Services account.
If not specified, the value configured in the
     * deployment group is used as the default. If the deployment group does not have a
     * deployment configuration associated with it,
     * CodeDeployDefault.OneAtATime is used by default.
A comment about the deployment.
*/ inline const Aws::String& GetDescription() const{ return m_description; } /** *A comment about the deployment.
*/ inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; } /** *A comment about the deployment.
*/ inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; } /** *A comment about the deployment.
*/ inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); } /** *A comment about the deployment.
*/ inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); } /** *A comment about the deployment.
*/ inline CreateDeploymentRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} /** *A comment about the deployment.
*/ inline CreateDeploymentRequest& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;} /** *A comment about the deployment.
*/ inline CreateDeploymentRequest& WithDescription(const char* value) { SetDescription(value); return *this;} /** * If true, then if an ApplicationStop,
     * BeforeBlockTraffic, or AfterBlockTraffic deployment
     * lifecycle event to an instance fails, then the deployment continues to the next
     * deployment lifecycle event. For example, if ApplicationStop fails,
     * the deployment continues with DownloadBundle. If
     * BeforeBlockTraffic fails, the deployment continues with
     * BlockTraffic. If AfterBlockTraffic fails, the
     * deployment continues with ApplicationStop. 
If false or not * specified, then if a lifecycle event fails during a deployment to an instance, * that deployment fails. If deployment to that instance is part of an overall * deployment and the number of healthy hosts is not less than the minimum number * of healthy hosts, then a deployment to the next instance is attempted.
     * During a deployment, the CodeDeploy agent runs the scripts specified for
     * ApplicationStop, BeforeBlockTraffic, and
     * AfterBlockTraffic in the AppSpec file from the previous successful
     * deployment. (All other scripts are run from the AppSpec file in the current
     * deployment.) If one of these scripts contains an error and does not run
     * successfully, the deployment can fail. 
 If the cause of the failure is a
     * script from the last successful deployment that will never run successfully,
     * create a new deployment and use ignoreApplicationStopFailures to
     * specify that the ApplicationStop, BeforeBlockTraffic,
     * and AfterBlockTraffic failures should be ignored. 
 If true, then if an ApplicationStop,
     * BeforeBlockTraffic, or AfterBlockTraffic deployment
     * lifecycle event to an instance fails, then the deployment continues to the next
     * deployment lifecycle event. For example, if ApplicationStop fails,
     * the deployment continues with DownloadBundle. If
     * BeforeBlockTraffic fails, the deployment continues with
     * BlockTraffic. If AfterBlockTraffic fails, the
     * deployment continues with ApplicationStop. 
If false or not * specified, then if a lifecycle event fails during a deployment to an instance, * that deployment fails. If deployment to that instance is part of an overall * deployment and the number of healthy hosts is not less than the minimum number * of healthy hosts, then a deployment to the next instance is attempted.
     * During a deployment, the CodeDeploy agent runs the scripts specified for
     * ApplicationStop, BeforeBlockTraffic, and
     * AfterBlockTraffic in the AppSpec file from the previous successful
     * deployment. (All other scripts are run from the AppSpec file in the current
     * deployment.) If one of these scripts contains an error and does not run
     * successfully, the deployment can fail. 
 If the cause of the failure is a
     * script from the last successful deployment that will never run successfully,
     * create a new deployment and use ignoreApplicationStopFailures to
     * specify that the ApplicationStop, BeforeBlockTraffic,
     * and AfterBlockTraffic failures should be ignored. 
 If true, then if an ApplicationStop,
     * BeforeBlockTraffic, or AfterBlockTraffic deployment
     * lifecycle event to an instance fails, then the deployment continues to the next
     * deployment lifecycle event. For example, if ApplicationStop fails,
     * the deployment continues with DownloadBundle. If
     * BeforeBlockTraffic fails, the deployment continues with
     * BlockTraffic. If AfterBlockTraffic fails, the
     * deployment continues with ApplicationStop. 
If false or not * specified, then if a lifecycle event fails during a deployment to an instance, * that deployment fails. If deployment to that instance is part of an overall * deployment and the number of healthy hosts is not less than the minimum number * of healthy hosts, then a deployment to the next instance is attempted.
     * During a deployment, the CodeDeploy agent runs the scripts specified for
     * ApplicationStop, BeforeBlockTraffic, and
     * AfterBlockTraffic in the AppSpec file from the previous successful
     * deployment. (All other scripts are run from the AppSpec file in the current
     * deployment.) If one of these scripts contains an error and does not run
     * successfully, the deployment can fail. 
 If the cause of the failure is a
     * script from the last successful deployment that will never run successfully,
     * create a new deployment and use ignoreApplicationStopFailures to
     * specify that the ApplicationStop, BeforeBlockTraffic,
     * and AfterBlockTraffic failures should be ignored. 
 If true, then if an ApplicationStop,
     * BeforeBlockTraffic, or AfterBlockTraffic deployment
     * lifecycle event to an instance fails, then the deployment continues to the next
     * deployment lifecycle event. For example, if ApplicationStop fails,
     * the deployment continues with DownloadBundle. If
     * BeforeBlockTraffic fails, the deployment continues with
     * BlockTraffic. If AfterBlockTraffic fails, the
     * deployment continues with ApplicationStop. 
If false or not * specified, then if a lifecycle event fails during a deployment to an instance, * that deployment fails. If deployment to that instance is part of an overall * deployment and the number of healthy hosts is not less than the minimum number * of healthy hosts, then a deployment to the next instance is attempted.
     * During a deployment, the CodeDeploy agent runs the scripts specified for
     * ApplicationStop, BeforeBlockTraffic, and
     * AfterBlockTraffic in the AppSpec file from the previous successful
     * deployment. (All other scripts are run from the AppSpec file in the current
     * deployment.) If one of these scripts contains an error and does not run
     * successfully, the deployment can fail. 
 If the cause of the failure is a
     * script from the last successful deployment that will never run successfully,
     * create a new deployment and use ignoreApplicationStopFailures to
     * specify that the ApplicationStop, BeforeBlockTraffic,
     * and AfterBlockTraffic failures should be ignored. 
Information about the instances that belong to the replacement environment * in a blue/green deployment.
*/ inline const TargetInstances& GetTargetInstances() const{ return m_targetInstances; } /** *Information about the instances that belong to the replacement environment * in a blue/green deployment.
*/ inline bool TargetInstancesHasBeenSet() const { return m_targetInstancesHasBeenSet; } /** *Information about the instances that belong to the replacement environment * in a blue/green deployment.
*/ inline void SetTargetInstances(const TargetInstances& value) { m_targetInstancesHasBeenSet = true; m_targetInstances = value; } /** *Information about the instances that belong to the replacement environment * in a blue/green deployment.
*/ inline void SetTargetInstances(TargetInstances&& value) { m_targetInstancesHasBeenSet = true; m_targetInstances = std::move(value); } /** *Information about the instances that belong to the replacement environment * in a blue/green deployment.
*/ inline CreateDeploymentRequest& WithTargetInstances(const TargetInstances& value) { SetTargetInstances(value); return *this;} /** *Information about the instances that belong to the replacement environment * in a blue/green deployment.
*/ inline CreateDeploymentRequest& WithTargetInstances(TargetInstances&& value) { SetTargetInstances(std::move(value)); return *this;} /** *Configuration information for an automatic rollback that is added when a * deployment is created.
*/ inline const AutoRollbackConfiguration& GetAutoRollbackConfiguration() const{ return m_autoRollbackConfiguration; } /** *Configuration information for an automatic rollback that is added when a * deployment is created.
*/ inline bool AutoRollbackConfigurationHasBeenSet() const { return m_autoRollbackConfigurationHasBeenSet; } /** *Configuration information for an automatic rollback that is added when a * deployment is created.
*/ inline void SetAutoRollbackConfiguration(const AutoRollbackConfiguration& value) { m_autoRollbackConfigurationHasBeenSet = true; m_autoRollbackConfiguration = value; } /** *Configuration information for an automatic rollback that is added when a * deployment is created.
*/ inline void SetAutoRollbackConfiguration(AutoRollbackConfiguration&& value) { m_autoRollbackConfigurationHasBeenSet = true; m_autoRollbackConfiguration = std::move(value); } /** *Configuration information for an automatic rollback that is added when a * deployment is created.
*/ inline CreateDeploymentRequest& WithAutoRollbackConfiguration(const AutoRollbackConfiguration& value) { SetAutoRollbackConfiguration(value); return *this;} /** *Configuration information for an automatic rollback that is added when a * deployment is created.
*/ inline CreateDeploymentRequest& WithAutoRollbackConfiguration(AutoRollbackConfiguration&& value) { SetAutoRollbackConfiguration(std::move(value)); return *this;} /** *Indicates whether to deploy to all instances or only to instances that are * not running the latest application revision.
*/ inline bool GetUpdateOutdatedInstancesOnly() const{ return m_updateOutdatedInstancesOnly; } /** *Indicates whether to deploy to all instances or only to instances that are * not running the latest application revision.
*/ inline bool UpdateOutdatedInstancesOnlyHasBeenSet() const { return m_updateOutdatedInstancesOnlyHasBeenSet; } /** *Indicates whether to deploy to all instances or only to instances that are * not running the latest application revision.
*/ inline void SetUpdateOutdatedInstancesOnly(bool value) { m_updateOutdatedInstancesOnlyHasBeenSet = true; m_updateOutdatedInstancesOnly = value; } /** *Indicates whether to deploy to all instances or only to instances that are * not running the latest application revision.
*/ inline CreateDeploymentRequest& WithUpdateOutdatedInstancesOnly(bool value) { SetUpdateOutdatedInstancesOnly(value); return *this;} /** *Information about how CodeDeploy handles files that already exist in a * deployment target location but weren't part of the previous successful * deployment.
The fileExistsBehavior parameter takes any of
     * the following values:
DISALLOW: The deployment fails. This is * also the default behavior if no option is specified.
OVERWRITE: The version of the file from the application revision currently * being deployed replaces the version already on the instance.
RETAIN: The version of the file already on the instance is kept and used as * part of the new deployment.
Information about how CodeDeploy handles files that already exist in a * deployment target location but weren't part of the previous successful * deployment.
The fileExistsBehavior parameter takes any of
     * the following values:
DISALLOW: The deployment fails. This is * also the default behavior if no option is specified.
OVERWRITE: The version of the file from the application revision currently * being deployed replaces the version already on the instance.
RETAIN: The version of the file already on the instance is kept and used as * part of the new deployment.
Information about how CodeDeploy handles files that already exist in a * deployment target location but weren't part of the previous successful * deployment.
The fileExistsBehavior parameter takes any of
     * the following values:
DISALLOW: The deployment fails. This is * also the default behavior if no option is specified.
OVERWRITE: The version of the file from the application revision currently * being deployed replaces the version already on the instance.
RETAIN: The version of the file already on the instance is kept and used as * part of the new deployment.
Information about how CodeDeploy handles files that already exist in a * deployment target location but weren't part of the previous successful * deployment.
The fileExistsBehavior parameter takes any of
     * the following values:
DISALLOW: The deployment fails. This is * also the default behavior if no option is specified.
OVERWRITE: The version of the file from the application revision currently * being deployed replaces the version already on the instance.
RETAIN: The version of the file already on the instance is kept and used as * part of the new deployment.
Information about how CodeDeploy handles files that already exist in a * deployment target location but weren't part of the previous successful * deployment.
The fileExistsBehavior parameter takes any of
     * the following values:
DISALLOW: The deployment fails. This is * also the default behavior if no option is specified.
OVERWRITE: The version of the file from the application revision currently * being deployed replaces the version already on the instance.
RETAIN: The version of the file already on the instance is kept and used as * part of the new deployment.
Information about how CodeDeploy handles files that already exist in a * deployment target location but weren't part of the previous successful * deployment.
The fileExistsBehavior parameter takes any of
     * the following values:
DISALLOW: The deployment fails. This is * also the default behavior if no option is specified.
OVERWRITE: The version of the file from the application revision currently * being deployed replaces the version already on the instance.
RETAIN: The version of the file already on the instance is kept and used as * part of the new deployment.
Allows you to specify information about alarms associated with a deployment.
     * The alarm configuration that you specify here will override the alarm
     * configuration at the deployment group level. Consider overriding the alarm
     * configuration if you have set up alarms at the deployment group level that are
     * causing deployment failures. In this case, you would call
     * CreateDeployment to create a new deployment that uses a previous
     * application revision that is known to work, and set its alarm configuration to
     * turn off alarm polling. Turning off alarm polling ensures that the new
     * deployment proceeds without being blocked by the alarm that was generated by the
     * previous, failed, deployment.
If you specify an
     * overrideAlarmConfiguration, you need the
     * UpdateDeploymentGroup IAM permission when calling
     * CreateDeployment.
Allows you to specify information about alarms associated with a deployment.
     * The alarm configuration that you specify here will override the alarm
     * configuration at the deployment group level. Consider overriding the alarm
     * configuration if you have set up alarms at the deployment group level that are
     * causing deployment failures. In this case, you would call
     * CreateDeployment to create a new deployment that uses a previous
     * application revision that is known to work, and set its alarm configuration to
     * turn off alarm polling. Turning off alarm polling ensures that the new
     * deployment proceeds without being blocked by the alarm that was generated by the
     * previous, failed, deployment.
If you specify an
     * overrideAlarmConfiguration, you need the
     * UpdateDeploymentGroup IAM permission when calling
     * CreateDeployment.
Allows you to specify information about alarms associated with a deployment.
     * The alarm configuration that you specify here will override the alarm
     * configuration at the deployment group level. Consider overriding the alarm
     * configuration if you have set up alarms at the deployment group level that are
     * causing deployment failures. In this case, you would call
     * CreateDeployment to create a new deployment that uses a previous
     * application revision that is known to work, and set its alarm configuration to
     * turn off alarm polling. Turning off alarm polling ensures that the new
     * deployment proceeds without being blocked by the alarm that was generated by the
     * previous, failed, deployment.
If you specify an
     * overrideAlarmConfiguration, you need the
     * UpdateDeploymentGroup IAM permission when calling
     * CreateDeployment.
Allows you to specify information about alarms associated with a deployment.
     * The alarm configuration that you specify here will override the alarm
     * configuration at the deployment group level. Consider overriding the alarm
     * configuration if you have set up alarms at the deployment group level that are
     * causing deployment failures. In this case, you would call
     * CreateDeployment to create a new deployment that uses a previous
     * application revision that is known to work, and set its alarm configuration to
     * turn off alarm polling. Turning off alarm polling ensures that the new
     * deployment proceeds without being blocked by the alarm that was generated by the
     * previous, failed, deployment.
If you specify an
     * overrideAlarmConfiguration, you need the
     * UpdateDeploymentGroup IAM permission when calling
     * CreateDeployment.
Allows you to specify information about alarms associated with a deployment.
     * The alarm configuration that you specify here will override the alarm
     * configuration at the deployment group level. Consider overriding the alarm
     * configuration if you have set up alarms at the deployment group level that are
     * causing deployment failures. In this case, you would call
     * CreateDeployment to create a new deployment that uses a previous
     * application revision that is known to work, and set its alarm configuration to
     * turn off alarm polling. Turning off alarm polling ensures that the new
     * deployment proceeds without being blocked by the alarm that was generated by the
     * previous, failed, deployment.
If you specify an
     * overrideAlarmConfiguration, you need the
     * UpdateDeploymentGroup IAM permission when calling
     * CreateDeployment.
Allows you to specify information about alarms associated with a deployment.
     * The alarm configuration that you specify here will override the alarm
     * configuration at the deployment group level. Consider overriding the alarm
     * configuration if you have set up alarms at the deployment group level that are
     * causing deployment failures. In this case, you would call
     * CreateDeployment to create a new deployment that uses a previous
     * application revision that is known to work, and set its alarm configuration to
     * turn off alarm polling. Turning off alarm polling ensures that the new
     * deployment proceeds without being blocked by the alarm that was generated by the
     * previous, failed, deployment.
If you specify an
     * overrideAlarmConfiguration, you need the
     * UpdateDeploymentGroup IAM permission when calling
     * CreateDeployment.