in alicloud/resource_alicloud_ess_scaling_configuration.go [20:476]
func resourceAlicloudEssScalingConfiguration() *schema.Resource {
return &schema.Resource{
Create: resourceAliyunEssScalingConfigurationCreate,
Read: resourceAliyunEssScalingConfigurationRead,
Update: resourceAliyunEssScalingConfigurationUpdate,
Delete: resourceAliyunEssScalingConfigurationDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(10 * time.Minute),
Update: schema.DefaultTimeout(10 * time.Minute),
Delete: schema.DefaultTimeout(10 * time.Minute),
},
Schema: map[string]*schema.Schema{
"active": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"enable": {
Type: schema.TypeBool,
Optional: true,
},
"scaling_group_id": {
Type: schema.TypeString,
ForceNew: true,
Required: true,
},
"image_id": {
Type: schema.TypeString,
Optional: true,
},
"image_name": {
Type: schema.TypeString,
Optional: true,
},
"system_disk_encrypted": {
Type: schema.TypeBool,
Optional: true,
},
"image_options_login_as_non_root": {
Type: schema.TypeBool,
Optional: true,
},
"deletion_protection": {
Type: schema.TypeBool,
Optional: true,
},
"system_disk_encrypt_algorithm": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"AES-256", "SM4-128"}, false),
},
"system_disk_kms_key_id": {
Type: schema.TypeString,
Optional: true,
},
"instance_type": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringMatch(regexp.MustCompile(`^ecs\..*`), "prefix must be 'ecs.'"),
ConflictsWith: []string{"instance_types", "instance_type_override"},
},
"instance_types": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
ConflictsWith: []string{"instance_type", "instance_type_override"},
MaxItems: int(MaxScalingConfigurationInstanceTypes),
},
"io_optimized": {
Type: schema.TypeString,
Optional: true,
Deprecated: "Attribute io_optimized has been deprecated on instance resource. All the launched alicloud instances will be IO optimized. Suggest to remove it from your template.",
},
"is_outdated": {
Type: schema.TypeBool,
Optional: true,
},
"security_group_id": {
Type: schema.TypeString,
Optional: true,
ConflictsWith: []string{"security_group_ids"},
},
"security_group_ids": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
ConflictsWith: []string{"security_group_id"},
Optional: true,
MaxItems: 16,
},
"network_interfaces": {
Optional: true,
Type: schema.TypeSet,
ConflictsWith: []string{"security_group_id"},
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_type": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"Primary", "Secondary"}, false),
},
"network_interface_traffic_mode": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"Standard", "HighPerformance"}, false),
},
"ipv6_address_count": {
Type: schema.TypeInt,
Optional: true,
},
"security_group_ids": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
},
},
},
},
"custom_priorities": {
Optional: true,
Type: schema.TypeSet,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_type": {
Type: schema.TypeString,
Optional: true,
},
"vswitch_id": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"scaling_configuration_name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"instance_description": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringLenBetween(2, 256),
},
"internet_charge_type": {
Type: schema.TypeString,
Optional: true,
Default: PayByBandwidth,
ValidateFunc: StringInSlice([]string{"PayByBandwidth", "PayByTraffic"}, false),
},
"internet_max_bandwidth_in": {
Type: schema.TypeInt,
Optional: true,
},
"spot_duration": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 1),
},
"internet_max_bandwidth_out": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 1024),
},
"credit_specification": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{
string(CreditSpecificationStandard),
string(CreditSpecificationUnlimited),
}, false),
},
"system_disk_category": {
Type: schema.TypeString,
Optional: true,
Default: DiskCloudEfficiency,
ValidateFunc: StringInSlice([]string{"cloud", "ephemeral_ssd", "cloud_ssd", "cloud_essd", "cloud_efficiency", "cloud_essd_xc1"}, false),
},
"security_enhancement_strategy": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
ValidateFunc: StringInSlice([]string{"Active", "Deactive"}, false),
},
"system_disk_size": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(20, 500),
},
"system_disk_name": {
Type: schema.TypeString,
Optional: true,
},
"system_disk_description": {
Type: schema.TypeString,
Optional: true,
},
"system_disk_auto_snapshot_policy_id": {
Type: schema.TypeString,
Optional: true,
},
"system_disk_provisioned_iops": {
Type: schema.TypeInt,
Optional: true,
},
"data_disk": {
Optional: true,
Type: schema.TypeList,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"size": {
Type: schema.TypeInt,
Optional: true,
},
"provisioned_iops": {
Type: schema.TypeInt,
Optional: true,
},
"category": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"all", "cloud", "ephemeral_ssd", "cloud_essd", "cloud_efficiency", "cloud_ssd", "local_disk"}, false),
},
"snapshot_id": {
Type: schema.TypeString,
Optional: true,
},
"device": {
Type: schema.TypeString,
Optional: true,
Deprecated: "Attribute device has been deprecated on disk attachment resource. Suggest to remove it from your template.",
},
"delete_with_instance": {
Type: schema.TypeBool,
Optional: true,
Default: true,
},
"encrypted": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"kms_key_id": {
Type: schema.TypeString,
Optional: true,
},
"name": {
Type: schema.TypeString,
Optional: true,
},
"description": {
Type: schema.TypeString,
Optional: true,
},
"auto_snapshot_policy_id": {
Type: schema.TypeString,
Optional: true,
},
"performance_level": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"instance_ids": {
Type: schema.TypeList,
Elem: &schema.Schema{Type: schema.TypeString},
Optional: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
return true
},
Deprecated: "Field 'instance_ids' has been deprecated from provider version 1.6.0. New resource 'alicloud_ess_attachment' replaces it.",
},
"substitute": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"user_data": {
Type: schema.TypeString,
Optional: true,
},
"role_name": {
Type: schema.TypeString,
Optional: true,
},
"key_name": {
Type: schema.TypeString,
Optional: true,
},
"force_delete": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"tags": {
Type: schema.TypeMap,
Optional: true,
},
"instance_name": {
Type: schema.TypeString,
Optional: true,
Default: "ESS-Instance",
ValidateFunc: StringLenBetween(2, 128),
},
"override": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"password": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
return d.Get("password_inherit").(bool)
},
},
"password_inherit": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"kms_encrypted_password": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
return d.Get("password_inherit").(bool) || d.Get("password").(string) != ""
},
},
"kms_encryption_context": {
Type: schema.TypeMap,
Optional: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
return d.Get("kms_encrypted_password").(string) == ""
},
Elem: schema.TypeString,
},
"system_disk_performance_level": {
Type: schema.TypeString,
Optional: true,
},
"resource_group_id": {
Type: schema.TypeString,
Optional: true,
},
"host_name": {
Type: schema.TypeString,
Optional: true,
},
"spot_strategy": {
Type: schema.TypeString,
Optional: true,
},
"spot_price_limit": {
Optional: true,
Type: schema.TypeSet,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_type": {
Type: schema.TypeString,
Optional: true,
},
"price_limit": {
Type: schema.TypeFloat,
Optional: true,
},
},
},
},
"instance_type_override": {
Optional: true,
Type: schema.TypeSet,
ConflictsWith: []string{"instance_type", "instance_types"},
MaxItems: int(MaxScalingConfigurationInstanceTypes),
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_type": {
Type: schema.TypeString,
Optional: true,
},
"weighted_capacity": {
Type: schema.TypeInt,
Optional: true,
},
},
},
},
"instance_pattern_info": {
Optional: true,
Type: schema.TypeSet,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_family_level": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"EntryLevel", "EnterpriseLevel", "CreditEntryLevel"}, false),
},
"burstable_performance": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"Exclude", "Include", "Required"}, false),
},
"excluded_instance_types": {
Type: schema.TypeList,
Elem: &schema.Schema{Type: schema.TypeString},
Optional: true,
},
"architectures": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
ValidateFunc: StringInSlice([]string{"X86", "Heterogeneous", "BareMental", "Arm", "SuperComputeCluster"}, false),
},
Optional: true,
},
"cores": {
Type: schema.TypeInt,
Optional: true,
},
"memory": {
Type: schema.TypeFloat,
Optional: true,
},
"max_price": {
Type: schema.TypeFloat,
Optional: true,
},
},
},
},
},
}
}