import * as core from "@terrascript/core"; export interface OnPremisesInstanceTagFilterArgs extends core.SchemaArgs { key?: string | core.StringOut; type?: string | core.StringOut; value?: string | core.StringOut; } export class OnPremisesInstanceTagFilter extends core.Schema { @core.attr(String) public key?: string | core.StringOut; @core.attr(String) public type?: string | core.StringOut; @core.attr(String) public value?: string | core.StringOut; } export interface DeploymentStyleArgs extends core.SchemaArgs { deploymentOption?: string | core.StringOut; deploymentType?: string | core.StringOut; } export class DeploymentStyle extends core.Schema { @core.attr(String) public deploymentOption?: string | core.StringOut; @core.attr(String) public deploymentType?: string | core.StringOut; } export interface DeploymentReadyOptionArgs extends core.SchemaArgs { actionOnTimeout?: string | core.StringOut; waitTimeInMinutes?: number | core.NumberOut; } export class DeploymentReadyOption extends core.Schema { @core.attr(String) public actionOnTimeout?: string | core.StringOut; @core.attr(Number) public waitTimeInMinutes?: number | core.NumberOut; } export interface GreenFleetProvisioningOptionArgs extends core.SchemaArgs { action?: string | core.StringOut; } export class GreenFleetProvisioningOption extends core.Schema { @core.attr(String) public action?: string | core.StringOut; } export interface TerminateBlueInstancesOnDeploymentSuccessArgs extends core.SchemaArgs { action?: string | core.StringOut; terminationWaitTimeInMinutes?: number | core.NumberOut; } export class TerminateBlueInstancesOnDeploymentSuccess extends core.Schema { @core.attr(String) public action?: string | core.StringOut; @core.attr(Number) public terminationWaitTimeInMinutes?: number | core.NumberOut; } export interface BlueGreenDeploymentConfigArgs extends core.SchemaArgs { deploymentReadyOption?: DeploymentReadyOption; greenFleetProvisioningOption?: GreenFleetProvisioningOption; terminateBlueInstancesOnDeploymentSuccess?: TerminateBlueInstancesOnDeploymentSuccess; } export class BlueGreenDeploymentConfig extends core.Schema { @core.attr(DeploymentReadyOption) public deploymentReadyOption?: DeploymentReadyOption; @core.attr(GreenFleetProvisioningOption, { computed: true }) public greenFleetProvisioningOption?: GreenFleetProvisioningOption; @core.attr(TerminateBlueInstancesOnDeploymentSuccess) public terminateBlueInstancesOnDeploymentSuccess?: TerminateBlueInstancesOnDeploymentSuccess; } export interface TargetGroupInfoArgs extends core.SchemaArgs { name?: string | core.StringOut; } export class TargetGroupInfo extends core.Schema { @core.attr(String) public name?: string | core.StringOut; } export interface ProdTrafficRouteArgs extends core.SchemaArgs { listenerArns: core.Array | core.ArrayOut; } export class ProdTrafficRoute extends core.Schema { @core.attr(String, { kind: "array" }) public listenerArns!: core.Array | core.ArrayOut; } export interface TargetGroupArgs extends core.SchemaArgs { name: string | core.StringOut; } export class TargetGroup extends core.Schema { @core.attr(String) public name!: string | core.StringOut; } export interface TestTrafficRouteArgs extends core.SchemaArgs { listenerArns: core.Array | core.ArrayOut; } export class TestTrafficRoute extends core.Schema { @core.attr(String, { kind: "array" }) public listenerArns!: core.Array | core.ArrayOut; } export interface TargetGroupPairInfoArgs extends core.SchemaArgs { prodTrafficRoute: ProdTrafficRoute; targetGroup: core.Array | core.ArrayOut; testTrafficRoute?: TestTrafficRoute; } export class TargetGroupPairInfo extends core.Schema { @core.attr(ProdTrafficRoute) public prodTrafficRoute!: ProdTrafficRoute; @core.attr(TargetGroup, { kind: "array" }) public targetGroup!: core.Array | core.ArrayOut; @core.attr(TestTrafficRoute) public testTrafficRoute?: TestTrafficRoute; } export interface ElbInfoArgs extends core.SchemaArgs { name?: string | core.StringOut; } export class ElbInfo extends core.Schema { @core.attr(String) public name?: string | core.StringOut; } export interface LoadBalancerInfoArgs extends core.SchemaArgs { elbInfo?: core.Array | core.ArrayOut; targetGroupInfo?: | core.Array | core.ArrayOut; targetGroupPairInfo?: TargetGroupPairInfo; } export class LoadBalancerInfo extends core.Schema { @core.attr(ElbInfo, { kind: "array" }) public elbInfo?: core.Array | core.ArrayOut; @core.attr(TargetGroupInfo, { kind: "array" }) public targetGroupInfo?: | core.Array | core.ArrayOut; @core.attr(TargetGroupPairInfo) public targetGroupPairInfo?: TargetGroupPairInfo; } export interface Ec2TagFilterArgs extends core.SchemaArgs { key?: string | core.StringOut; type?: string | core.StringOut; value?: string | core.StringOut; } export class Ec2TagFilter extends core.Schema { @core.attr(String) public key?: string | core.StringOut; @core.attr(String) public type?: string | core.StringOut; @core.attr(String) public value?: string | core.StringOut; } export interface Ec2TagSetArgs extends core.SchemaArgs { ec2TagFilter?: core.Array | core.ArrayOut; } export class Ec2TagSet extends core.Schema { @core.attr(Ec2TagFilter, { kind: "array" }) public ec2TagFilter?: core.Array | core.ArrayOut; } export interface AlarmConfigurationArgs extends core.SchemaArgs { alarms?: core.Array | core.ArrayOut; enabled?: boolean | core.BooleanOut; ignorePollAlarmFailure?: boolean | core.BooleanOut; } export class AlarmConfiguration extends core.Schema { @core.attr(String, { kind: "array" }) public alarms?: core.Array | core.ArrayOut; @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; @core.attr(Boolean) public ignorePollAlarmFailure?: boolean | core.BooleanOut; } export interface TriggerConfigurationArgs extends core.SchemaArgs { triggerEvents: core.Array | core.ArrayOut; triggerName: string | core.StringOut; triggerTargetArn: string | core.StringOut; } export class TriggerConfiguration extends core.Schema { @core.attr(String, { kind: "array" }) public triggerEvents!: core.Array | core.ArrayOut; @core.attr(String) public triggerName!: string | core.StringOut; @core.attr(String) public triggerTargetArn!: string | core.StringOut; } export interface AutoRollbackConfigurationArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; events?: core.Array | core.ArrayOut; } export class AutoRollbackConfiguration extends core.Schema { @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; @core.attr(String, { kind: "array" }) public events?: core.Array | core.ArrayOut; } export interface EcsServiceArgs extends core.SchemaArgs { clusterName: string | core.StringOut; serviceName: string | core.StringOut; } export class EcsService extends core.Schema { @core.attr(String) public clusterName!: string | core.StringOut; @core.attr(String) public serviceName!: string | core.StringOut; } export interface DeploymentGroupArgs extends core.ResourceArgs { /** * (Optional) Configuration block of alarms associated with the deployment group (documented below). */ alarmConfiguration?: AlarmConfiguration; /** * (Required) The name of the application. */ appName: string | core.StringOut; /** * (Optional) Configuration block of the automatic rollback configuration associated with the deploymen * t group (documented below). */ autoRollbackConfiguration?: AutoRollbackConfiguration; /** * (Optional) Autoscaling groups associated with the deployment group. */ autoscalingGroups?: core.Array | core.ArrayOut; /** * (Optional) Configuration block of the blue/green deployment options for a deployment group (document * ed below). */ blueGreenDeploymentConfig?: BlueGreenDeploymentConfig; /** * (Optional) The name of the group's deployment config. The default is "CodeDeployDefault.OneAtATime". */ deploymentConfigName?: string | core.StringOut; /** * (Required) The name of the deployment group. */ deploymentGroupName: string | core.StringOut; /** * (Optional) Configuration block of the type of deployment, either in-place or blue/green, you want to * run and whether to route deployment traffic behind a load balancer (documented below). */ deploymentStyle?: DeploymentStyle; /** * (Optional) Tag filters associated with the deployment group. See the AWS docs for details. */ ec2TagFilter?: core.Array | core.ArrayOut; /** * (Optional) Configuration block(s) of Tag filters associated with the deployment group, which are als * o referred to as tag groups (documented below). See the AWS docs for details. */ ec2TagSet?: core.Array | core.ArrayOut; /** * (Optional) Configuration block(s) of the ECS services for a deployment group (documented below). */ ecsService?: EcsService; /** * (Optional) Single configuration block of the load balancer to use in a blue/green deployment (docume * nted below). */ loadBalancerInfo?: LoadBalancerInfo; /** * (Optional) On premise tag filters associated with the group. See the AWS docs for details. */ onPremisesInstanceTagFilter?: | core.Array | core.ArrayOut; /** * (Required) The service role ARN that allows deployments. */ serviceRoleArn: string | core.StringOut; /** * (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configurati * on block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configurati * on-block) present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) Configuration block(s) of the triggers for the deployment group (documented below). */ triggerConfiguration?: | core.Array | core.ArrayOut; } export class DeploymentGroup extends core.Resource { /** * (Optional) Configuration block of alarms associated with the deployment group (documented below). */ @core.attr(AlarmConfiguration) public alarmConfiguration?: AlarmConfiguration; /** * (Required) The name of the application. */ @core.attr(String) public appName!: string | core.StringOut; /** * The ARN of the CodeDeploy deployment group. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Configuration block of the automatic rollback configuration associated with the deploymen * t group (documented below). */ @core.attr(AutoRollbackConfiguration) public autoRollbackConfiguration?: AutoRollbackConfiguration; /** * (Optional) Autoscaling groups associated with the deployment group. */ @core.attr(String, { kind: "array" }) public autoscalingGroups?: core.Array | core.ArrayOut; /** * (Optional) Configuration block of the blue/green deployment options for a deployment group (document * ed below). */ @core.attr(BlueGreenDeploymentConfig, { computed: true }) public blueGreenDeploymentConfig?: BlueGreenDeploymentConfig; /** * The destination platform type for the deployment. */ @core.attr(String, { computed: true }) public computePlatform!: string | core.StringOut; /** * (Optional) The name of the group's deployment config. The default is "CodeDeployDefault.OneAtATime". */ @core.attr(String) public deploymentConfigName?: string | core.StringOut; /** * The ID of the CodeDeploy deployment group. */ @core.attr(String, { computed: true }) public deploymentGroupId!: string | core.StringOut; /** * (Required) The name of the deployment group. */ @core.attr(String) public deploymentGroupName!: string | core.StringOut; /** * (Optional) Configuration block of the type of deployment, either in-place or blue/green, you want to * run and whether to route deployment traffic behind a load balancer (documented below). */ @core.attr(DeploymentStyle) public deploymentStyle?: DeploymentStyle; /** * (Optional) Tag filters associated with the deployment group. See the AWS docs for details. */ @core.attr(Ec2TagFilter, { kind: "array" }) public ec2TagFilter?: core.Array | core.ArrayOut; /** * (Optional) Configuration block(s) of Tag filters associated with the deployment group, which are als * o referred to as tag groups (documented below). See the AWS docs for details. */ @core.attr(Ec2TagSet, { kind: "array" }) public ec2TagSet?: core.Array | core.ArrayOut; /** * (Optional) Configuration block(s) of the ECS services for a deployment group (documented below). */ @core.attr(EcsService) public ecsService?: EcsService; /** * Application name and deployment group name. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) Single configuration block of the load balancer to use in a blue/green deployment (docume * nted below). */ @core.attr(LoadBalancerInfo) public loadBalancerInfo?: LoadBalancerInfo; /** * (Optional) On premise tag filters associated with the group. See the AWS docs for details. */ @core.attr(OnPremisesInstanceTagFilter, { kind: "array" }) public onPremisesInstanceTagFilter?: | core.Array | core.ArrayOut; /** * (Required) The service role ARN that allows deployments. */ @core.attr(String) public serviceRoleArn!: string | core.StringOut; /** * (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configurati * on block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configurati * on-block) present, tags with matching keys will overwrite those defined at the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) Configuration block(s) of the triggers for the deployment group (documented below). */ @core.attr(TriggerConfiguration, { kind: "array" }) public triggerConfiguration?: | core.Array | core.ArrayOut; constructor(name: string, args?: DeploymentGroupArgs) { super(name, "aws_codedeploy_deployment_group", args); } public override getNamespace(): string { return "aws_codedeploy"; } }