import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface AsScalingGroupConfig extends cdktf.TerraformMetaArguments {
/**
* An available ID for a launch configuration.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#configuration_id AsScalingGroup#configuration_id}
*/
readonly configurationId: string;
/**
* Default cooldown time in second, and default value is `300`.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#default_cooldown AsScalingGroup#default_cooldown}
*/
readonly defaultCooldown?: number;
/**
* Desired volume of CVM instances, which is between `max_size` and `min_size`.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#desired_capacity AsScalingGroup#desired_capacity}
*/
readonly desiredCapacity?: number;
/**
* The expected number of instances is synchronized with the maximum and minimum values. The default value is `False`. This parameter is effective only in the scenario where the expected number is not passed in when modifying the scaling group interface. True: When modifying the maximum or minimum value, if there is a conflict with the current expected number, the expected number is adjusted synchronously. For example, when modifying, if the minimum value 2 is passed in and the current expected number is 1, the expected number is adjusted synchronously to 2; False: When modifying the maximum or minimum value, if there is a conflict with the current expected number, an error message is displayed indicating that the modification is not allowed.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#desired_capacity_sync_with_max_min_size AsScalingGroup#desired_capacity_sync_with_max_min_size}
*/
readonly desiredCapacitySyncWithMaxMinSize?: boolean | cdktf.IResolvable;
/**
* Health check type of instances in a scaling group.
CVM: confirm whether an instance is healthy based on the network status. If the pinged instance is unreachable, the instance will be considered unhealthy. For more information, see [Instance Health Check](https://intl.cloud.tencent.com/document/product/377/8553?from_cn_redirect=1)
CLB: confirm whether an instance is healthy based on the CLB health check status. For more information, see [Health Check Overview](https://intl.cloud.tencent.com/document/product/214/6097?from_cn_redirect=1).
If the parameter is set to `CLB`, the scaling group will check both the network status and the CLB health check status. If the network check indicates unhealthy, the `HealthStatus` field will return `UNHEALTHY`. If the CLB health check indicates unhealthy, the `HealthStatus` field will return `CLB_UNHEALTHY`. If both checks indicate unhealthy, the `HealthStatus` field will return `UNHEALTHY|CLB_UNHEALTHY`. Default value: `CLB`.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#health_check_type AsScalingGroup#health_check_type}
*/
readonly healthCheckType?: string;
/**
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#id AsScalingGroup#id}
*
* Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
* If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
*/
readonly id?: string;
/**
* Grace period of the CLB health check during which the `IN_SERVICE` instances added will not be marked as `CLB_UNHEALTHY`.
Valid range: 0-7200, in seconds. Default value: `0`.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#lb_health_check_grace_period AsScalingGroup#lb_health_check_grace_period}
*/
readonly lbHealthCheckGracePeriod?: number;
/**
* ID list of traditional load balancers.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#load_balancer_ids AsScalingGroup#load_balancer_ids}
*/
readonly loadBalancerIds?: string[];
/**
* Maximum number of CVM instances. Valid value ranges: (0~2000).
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#max_size AsScalingGroup#max_size}
*/
readonly maxSize: number;
/**
* Minimum number of CVM instances. Valid value ranges: (0~2000).
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#min_size AsScalingGroup#min_size}
*/
readonly minSize: number;
/**
* Multi zone or subnet strategy, Valid values: PRIORITY and EQUALITY.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#multi_zone_subnet_policy AsScalingGroup#multi_zone_subnet_policy}
*/
readonly multiZoneSubnetPolicy?: string;
/**
* Whether to enable priority for unhealthy instances during scale-in operations. If set to `true`, unhealthy instances will be removed first when scaling in.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#priority_scale_in_unhealthy AsScalingGroup#priority_scale_in_unhealthy}
*/
readonly priorityScaleInUnhealthy?: boolean | cdktf.IResolvable;
/**
* Specifies to which project the scaling group belongs.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#project_id AsScalingGroup#project_id}
*/
readonly projectId?: number;
/**
* Enable unhealthy instance replacement. If set to `true`, AS will replace instances that are found unhealthy in the CLB health check.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#replace_load_balancer_unhealthy AsScalingGroup#replace_load_balancer_unhealthy}
*/
readonly replaceLoadBalancerUnhealthy?: boolean | cdktf.IResolvable;
/**
* Replace mode of unhealthy replacement service. Valid values: RECREATE: Rebuild an instance to replace the original unhealthy instance. RESET: Performing a system reinstallation on unhealthy instances to keep information such as data disks, private IP addresses, and instance IDs unchanged. The instance login settings, HostName, enhanced services, and UserData will remain consistent with the current launch configuration. Default value: RECREATE. Note: This field may return null, indicating that no valid values can be obtained.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#replace_mode AsScalingGroup#replace_mode}
*/
readonly replaceMode?: string;
/**
* Enables unhealthy instance replacement. If set to `true`, AS will replace instances that are flagged as unhealthy by Cloud Monitor.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#replace_monitor_unhealthy AsScalingGroup#replace_monitor_unhealthy}
*/
readonly replaceMonitorUnhealthy?: boolean | cdktf.IResolvable;
/**
* Available values for retry policies. Valid values: IMMEDIATE_RETRY and INCREMENTAL_INTERVALS.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#retry_policy AsScalingGroup#retry_policy}
*/
readonly retryPolicy?: string;
/**
* Name of a scaling group.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#scaling_group_name AsScalingGroup#scaling_group_name}
*/
readonly scalingGroupName: string;
/**
* Indicates scaling mode which creates and terminates instances (classic method), or method first tries to start stopped instances (wake up stopped) to perform scaling operations. Available values: `CLASSIC_SCALING`, `WAKE_UP_STOPPED_SCALING`. Default: `CLASSIC_SCALING`.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#scaling_mode AsScalingGroup#scaling_mode}
*/
readonly scalingMode?: string;
/**
* ID list of subnet, and for VPC it is required.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#subnet_ids AsScalingGroup#subnet_ids}
*/
readonly subnetIds?: string[];
/**
* Tags of a scaling group.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#tags AsScalingGroup#tags}
*/
readonly tags?: {
[key: string]: string;
};
/**
* Available values for termination policies. Valid values: OLDEST_INSTANCE and NEWEST_INSTANCE.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#termination_policies AsScalingGroup#termination_policies}
*/
readonly terminationPolicies?: string[];
/**
* ID of VPC network.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#vpc_id AsScalingGroup#vpc_id}
*/
readonly vpcId: string;
/**
* List of available zones, for Basic network it is required.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#zones AsScalingGroup#zones}
*/
readonly zones?: string[];
/**
* forward_balancer_ids block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#forward_balancer_ids AsScalingGroup#forward_balancer_ids}
*/
readonly forwardBalancerIds?: AsScalingGroupForwardBalancerIds[] | cdktf.IResolvable;
}
export interface AsScalingGroupForwardBalancerIdsTargetAttribute {
/**
* Port number.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#port AsScalingGroup#port}
*/
readonly port: number;
/**
* Weight.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#weight AsScalingGroup#weight}
*/
readonly weight: number;
}
export declare function asScalingGroupForwardBalancerIdsTargetAttributeToTerraform(struct?: AsScalingGroupForwardBalancerIdsTargetAttribute | cdktf.IResolvable): any;
export declare function asScalingGroupForwardBalancerIdsTargetAttributeToHclTerraform(struct?: AsScalingGroupForwardBalancerIdsTargetAttribute | cdktf.IResolvable): any;
export declare class AsScalingGroupForwardBalancerIdsTargetAttributeOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
private resolvableValue?;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
* @param complexObjectIndex the index of this item in the list
* @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
get internalValue(): AsScalingGroupForwardBalancerIdsTargetAttribute | cdktf.IResolvable | undefined;
set internalValue(value: AsScalingGroupForwardBalancerIdsTargetAttribute | cdktf.IResolvable | undefined);
private _port?;
get port(): number;
set port(value: number);
get portInput(): number;
private _weight?;
get weight(): number;
set weight(value: number);
get weightInput(): number;
}
export declare class AsScalingGroupForwardBalancerIdsTargetAttributeList extends cdktf.ComplexList {
protected terraformResource: cdktf.IInterpolatingParent;
protected terraformAttribute: string;
protected wrapsSet: boolean;
internalValue?: AsScalingGroupForwardBalancerIdsTargetAttribute[] | cdktf.IResolvable;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
* @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
/**
* @param index the index of the item to return
*/
get(index: number): AsScalingGroupForwardBalancerIdsTargetAttributeOutputReference;
}
export interface AsScalingGroupForwardBalancerIds {
/**
* Listener ID for application load balancers.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#listener_id AsScalingGroup#listener_id}
*/
readonly listenerId: string;
/**
* ID of available load balancers.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#load_balancer_id AsScalingGroup#load_balancer_id}
*/
readonly loadBalancerId: string;
/**
* ID of forwarding rules.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#rule_id AsScalingGroup#rule_id}
*/
readonly ruleId?: string;
/**
* target_attribute block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#target_attribute AsScalingGroup#target_attribute}
*/
readonly targetAttribute: AsScalingGroupForwardBalancerIdsTargetAttribute[] | cdktf.IResolvable;
}
export declare function asScalingGroupForwardBalancerIdsToTerraform(struct?: AsScalingGroupForwardBalancerIds | cdktf.IResolvable): any;
export declare function asScalingGroupForwardBalancerIdsToHclTerraform(struct?: AsScalingGroupForwardBalancerIds | cdktf.IResolvable): any;
export declare class AsScalingGroupForwardBalancerIdsOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
private resolvableValue?;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
* @param complexObjectIndex the index of this item in the list
* @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
get internalValue(): AsScalingGroupForwardBalancerIds | cdktf.IResolvable | undefined;
set internalValue(value: AsScalingGroupForwardBalancerIds | cdktf.IResolvable | undefined);
private _listenerId?;
get listenerId(): string;
set listenerId(value: string);
get listenerIdInput(): string;
private _loadBalancerId?;
get loadBalancerId(): string;
set loadBalancerId(value: string);
get loadBalancerIdInput(): string;
private _ruleId?;
get ruleId(): string;
set ruleId(value: string);
resetRuleId(): void;
get ruleIdInput(): string;
private _targetAttribute;
get targetAttribute(): AsScalingGroupForwardBalancerIdsTargetAttributeList;
putTargetAttribute(value: AsScalingGroupForwardBalancerIdsTargetAttribute[] | cdktf.IResolvable): void;
get targetAttributeInput(): any;
}
export declare class AsScalingGroupForwardBalancerIdsList extends cdktf.ComplexList {
protected terraformResource: cdktf.IInterpolatingParent;
protected terraformAttribute: string;
protected wrapsSet: boolean;
internalValue?: AsScalingGroupForwardBalancerIds[] | cdktf.IResolvable;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
* @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
/**
* @param index the index of the item to return
*/
get(index: number): AsScalingGroupForwardBalancerIdsOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group tencentcloud_as_scaling_group}
*/
export declare class AsScalingGroup extends cdktf.TerraformResource {
static readonly tfResourceType = "tencentcloud_as_scaling_group";
/**
* Generates CDKTF code for importing a AsScalingGroup resource upon running "cdktf plan "
* @param scope The scope in which to define this construct
* @param importToId The construct id used in the generated config for the AsScalingGroup to import
* @param importFromId The id of the existing AsScalingGroup that should be imported. Refer to the {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group#import import section} in the documentation of this resource for the id to use
* @param provider? Optional instance of the provider where the AsScalingGroup to import is found
*/
static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): any;
/**
* Create a new {@link https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/1.82.49/docs/resources/as_scaling_group tencentcloud_as_scaling_group} Resource
*
* @param scope The scope in which to define this construct
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
* @param options AsScalingGroupConfig
*/
constructor(scope: Construct, id: string, config: AsScalingGroupConfig);
private _configurationId?;
get configurationId(): string;
set configurationId(value: string);
get configurationIdInput(): string;
get createTime(): any;
private _defaultCooldown?;
get defaultCooldown(): number;
set defaultCooldown(value: number);
resetDefaultCooldown(): void;
get defaultCooldownInput(): number;
private _desiredCapacity?;
get desiredCapacity(): number;
set desiredCapacity(value: number);
resetDesiredCapacity(): void;
get desiredCapacityInput(): number;
private _desiredCapacitySyncWithMaxMinSize?;
get desiredCapacitySyncWithMaxMinSize(): boolean | cdktf.IResolvable;
set desiredCapacitySyncWithMaxMinSize(value: boolean | cdktf.IResolvable);
resetDesiredCapacitySyncWithMaxMinSize(): void;
get desiredCapacitySyncWithMaxMinSizeInput(): any;
private _healthCheckType?;
get healthCheckType(): string;
set healthCheckType(value: string);
resetHealthCheckType(): void;
get healthCheckTypeInput(): string;
private _id?;
get id(): string;
set id(value: string);
resetId(): void;
get idInput(): string;
get instanceCount(): any;
private _lbHealthCheckGracePeriod?;
get lbHealthCheckGracePeriod(): number;
set lbHealthCheckGracePeriod(value: number);
resetLbHealthCheckGracePeriod(): void;
get lbHealthCheckGracePeriodInput(): number;
private _loadBalancerIds?;
get loadBalancerIds(): string[];
set loadBalancerIds(value: string[]);
resetLoadBalancerIds(): void;
get loadBalancerIdsInput(): string[];
private _maxSize?;
get maxSize(): number;
set maxSize(value: number);
get maxSizeInput(): number;
private _minSize?;
get minSize(): number;
set minSize(value: number);
get minSizeInput(): number;
private _multiZoneSubnetPolicy?;
get multiZoneSubnetPolicy(): string;
set multiZoneSubnetPolicy(value: string);
resetMultiZoneSubnetPolicy(): void;
get multiZoneSubnetPolicyInput(): string;
private _priorityScaleInUnhealthy?;
get priorityScaleInUnhealthy(): boolean | cdktf.IResolvable;
set priorityScaleInUnhealthy(value: boolean | cdktf.IResolvable);
resetPriorityScaleInUnhealthy(): void;
get priorityScaleInUnhealthyInput(): any;
private _projectId?;
get projectId(): number;
set projectId(value: number);
resetProjectId(): void;
get projectIdInput(): number;
private _replaceLoadBalancerUnhealthy?;
get replaceLoadBalancerUnhealthy(): boolean | cdktf.IResolvable;
set replaceLoadBalancerUnhealthy(value: boolean | cdktf.IResolvable);
resetReplaceLoadBalancerUnhealthy(): void;
get replaceLoadBalancerUnhealthyInput(): any;
private _replaceMode?;
get replaceMode(): string;
set replaceMode(value: string);
resetReplaceMode(): void;
get replaceModeInput(): string;
private _replaceMonitorUnhealthy?;
get replaceMonitorUnhealthy(): boolean | cdktf.IResolvable;
set replaceMonitorUnhealthy(value: boolean | cdktf.IResolvable);
resetReplaceMonitorUnhealthy(): void;
get replaceMonitorUnhealthyInput(): any;
private _retryPolicy?;
get retryPolicy(): string;
set retryPolicy(value: string);
resetRetryPolicy(): void;
get retryPolicyInput(): string;
private _scalingGroupName?;
get scalingGroupName(): string;
set scalingGroupName(value: string);
get scalingGroupNameInput(): string;
private _scalingMode?;
get scalingMode(): string;
set scalingMode(value: string);
resetScalingMode(): void;
get scalingModeInput(): string;
get status(): any;
private _subnetIds?;
get subnetIds(): string[];
set subnetIds(value: string[]);
resetSubnetIds(): void;
get subnetIdsInput(): string[];
private _tags?;
get tags(): {
[key: string]: string;
};
set tags(value: {
[key: string]: string;
});
resetTags(): void;
get tagsInput(): {
[key: string]: string;
};
private _terminationPolicies?;
get terminationPolicies(): string[];
set terminationPolicies(value: string[]);
resetTerminationPolicies(): void;
get terminationPoliciesInput(): string[];
private _vpcId?;
get vpcId(): string;
set vpcId(value: string);
get vpcIdInput(): string;
private _zones?;
get zones(): string[];
set zones(value: string[]);
resetZones(): void;
get zonesInput(): string[];
private _forwardBalancerIds;
get forwardBalancerIds(): AsScalingGroupForwardBalancerIdsList;
putForwardBalancerIds(value: AsScalingGroupForwardBalancerIds[] | cdktf.IResolvable): void;
resetForwardBalancerIds(): void;
get forwardBalancerIdsInput(): any;
protected synthesizeAttributes(): {
[name: string]: any;
};
protected synthesizeHclAttributes(): {
[name: string]: any;
};
}