All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.codedeploy.CfnDeploymentGroupProps.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.codedeploy

import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Properties for defining a `CfnDeploymentGroup`.
 *
 * Example:
 *
 * ```
 * // The code below shows an example of how to instantiate this type.
 * // The values are placeholders you should change.
 * import io.cloudshiftdev.awscdk.services.codedeploy.*;
 * CfnDeploymentGroupProps cfnDeploymentGroupProps = CfnDeploymentGroupProps.builder()
 * .applicationName("applicationName")
 * .serviceRoleArn("serviceRoleArn")
 * // the properties below are optional
 * .alarmConfiguration(AlarmConfigurationProperty.builder()
 * .alarms(List.of(AlarmProperty.builder()
 * .name("name")
 * .build()))
 * .enabled(false)
 * .ignorePollAlarmFailure(false)
 * .build())
 * .autoRollbackConfiguration(AutoRollbackConfigurationProperty.builder()
 * .enabled(false)
 * .events(List.of("events"))
 * .build())
 * .autoScalingGroups(List.of("autoScalingGroups"))
 * .blueGreenDeploymentConfiguration(BlueGreenDeploymentConfigurationProperty.builder()
 * .deploymentReadyOption(DeploymentReadyOptionProperty.builder()
 * .actionOnTimeout("actionOnTimeout")
 * .waitTimeInMinutes(123)
 * .build())
 * .greenFleetProvisioningOption(GreenFleetProvisioningOptionProperty.builder()
 * .action("action")
 * .build())
 * .terminateBlueInstancesOnDeploymentSuccess(BlueInstanceTerminationOptionProperty.builder()
 * .action("action")
 * .terminationWaitTimeInMinutes(123)
 * .build())
 * .build())
 * .deployment(DeploymentProperty.builder()
 * .revision(RevisionLocationProperty.builder()
 * .gitHubLocation(GitHubLocationProperty.builder()
 * .commitId("commitId")
 * .repository("repository")
 * .build())
 * .revisionType("revisionType")
 * .s3Location(S3LocationProperty.builder()
 * .bucket("bucket")
 * .key("key")
 * // the properties below are optional
 * .bundleType("bundleType")
 * .eTag("eTag")
 * .version("version")
 * .build())
 * .build())
 * // the properties below are optional
 * .description("description")
 * .ignoreApplicationStopFailures(false)
 * .build())
 * .deploymentConfigName("deploymentConfigName")
 * .deploymentGroupName("deploymentGroupName")
 * .deploymentStyle(DeploymentStyleProperty.builder()
 * .deploymentOption("deploymentOption")
 * .deploymentType("deploymentType")
 * .build())
 * .ec2TagFilters(List.of(EC2TagFilterProperty.builder()
 * .key("key")
 * .type("type")
 * .value("value")
 * .build()))
 * .ec2TagSet(EC2TagSetProperty.builder()
 * .ec2TagSetList(List.of(EC2TagSetListObjectProperty.builder()
 * .ec2TagGroup(List.of(EC2TagFilterProperty.builder()
 * .key("key")
 * .type("type")
 * .value("value")
 * .build()))
 * .build()))
 * .build())
 * .ecsServices(List.of(ECSServiceProperty.builder()
 * .clusterName("clusterName")
 * .serviceName("serviceName")
 * .build()))
 * .loadBalancerInfo(LoadBalancerInfoProperty.builder()
 * .elbInfoList(List.of(ELBInfoProperty.builder()
 * .name("name")
 * .build()))
 * .targetGroupInfoList(List.of(TargetGroupInfoProperty.builder()
 * .name("name")
 * .build()))
 * .targetGroupPairInfoList(List.of(TargetGroupPairInfoProperty.builder()
 * .prodTrafficRoute(TrafficRouteProperty.builder()
 * .listenerArns(List.of("listenerArns"))
 * .build())
 * .targetGroups(List.of(TargetGroupInfoProperty.builder()
 * .name("name")
 * .build()))
 * .testTrafficRoute(TrafficRouteProperty.builder()
 * .listenerArns(List.of("listenerArns"))
 * .build())
 * .build()))
 * .build())
 * .onPremisesInstanceTagFilters(List.of(TagFilterProperty.builder()
 * .key("key")
 * .type("type")
 * .value("value")
 * .build()))
 * .onPremisesTagSet(OnPremisesTagSetProperty.builder()
 * .onPremisesTagSetList(List.of(OnPremisesTagSetListObjectProperty.builder()
 * .onPremisesTagGroup(List.of(TagFilterProperty.builder()
 * .key("key")
 * .type("type")
 * .value("value")
 * .build()))
 * .build()))
 * .build())
 * .outdatedInstancesStrategy("outdatedInstancesStrategy")
 * .tags(List.of(CfnTag.builder()
 * .key("key")
 * .value("value")
 * .build()))
 * .terminationHookEnabled(false)
 * .triggerConfigurations(List.of(TriggerConfigProperty.builder()
 * .triggerEvents(List.of("triggerEvents"))
 * .triggerName("triggerName")
 * .triggerTargetArn("triggerTargetArn")
 * .build()))
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html)
 */
public interface CfnDeploymentGroupProps {
  /**
   * Information about the Amazon CloudWatch alarms that are associated with the deployment group.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-alarmconfiguration)
   */
  public fun alarmConfiguration(): Any? = unwrap(this).getAlarmConfiguration()

  /**
   * The name of an existing CodeDeploy application to associate this deployment group with.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-applicationname)
   */
  public fun applicationName(): String

  /**
   * Information about the automatic rollback configuration that is associated with the deployment
   * group.
   *
   * If you specify this property, don't specify the `Deployment` property.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration)
   */
  public fun autoRollbackConfiguration(): Any? = unwrap(this).getAutoRollbackConfiguration()

  /**
   * A list of associated Auto Scaling groups that CodeDeploy automatically deploys revisions to
   * when new instances are created.
   *
   * Duplicates are not allowed.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autoscalinggroups)
   */
  public fun autoScalingGroups(): List = unwrap(this).getAutoScalingGroups() ?: emptyList()

  /**
   * Information about blue/green deployment options for a deployment group.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration)
   */
  public fun blueGreenDeploymentConfiguration(): Any? =
      unwrap(this).getBlueGreenDeploymentConfiguration()

  /**
   * The application revision to deploy to this deployment group.
   *
   * If you specify this property, your target application revision is deployed as soon as the
   * provisioning process is complete. If you specify this property, don't specify the
   * `AutoRollbackConfiguration` property.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deployment)
   */
  public fun deployment(): Any? = unwrap(this).getDeployment()

  /**
   * A deployment configuration name or a predefined configuration name.
   *
   * With predefined configurations, you can deploy application revisions to one instance at a time
   * ( `CodeDeployDefault.OneAtATime` ), half of the instances at a time (
   * `CodeDeployDefault.HalfAtATime` ), or all the instances at once ( `CodeDeployDefault.AllAtOnce` ).
   * For more information and valid values, see [Working with Deployment
   * Configurations](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)
   * in the *AWS CodeDeploy User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentconfigname)
   */
  public fun deploymentConfigName(): String? = unwrap(this).getDeploymentConfigName()

  /**
   * A name for the deployment group.
   *
   * If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID
   * for the deployment group name. For more information, see [Name
   * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
   *
   *
   * If you specify a name, you cannot perform updates that require replacement of this resource.
   * You can perform updates that require no or some interruption. If you must replace the resource,
   * specify a new name.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentgroupname)
   */
  public fun deploymentGroupName(): String? = unwrap(this).getDeploymentGroupName()

  /**
   * Attributes that determine the type of deployment to run and whether to route deployment traffic
   * behind a load balancer.
   *
   * If you specify this property with a blue/green deployment type, don't specify the
   * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
   *
   *
   * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute platforms
   * only. You can perform Amazon ECS blue/green deployments using `AWS::CodeDeploy::BlueGreen` hook.
   * See [Perform Amazon ECS blue/green deployments through CodeDeploy using AWS
   * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
   * for more information.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentstyle)
   */
  public fun deploymentStyle(): Any? = unwrap(this).getDeploymentStyle()

  /**
   * The Amazon EC2 tags that are already applied to Amazon EC2 instances that you want to include
   * in the deployment group.
   *
   * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in this
   * deployment group. Duplicates are not allowed.
   *
   * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagfilters)
   */
  public fun ec2TagFilters(): Any? = unwrap(this).getEc2TagFilters()

  /**
   * Information about groups of tags applied to Amazon EC2 instances.
   *
   * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
   * Cannot be used in the same call as `ec2TagFilter` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagset)
   */
  public fun ec2TagSet(): Any? = unwrap(this).getEc2TagSet()

  /**
   * The target Amazon ECS services in the deployment group.
   *
   * This applies only to deployment groups that use the Amazon ECS compute platform. A target
   * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
   * `<clustername>:<servicename>` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ecsservices)
   */
  public fun ecsServices(): Any? = unwrap(this).getEcsServices()

  /**
   * Information about the load balancer to use in a deployment.
   *
   * For more information, see [Integrating CodeDeploy with Elastic Load
   * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
   * in the *AWS CodeDeploy User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo)
   */
  public fun loadBalancerInfo(): Any? = unwrap(this).getLoadBalancerInfo()

  /**
   * The on-premises instance tags already applied to on-premises instances that you want to include
   * in the deployment group.
   *
   * CodeDeploy includes all on-premises instances identified by any of the tags you specify in this
   * deployment group. To register on-premises instances with CodeDeploy , see [Working with
   * On-Premises Instances for
   * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html) in
   * the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
   *
   * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisesinstancetagfilters)
   */
  public fun onPremisesInstanceTagFilters(): Any? = unwrap(this).getOnPremisesInstanceTagFilters()

  /**
   * Information about groups of tags applied to on-premises instances.
   *
   * The deployment group includes only on-premises instances identified by all the tag groups.
   *
   * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisestagset)
   */
  public fun onPremisesTagSet(): Any? = unwrap(this).getOnPremisesTagSet()

  /**
   * Indicates what happens when new Amazon EC2 instances are launched mid-deployment and do not
   * receive the deployed application revision.
   *
   * If this option is set to `UPDATE` or is unspecified, CodeDeploy initiates one or more
   * 'auto-update outdated instances' deployments to apply the deployed application revision to the new
   * Amazon EC2 instances.
   *
   * If this option is set to `IGNORE` , CodeDeploy does not initiate a deployment to update the new
   * Amazon EC2 instances. This may result in instances having different revisions.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-outdatedinstancesstrategy)
   */
  public fun outdatedInstancesStrategy(): String? = unwrap(this).getOutdatedInstancesStrategy()

  /**
   * A service role Amazon Resource Name (ARN) that grants CodeDeploy permission to make calls to
   * AWS services on your behalf.
   *
   * For more information, see [Create a Service Role for AWS
   * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html)
   * in the *AWS CodeDeploy User Guide* .
   *
   *
   * In some cases, you might need to add a dependency on the service role's policy. For more
   * information, see IAM role policy in [DependsOn
   * Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
   * .
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-servicerolearn)
   */
  public fun serviceRoleArn(): String

  /**
   * The metadata that you apply to CodeDeploy deployment groups to help you organize and categorize
   * them.
   *
   * Each tag consists of a key and an optional value, both of which you define.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-tags)
   */
  public fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * Indicates whether the deployment group was configured to have CodeDeploy install a termination
   * hook into an Auto Scaling group.
   *
   * For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with
   * CodeDeploy](https://docs.aws.amazon.com//codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors)
   * in the *AWS CodeDeploy User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-terminationhookenabled)
   */
  public fun terminationHookEnabled(): Any? = unwrap(this).getTerminationHookEnabled()

  /**
   * Information about triggers associated with the deployment group.
   *
   * Duplicates are not allowed
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-triggerconfigurations)
   */
  public fun triggerConfigurations(): Any? = unwrap(this).getTriggerConfigurations()

  /**
   * A builder for [CfnDeploymentGroupProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param alarmConfiguration Information about the Amazon CloudWatch alarms that are associated
     * with the deployment group.
     */
    public fun alarmConfiguration(alarmConfiguration: IResolvable)

    /**
     * @param alarmConfiguration Information about the Amazon CloudWatch alarms that are associated
     * with the deployment group.
     */
    public fun alarmConfiguration(alarmConfiguration: CfnDeploymentGroup.AlarmConfigurationProperty)

    /**
     * @param alarmConfiguration Information about the Amazon CloudWatch alarms that are associated
     * with the deployment group.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("752d17c273d96d68942144b914431bd2b74dd97401018429d6ed6da6c0c01ae4")
    public
        fun alarmConfiguration(alarmConfiguration: CfnDeploymentGroup.AlarmConfigurationProperty.Builder.() -> Unit)

    /**
     * @param applicationName The name of an existing CodeDeploy application to associate this
     * deployment group with. 
     */
    public fun applicationName(applicationName: String)

    /**
     * @param autoRollbackConfiguration Information about the automatic rollback configuration that
     * is associated with the deployment group.
     * If you specify this property, don't specify the `Deployment` property.
     */
    public fun autoRollbackConfiguration(autoRollbackConfiguration: IResolvable)

    /**
     * @param autoRollbackConfiguration Information about the automatic rollback configuration that
     * is associated with the deployment group.
     * If you specify this property, don't specify the `Deployment` property.
     */
    public
        fun autoRollbackConfiguration(autoRollbackConfiguration: CfnDeploymentGroup.AutoRollbackConfigurationProperty)

    /**
     * @param autoRollbackConfiguration Information about the automatic rollback configuration that
     * is associated with the deployment group.
     * If you specify this property, don't specify the `Deployment` property.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("bd617bf78494360209f8489c9ebc34e864a5519f551d825d84e1eb9b6e4646fd")
    public
        fun autoRollbackConfiguration(autoRollbackConfiguration: CfnDeploymentGroup.AutoRollbackConfigurationProperty.Builder.() -> Unit)

    /**
     * @param autoScalingGroups A list of associated Auto Scaling groups that CodeDeploy
     * automatically deploys revisions to when new instances are created.
     * Duplicates are not allowed.
     */
    public fun autoScalingGroups(autoScalingGroups: List)

    /**
     * @param autoScalingGroups A list of associated Auto Scaling groups that CodeDeploy
     * automatically deploys revisions to when new instances are created.
     * Duplicates are not allowed.
     */
    public fun autoScalingGroups(vararg autoScalingGroups: String)

    /**
     * @param blueGreenDeploymentConfiguration Information about blue/green deployment options for a
     * deployment group.
     */
    public fun blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration: IResolvable)

    /**
     * @param blueGreenDeploymentConfiguration Information about blue/green deployment options for a
     * deployment group.
     */
    public
        fun blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration: CfnDeploymentGroup.BlueGreenDeploymentConfigurationProperty)

    /**
     * @param blueGreenDeploymentConfiguration Information about blue/green deployment options for a
     * deployment group.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("15ff9a3dd1ca2e8fcbcbab64638e71692e578f15ddc73f49bb67094de6ecb43e")
    public
        fun blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration: CfnDeploymentGroup.BlueGreenDeploymentConfigurationProperty.Builder.() -> Unit)

    /**
     * @param deployment The application revision to deploy to this deployment group.
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     */
    public fun deployment(deployment: IResolvable)

    /**
     * @param deployment The application revision to deploy to this deployment group.
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     */
    public fun deployment(deployment: CfnDeploymentGroup.DeploymentProperty)

    /**
     * @param deployment The application revision to deploy to this deployment group.
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7e8321a2c4159ce336711aaef4da1bc73c537604236c821b2dce109b860c8f08")
    public fun deployment(deployment: CfnDeploymentGroup.DeploymentProperty.Builder.() -> Unit)

    /**
     * @param deploymentConfigName A deployment configuration name or a predefined configuration
     * name.
     * With predefined configurations, you can deploy application revisions to one instance at a
     * time ( `CodeDeployDefault.OneAtATime` ), half of the instances at a time (
     * `CodeDeployDefault.HalfAtATime` ), or all the instances at once ( `CodeDeployDefault.AllAtOnce`
     * ). For more information and valid values, see [Working with Deployment
     * Configurations](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    public fun deploymentConfigName(deploymentConfigName: String)

    /**
     * @param deploymentGroupName A name for the deployment group.
     * If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that
     * ID for the deployment group name. For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     *
     * If you specify a name, you cannot perform updates that require replacement of this resource.
     * You can perform updates that require no or some interruption. If you must replace the resource,
     * specify a new name.
     */
    public fun deploymentGroupName(deploymentGroupName: String)

    /**
     * @param deploymentStyle Attributes that determine the type of deployment to run and whether to
     * route deployment traffic behind a load balancer.
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     */
    public fun deploymentStyle(deploymentStyle: IResolvable)

    /**
     * @param deploymentStyle Attributes that determine the type of deployment to run and whether to
     * route deployment traffic behind a load balancer.
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     */
    public fun deploymentStyle(deploymentStyle: CfnDeploymentGroup.DeploymentStyleProperty)

    /**
     * @param deploymentStyle Attributes that determine the type of deployment to run and whether to
     * route deployment traffic behind a load balancer.
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("45e2d0cd76ae805545f6ebae24c2a9649c6f4bb198d17d50683364022e9c4f3d")
    public
        fun deploymentStyle(deploymentStyle: CfnDeploymentGroup.DeploymentStyleProperty.Builder.() -> Unit)

    /**
     * @param ec2TagFilters The Amazon EC2 tags that are already applied to Amazon EC2 instances
     * that you want to include in the deployment group.
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     */
    public fun ec2TagFilters(ec2TagFilters: IResolvable)

    /**
     * @param ec2TagFilters The Amazon EC2 tags that are already applied to Amazon EC2 instances
     * that you want to include in the deployment group.
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     */
    public fun ec2TagFilters(ec2TagFilters: List)

    /**
     * @param ec2TagFilters The Amazon EC2 tags that are already applied to Amazon EC2 instances
     * that you want to include in the deployment group.
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     */
    public fun ec2TagFilters(vararg ec2TagFilters: Any)

    /**
     * @param ec2TagSet Information about groups of tags applied to Amazon EC2 instances.
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     */
    public fun ec2TagSet(ec2TagSet: IResolvable)

    /**
     * @param ec2TagSet Information about groups of tags applied to Amazon EC2 instances.
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     */
    public fun ec2TagSet(ec2TagSet: CfnDeploymentGroup.EC2TagSetProperty)

    /**
     * @param ec2TagSet Information about groups of tags applied to Amazon EC2 instances.
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("44b277633da03ac6243e849e9b71a04b3e5a52c1f6fb3d27ebf790c7c05cbd62")
    public fun ec2TagSet(ec2TagSet: CfnDeploymentGroup.EC2TagSetProperty.Builder.() -> Unit)

    /**
     * @param ecsServices The target Amazon ECS services in the deployment group.
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     */
    public fun ecsServices(ecsServices: IResolvable)

    /**
     * @param ecsServices The target Amazon ECS services in the deployment group.
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     */
    public fun ecsServices(ecsServices: List)

    /**
     * @param ecsServices The target Amazon ECS services in the deployment group.
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     */
    public fun ecsServices(vararg ecsServices: Any)

    /**
     * @param loadBalancerInfo Information about the load balancer to use in a deployment.
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    public fun loadBalancerInfo(loadBalancerInfo: IResolvable)

    /**
     * @param loadBalancerInfo Information about the load balancer to use in a deployment.
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    public fun loadBalancerInfo(loadBalancerInfo: CfnDeploymentGroup.LoadBalancerInfoProperty)

    /**
     * @param loadBalancerInfo Information about the load balancer to use in a deployment.
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("c5c8806b3ca93f50b993e4fed27e7905a070fa29c8a96f1491776d7de802a454")
    public
        fun loadBalancerInfo(loadBalancerInfo: CfnDeploymentGroup.LoadBalancerInfoProperty.Builder.() -> Unit)

    /**
     * @param onPremisesInstanceTagFilters The on-premises instance tags already applied to
     * on-premises instances that you want to include in the deployment group.
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    public fun onPremisesInstanceTagFilters(onPremisesInstanceTagFilters: IResolvable)

    /**
     * @param onPremisesInstanceTagFilters The on-premises instance tags already applied to
     * on-premises instances that you want to include in the deployment group.
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    public fun onPremisesInstanceTagFilters(onPremisesInstanceTagFilters: List)

    /**
     * @param onPremisesInstanceTagFilters The on-premises instance tags already applied to
     * on-premises instances that you want to include in the deployment group.
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    public fun onPremisesInstanceTagFilters(vararg onPremisesInstanceTagFilters: Any)

    /**
     * @param onPremisesTagSet Information about groups of tags applied to on-premises instances.
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    public fun onPremisesTagSet(onPremisesTagSet: IResolvable)

    /**
     * @param onPremisesTagSet Information about groups of tags applied to on-premises instances.
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    public fun onPremisesTagSet(onPremisesTagSet: CfnDeploymentGroup.OnPremisesTagSetProperty)

    /**
     * @param onPremisesTagSet Information about groups of tags applied to on-premises instances.
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("e4c19b76ece4da92c21c94bb36e73c9999b231fe247f659c8399e706e58e1e3a")
    public
        fun onPremisesTagSet(onPremisesTagSet: CfnDeploymentGroup.OnPremisesTagSetProperty.Builder.() -> Unit)

    /**
     * @param outdatedInstancesStrategy Indicates what happens when new Amazon EC2 instances are
     * launched mid-deployment and do not receive the deployed application revision.
     * If this option is set to `UPDATE` or is unspecified, CodeDeploy initiates one or more
     * 'auto-update outdated instances' deployments to apply the deployed application revision to the
     * new Amazon EC2 instances.
     *
     * If this option is set to `IGNORE` , CodeDeploy does not initiate a deployment to update the
     * new Amazon EC2 instances. This may result in instances having different revisions.
     */
    public fun outdatedInstancesStrategy(outdatedInstancesStrategy: String)

    /**
     * @param serviceRoleArn A service role Amazon Resource Name (ARN) that grants CodeDeploy
     * permission to make calls to AWS services on your behalf. 
     * For more information, see [Create a Service Role for AWS
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html)
     * in the *AWS CodeDeploy User Guide* .
     *
     *
     * In some cases, you might need to add a dependency on the service role's policy. For more
     * information, see IAM role policy in [DependsOn
     * Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
     * .
     */
    public fun serviceRoleArn(serviceRoleArn: String)

    /**
     * @param tags The metadata that you apply to CodeDeploy deployment groups to help you organize
     * and categorize them.
     * Each tag consists of a key and an optional value, both of which you define.
     */
    public fun tags(tags: List)

    /**
     * @param tags The metadata that you apply to CodeDeploy deployment groups to help you organize
     * and categorize them.
     * Each tag consists of a key and an optional value, both of which you define.
     */
    public fun tags(vararg tags: CfnTag)

    /**
     * @param terminationHookEnabled Indicates whether the deployment group was configured to have
     * CodeDeploy install a termination hook into an Auto Scaling group.
     * For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with
     * CodeDeploy](https://docs.aws.amazon.com//codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors)
     * in the *AWS CodeDeploy User Guide* .
     */
    public fun terminationHookEnabled(terminationHookEnabled: Boolean)

    /**
     * @param terminationHookEnabled Indicates whether the deployment group was configured to have
     * CodeDeploy install a termination hook into an Auto Scaling group.
     * For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with
     * CodeDeploy](https://docs.aws.amazon.com//codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors)
     * in the *AWS CodeDeploy User Guide* .
     */
    public fun terminationHookEnabled(terminationHookEnabled: IResolvable)

    /**
     * @param triggerConfigurations Information about triggers associated with the deployment group.
     * Duplicates are not allowed
     */
    public fun triggerConfigurations(triggerConfigurations: IResolvable)

    /**
     * @param triggerConfigurations Information about triggers associated with the deployment group.
     * Duplicates are not allowed
     */
    public fun triggerConfigurations(triggerConfigurations: List)

    /**
     * @param triggerConfigurations Information about triggers associated with the deployment group.
     * Duplicates are not allowed
     */
    public fun triggerConfigurations(vararg triggerConfigurations: Any)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder:
        software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps.Builder =
        software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps.builder()

    /**
     * @param alarmConfiguration Information about the Amazon CloudWatch alarms that are associated
     * with the deployment group.
     */
    override fun alarmConfiguration(alarmConfiguration: IResolvable) {
      cdkBuilder.alarmConfiguration(alarmConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param alarmConfiguration Information about the Amazon CloudWatch alarms that are associated
     * with the deployment group.
     */
    override
        fun alarmConfiguration(alarmConfiguration: CfnDeploymentGroup.AlarmConfigurationProperty) {
      cdkBuilder.alarmConfiguration(alarmConfiguration.let(CfnDeploymentGroup.AlarmConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param alarmConfiguration Information about the Amazon CloudWatch alarms that are associated
     * with the deployment group.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("752d17c273d96d68942144b914431bd2b74dd97401018429d6ed6da6c0c01ae4")
    override
        fun alarmConfiguration(alarmConfiguration: CfnDeploymentGroup.AlarmConfigurationProperty.Builder.() -> Unit):
        Unit = alarmConfiguration(CfnDeploymentGroup.AlarmConfigurationProperty(alarmConfiguration))

    /**
     * @param applicationName The name of an existing CodeDeploy application to associate this
     * deployment group with. 
     */
    override fun applicationName(applicationName: String) {
      cdkBuilder.applicationName(applicationName)
    }

    /**
     * @param autoRollbackConfiguration Information about the automatic rollback configuration that
     * is associated with the deployment group.
     * If you specify this property, don't specify the `Deployment` property.
     */
    override fun autoRollbackConfiguration(autoRollbackConfiguration: IResolvable) {
      cdkBuilder.autoRollbackConfiguration(autoRollbackConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param autoRollbackConfiguration Information about the automatic rollback configuration that
     * is associated with the deployment group.
     * If you specify this property, don't specify the `Deployment` property.
     */
    override
        fun autoRollbackConfiguration(autoRollbackConfiguration: CfnDeploymentGroup.AutoRollbackConfigurationProperty) {
      cdkBuilder.autoRollbackConfiguration(autoRollbackConfiguration.let(CfnDeploymentGroup.AutoRollbackConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param autoRollbackConfiguration Information about the automatic rollback configuration that
     * is associated with the deployment group.
     * If you specify this property, don't specify the `Deployment` property.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("bd617bf78494360209f8489c9ebc34e864a5519f551d825d84e1eb9b6e4646fd")
    override
        fun autoRollbackConfiguration(autoRollbackConfiguration: CfnDeploymentGroup.AutoRollbackConfigurationProperty.Builder.() -> Unit):
        Unit =
        autoRollbackConfiguration(CfnDeploymentGroup.AutoRollbackConfigurationProperty(autoRollbackConfiguration))

    /**
     * @param autoScalingGroups A list of associated Auto Scaling groups that CodeDeploy
     * automatically deploys revisions to when new instances are created.
     * Duplicates are not allowed.
     */
    override fun autoScalingGroups(autoScalingGroups: List) {
      cdkBuilder.autoScalingGroups(autoScalingGroups)
    }

    /**
     * @param autoScalingGroups A list of associated Auto Scaling groups that CodeDeploy
     * automatically deploys revisions to when new instances are created.
     * Duplicates are not allowed.
     */
    override fun autoScalingGroups(vararg autoScalingGroups: String): Unit =
        autoScalingGroups(autoScalingGroups.toList())

    /**
     * @param blueGreenDeploymentConfiguration Information about blue/green deployment options for a
     * deployment group.
     */
    override fun blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration: IResolvable) {
      cdkBuilder.blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param blueGreenDeploymentConfiguration Information about blue/green deployment options for a
     * deployment group.
     */
    override
        fun blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration: CfnDeploymentGroup.BlueGreenDeploymentConfigurationProperty) {
      cdkBuilder.blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration.let(CfnDeploymentGroup.BlueGreenDeploymentConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param blueGreenDeploymentConfiguration Information about blue/green deployment options for a
     * deployment group.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("15ff9a3dd1ca2e8fcbcbab64638e71692e578f15ddc73f49bb67094de6ecb43e")
    override
        fun blueGreenDeploymentConfiguration(blueGreenDeploymentConfiguration: CfnDeploymentGroup.BlueGreenDeploymentConfigurationProperty.Builder.() -> Unit):
        Unit =
        blueGreenDeploymentConfiguration(CfnDeploymentGroup.BlueGreenDeploymentConfigurationProperty(blueGreenDeploymentConfiguration))

    /**
     * @param deployment The application revision to deploy to this deployment group.
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     */
    override fun deployment(deployment: IResolvable) {
      cdkBuilder.deployment(deployment.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param deployment The application revision to deploy to this deployment group.
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     */
    override fun deployment(deployment: CfnDeploymentGroup.DeploymentProperty) {
      cdkBuilder.deployment(deployment.let(CfnDeploymentGroup.DeploymentProperty.Companion::unwrap))
    }

    /**
     * @param deployment The application revision to deploy to this deployment group.
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7e8321a2c4159ce336711aaef4da1bc73c537604236c821b2dce109b860c8f08")
    override fun deployment(deployment: CfnDeploymentGroup.DeploymentProperty.Builder.() -> Unit):
        Unit = deployment(CfnDeploymentGroup.DeploymentProperty(deployment))

    /**
     * @param deploymentConfigName A deployment configuration name or a predefined configuration
     * name.
     * With predefined configurations, you can deploy application revisions to one instance at a
     * time ( `CodeDeployDefault.OneAtATime` ), half of the instances at a time (
     * `CodeDeployDefault.HalfAtATime` ), or all the instances at once ( `CodeDeployDefault.AllAtOnce`
     * ). For more information and valid values, see [Working with Deployment
     * Configurations](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    override fun deploymentConfigName(deploymentConfigName: String) {
      cdkBuilder.deploymentConfigName(deploymentConfigName)
    }

    /**
     * @param deploymentGroupName A name for the deployment group.
     * If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that
     * ID for the deployment group name. For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     *
     * If you specify a name, you cannot perform updates that require replacement of this resource.
     * You can perform updates that require no or some interruption. If you must replace the resource,
     * specify a new name.
     */
    override fun deploymentGroupName(deploymentGroupName: String) {
      cdkBuilder.deploymentGroupName(deploymentGroupName)
    }

    /**
     * @param deploymentStyle Attributes that determine the type of deployment to run and whether to
     * route deployment traffic behind a load balancer.
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     */
    override fun deploymentStyle(deploymentStyle: IResolvable) {
      cdkBuilder.deploymentStyle(deploymentStyle.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param deploymentStyle Attributes that determine the type of deployment to run and whether to
     * route deployment traffic behind a load balancer.
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     */
    override fun deploymentStyle(deploymentStyle: CfnDeploymentGroup.DeploymentStyleProperty) {
      cdkBuilder.deploymentStyle(deploymentStyle.let(CfnDeploymentGroup.DeploymentStyleProperty.Companion::unwrap))
    }

    /**
     * @param deploymentStyle Attributes that determine the type of deployment to run and whether to
     * route deployment traffic behind a load balancer.
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("45e2d0cd76ae805545f6ebae24c2a9649c6f4bb198d17d50683364022e9c4f3d")
    override
        fun deploymentStyle(deploymentStyle: CfnDeploymentGroup.DeploymentStyleProperty.Builder.() -> Unit):
        Unit = deploymentStyle(CfnDeploymentGroup.DeploymentStyleProperty(deploymentStyle))

    /**
     * @param ec2TagFilters The Amazon EC2 tags that are already applied to Amazon EC2 instances
     * that you want to include in the deployment group.
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     */
    override fun ec2TagFilters(ec2TagFilters: IResolvable) {
      cdkBuilder.ec2TagFilters(ec2TagFilters.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param ec2TagFilters The Amazon EC2 tags that are already applied to Amazon EC2 instances
     * that you want to include in the deployment group.
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     */
    override fun ec2TagFilters(ec2TagFilters: List) {
      cdkBuilder.ec2TagFilters(ec2TagFilters.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param ec2TagFilters The Amazon EC2 tags that are already applied to Amazon EC2 instances
     * that you want to include in the deployment group.
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     */
    override fun ec2TagFilters(vararg ec2TagFilters: Any): Unit =
        ec2TagFilters(ec2TagFilters.toList())

    /**
     * @param ec2TagSet Information about groups of tags applied to Amazon EC2 instances.
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     */
    override fun ec2TagSet(ec2TagSet: IResolvable) {
      cdkBuilder.ec2TagSet(ec2TagSet.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param ec2TagSet Information about groups of tags applied to Amazon EC2 instances.
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     */
    override fun ec2TagSet(ec2TagSet: CfnDeploymentGroup.EC2TagSetProperty) {
      cdkBuilder.ec2TagSet(ec2TagSet.let(CfnDeploymentGroup.EC2TagSetProperty.Companion::unwrap))
    }

    /**
     * @param ec2TagSet Information about groups of tags applied to Amazon EC2 instances.
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("44b277633da03ac6243e849e9b71a04b3e5a52c1f6fb3d27ebf790c7c05cbd62")
    override fun ec2TagSet(ec2TagSet: CfnDeploymentGroup.EC2TagSetProperty.Builder.() -> Unit): Unit
        = ec2TagSet(CfnDeploymentGroup.EC2TagSetProperty(ec2TagSet))

    /**
     * @param ecsServices The target Amazon ECS services in the deployment group.
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     */
    override fun ecsServices(ecsServices: IResolvable) {
      cdkBuilder.ecsServices(ecsServices.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param ecsServices The target Amazon ECS services in the deployment group.
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     */
    override fun ecsServices(ecsServices: List) {
      cdkBuilder.ecsServices(ecsServices.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param ecsServices The target Amazon ECS services in the deployment group.
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     */
    override fun ecsServices(vararg ecsServices: Any): Unit = ecsServices(ecsServices.toList())

    /**
     * @param loadBalancerInfo Information about the load balancer to use in a deployment.
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    override fun loadBalancerInfo(loadBalancerInfo: IResolvable) {
      cdkBuilder.loadBalancerInfo(loadBalancerInfo.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param loadBalancerInfo Information about the load balancer to use in a deployment.
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    override fun loadBalancerInfo(loadBalancerInfo: CfnDeploymentGroup.LoadBalancerInfoProperty) {
      cdkBuilder.loadBalancerInfo(loadBalancerInfo.let(CfnDeploymentGroup.LoadBalancerInfoProperty.Companion::unwrap))
    }

    /**
     * @param loadBalancerInfo Information about the load balancer to use in a deployment.
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("c5c8806b3ca93f50b993e4fed27e7905a070fa29c8a96f1491776d7de802a454")
    override
        fun loadBalancerInfo(loadBalancerInfo: CfnDeploymentGroup.LoadBalancerInfoProperty.Builder.() -> Unit):
        Unit = loadBalancerInfo(CfnDeploymentGroup.LoadBalancerInfoProperty(loadBalancerInfo))

    /**
     * @param onPremisesInstanceTagFilters The on-premises instance tags already applied to
     * on-premises instances that you want to include in the deployment group.
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    override fun onPremisesInstanceTagFilters(onPremisesInstanceTagFilters: IResolvable) {
      cdkBuilder.onPremisesInstanceTagFilters(onPremisesInstanceTagFilters.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param onPremisesInstanceTagFilters The on-premises instance tags already applied to
     * on-premises instances that you want to include in the deployment group.
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    override fun onPremisesInstanceTagFilters(onPremisesInstanceTagFilters: List) {
      cdkBuilder.onPremisesInstanceTagFilters(onPremisesInstanceTagFilters.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param onPremisesInstanceTagFilters The on-premises instance tags already applied to
     * on-premises instances that you want to include in the deployment group.
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    override fun onPremisesInstanceTagFilters(vararg onPremisesInstanceTagFilters: Any): Unit =
        onPremisesInstanceTagFilters(onPremisesInstanceTagFilters.toList())

    /**
     * @param onPremisesTagSet Information about groups of tags applied to on-premises instances.
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    override fun onPremisesTagSet(onPremisesTagSet: IResolvable) {
      cdkBuilder.onPremisesTagSet(onPremisesTagSet.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param onPremisesTagSet Information about groups of tags applied to on-premises instances.
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    override fun onPremisesTagSet(onPremisesTagSet: CfnDeploymentGroup.OnPremisesTagSetProperty) {
      cdkBuilder.onPremisesTagSet(onPremisesTagSet.let(CfnDeploymentGroup.OnPremisesTagSetProperty.Companion::unwrap))
    }

    /**
     * @param onPremisesTagSet Information about groups of tags applied to on-premises instances.
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("e4c19b76ece4da92c21c94bb36e73c9999b231fe247f659c8399e706e58e1e3a")
    override
        fun onPremisesTagSet(onPremisesTagSet: CfnDeploymentGroup.OnPremisesTagSetProperty.Builder.() -> Unit):
        Unit = onPremisesTagSet(CfnDeploymentGroup.OnPremisesTagSetProperty(onPremisesTagSet))

    /**
     * @param outdatedInstancesStrategy Indicates what happens when new Amazon EC2 instances are
     * launched mid-deployment and do not receive the deployed application revision.
     * If this option is set to `UPDATE` or is unspecified, CodeDeploy initiates one or more
     * 'auto-update outdated instances' deployments to apply the deployed application revision to the
     * new Amazon EC2 instances.
     *
     * If this option is set to `IGNORE` , CodeDeploy does not initiate a deployment to update the
     * new Amazon EC2 instances. This may result in instances having different revisions.
     */
    override fun outdatedInstancesStrategy(outdatedInstancesStrategy: String) {
      cdkBuilder.outdatedInstancesStrategy(outdatedInstancesStrategy)
    }

    /**
     * @param serviceRoleArn A service role Amazon Resource Name (ARN) that grants CodeDeploy
     * permission to make calls to AWS services on your behalf. 
     * For more information, see [Create a Service Role for AWS
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html)
     * in the *AWS CodeDeploy User Guide* .
     *
     *
     * In some cases, you might need to add a dependency on the service role's policy. For more
     * information, see IAM role policy in [DependsOn
     * Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
     * .
     */
    override fun serviceRoleArn(serviceRoleArn: String) {
      cdkBuilder.serviceRoleArn(serviceRoleArn)
    }

    /**
     * @param tags The metadata that you apply to CodeDeploy deployment groups to help you organize
     * and categorize them.
     * Each tag consists of a key and an optional value, both of which you define.
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * @param tags The metadata that you apply to CodeDeploy deployment groups to help you organize
     * and categorize them.
     * Each tag consists of a key and an optional value, both of which you define.
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    /**
     * @param terminationHookEnabled Indicates whether the deployment group was configured to have
     * CodeDeploy install a termination hook into an Auto Scaling group.
     * For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with
     * CodeDeploy](https://docs.aws.amazon.com//codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors)
     * in the *AWS CodeDeploy User Guide* .
     */
    override fun terminationHookEnabled(terminationHookEnabled: Boolean) {
      cdkBuilder.terminationHookEnabled(terminationHookEnabled)
    }

    /**
     * @param terminationHookEnabled Indicates whether the deployment group was configured to have
     * CodeDeploy install a termination hook into an Auto Scaling group.
     * For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with
     * CodeDeploy](https://docs.aws.amazon.com//codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors)
     * in the *AWS CodeDeploy User Guide* .
     */
    override fun terminationHookEnabled(terminationHookEnabled: IResolvable) {
      cdkBuilder.terminationHookEnabled(terminationHookEnabled.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param triggerConfigurations Information about triggers associated with the deployment group.
     * Duplicates are not allowed
     */
    override fun triggerConfigurations(triggerConfigurations: IResolvable) {
      cdkBuilder.triggerConfigurations(triggerConfigurations.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param triggerConfigurations Information about triggers associated with the deployment group.
     * Duplicates are not allowed
     */
    override fun triggerConfigurations(triggerConfigurations: List) {
      cdkBuilder.triggerConfigurations(triggerConfigurations.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param triggerConfigurations Information about triggers associated with the deployment group.
     * Duplicates are not allowed
     */
    override fun triggerConfigurations(vararg triggerConfigurations: Any): Unit =
        triggerConfigurations(triggerConfigurations.toList())

    public fun build(): software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps =
        cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps,
  ) : CdkObject(cdkObject),
      CfnDeploymentGroupProps {
    /**
     * Information about the Amazon CloudWatch alarms that are associated with the deployment group.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-alarmconfiguration)
     */
    override fun alarmConfiguration(): Any? = unwrap(this).getAlarmConfiguration()

    /**
     * The name of an existing CodeDeploy application to associate this deployment group with.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-applicationname)
     */
    override fun applicationName(): String = unwrap(this).getApplicationName()

    /**
     * Information about the automatic rollback configuration that is associated with the deployment
     * group.
     *
     * If you specify this property, don't specify the `Deployment` property.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration)
     */
    override fun autoRollbackConfiguration(): Any? = unwrap(this).getAutoRollbackConfiguration()

    /**
     * A list of associated Auto Scaling groups that CodeDeploy automatically deploys revisions to
     * when new instances are created.
     *
     * Duplicates are not allowed.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autoscalinggroups)
     */
    override fun autoScalingGroups(): List = unwrap(this).getAutoScalingGroups() ?:
        emptyList()

    /**
     * Information about blue/green deployment options for a deployment group.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration)
     */
    override fun blueGreenDeploymentConfiguration(): Any? =
        unwrap(this).getBlueGreenDeploymentConfiguration()

    /**
     * The application revision to deploy to this deployment group.
     *
     * If you specify this property, your target application revision is deployed as soon as the
     * provisioning process is complete. If you specify this property, don't specify the
     * `AutoRollbackConfiguration` property.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deployment)
     */
    override fun deployment(): Any? = unwrap(this).getDeployment()

    /**
     * A deployment configuration name or a predefined configuration name.
     *
     * With predefined configurations, you can deploy application revisions to one instance at a
     * time ( `CodeDeployDefault.OneAtATime` ), half of the instances at a time (
     * `CodeDeployDefault.HalfAtATime` ), or all the instances at once ( `CodeDeployDefault.AllAtOnce`
     * ). For more information and valid values, see [Working with Deployment
     * Configurations](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)
     * in the *AWS CodeDeploy User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentconfigname)
     */
    override fun deploymentConfigName(): String? = unwrap(this).getDeploymentConfigName()

    /**
     * A name for the deployment group.
     *
     * If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that
     * ID for the deployment group name. For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     *
     * If you specify a name, you cannot perform updates that require replacement of this resource.
     * You can perform updates that require no or some interruption. If you must replace the resource,
     * specify a new name.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentgroupname)
     */
    override fun deploymentGroupName(): String? = unwrap(this).getDeploymentGroupName()

    /**
     * Attributes that determine the type of deployment to run and whether to route deployment
     * traffic behind a load balancer.
     *
     * If you specify this property with a blue/green deployment type, don't specify the
     * `AutoScalingGroups` , `LoadBalancerInfo` , or `Deployment` properties.
     *
     *
     * For blue/green deployments, AWS CloudFormation supports deployments on Lambda compute
     * platforms only. You can perform Amazon ECS blue/green deployments using
     * `AWS::CodeDeploy::BlueGreen` hook. See [Perform Amazon ECS blue/green deployments through
     * CodeDeploy using AWS
     * CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)
     * for more information.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentstyle)
     */
    override fun deploymentStyle(): Any? = unwrap(this).getDeploymentStyle()

    /**
     * The Amazon EC2 tags that are already applied to Amazon EC2 instances that you want to include
     * in the deployment group.
     *
     * CodeDeploy includes all Amazon EC2 instances identified by any of the tags you specify in
     * this deployment group. Duplicates are not allowed.
     *
     * You can specify `EC2TagFilters` or `Ec2TagSet` , but not both.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagfilters)
     */
    override fun ec2TagFilters(): Any? = unwrap(this).getEc2TagFilters()

    /**
     * Information about groups of tags applied to Amazon EC2 instances.
     *
     * The deployment group includes only Amazon EC2 instances identified by all the tag groups.
     * Cannot be used in the same call as `ec2TagFilter` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagset)
     */
    override fun ec2TagSet(): Any? = unwrap(this).getEc2TagSet()

    /**
     * The target Amazon ECS services in the deployment group.
     *
     * This applies only to deployment groups that use the Amazon ECS compute platform. A target
     * Amazon ECS service is specified as an Amazon ECS cluster and service name pair using the format
     * `<clustername>:<servicename>` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ecsservices)
     */
    override fun ecsServices(): Any? = unwrap(this).getEcsServices()

    /**
     * Information about the load balancer to use in a deployment.
     *
     * For more information, see [Integrating CodeDeploy with Elastic Load
     * Balancing](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-elastic-load-balancing.html)
     * in the *AWS CodeDeploy User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo)
     */
    override fun loadBalancerInfo(): Any? = unwrap(this).getLoadBalancerInfo()

    /**
     * The on-premises instance tags already applied to on-premises instances that you want to
     * include in the deployment group.
     *
     * CodeDeploy includes all on-premises instances identified by any of the tags you specify in
     * this deployment group. To register on-premises instances with CodeDeploy , see [Working with
     * On-Premises Instances for
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-on-premises.html)
     * in the *AWS CodeDeploy User Guide* . Duplicates are not allowed.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisesinstancetagfilters)
     */
    override fun onPremisesInstanceTagFilters(): Any? =
        unwrap(this).getOnPremisesInstanceTagFilters()

    /**
     * Information about groups of tags applied to on-premises instances.
     *
     * The deployment group includes only on-premises instances identified by all the tag groups.
     *
     * You can specify `OnPremisesInstanceTagFilters` or `OnPremisesInstanceTagSet` , but not both.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisestagset)
     */
    override fun onPremisesTagSet(): Any? = unwrap(this).getOnPremisesTagSet()

    /**
     * Indicates what happens when new Amazon EC2 instances are launched mid-deployment and do not
     * receive the deployed application revision.
     *
     * If this option is set to `UPDATE` or is unspecified, CodeDeploy initiates one or more
     * 'auto-update outdated instances' deployments to apply the deployed application revision to the
     * new Amazon EC2 instances.
     *
     * If this option is set to `IGNORE` , CodeDeploy does not initiate a deployment to update the
     * new Amazon EC2 instances. This may result in instances having different revisions.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-outdatedinstancesstrategy)
     */
    override fun outdatedInstancesStrategy(): String? = unwrap(this).getOutdatedInstancesStrategy()

    /**
     * A service role Amazon Resource Name (ARN) that grants CodeDeploy permission to make calls to
     * AWS services on your behalf.
     *
     * For more information, see [Create a Service Role for AWS
     * CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html)
     * in the *AWS CodeDeploy User Guide* .
     *
     *
     * In some cases, you might need to add a dependency on the service role's policy. For more
     * information, see IAM role policy in [DependsOn
     * Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html)
     * .
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-servicerolearn)
     */
    override fun serviceRoleArn(): String = unwrap(this).getServiceRoleArn()

    /**
     * The metadata that you apply to CodeDeploy deployment groups to help you organize and
     * categorize them.
     *
     * Each tag consists of a key and an optional value, both of which you define.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-tags)
     */
    override fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

    /**
     * Indicates whether the deployment group was configured to have CodeDeploy install a
     * termination hook into an Auto Scaling group.
     *
     * For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with
     * CodeDeploy](https://docs.aws.amazon.com//codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors)
     * in the *AWS CodeDeploy User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-terminationhookenabled)
     */
    override fun terminationHookEnabled(): Any? = unwrap(this).getTerminationHookEnabled()

    /**
     * Information about triggers associated with the deployment group.
     *
     * Duplicates are not allowed
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-triggerconfigurations)
     */
    override fun triggerConfigurations(): Any? = unwrap(this).getTriggerConfigurations()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnDeploymentGroupProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal
        fun wrap(cdkObject: software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps):
        CfnDeploymentGroupProps = CdkObjectWrappers.wrap(cdkObject) as? CfnDeploymentGroupProps ?:
        Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnDeploymentGroupProps):
        software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps = (wrapped as
        CdkObject).cdkObject as software.amazon.awscdk.services.codedeploy.CfnDeploymentGroupProps
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy