in alicloud/resource_alicloud_emrv2_cluster.go [22:885]
func resourceAlicloudEmrV2Cluster() *schema.Resource {
return &schema.Resource{
Create: resourceAlicloudEmrV2ClusterCreate,
Read: resourceAlicloudEmrV2ClusterRead,
Update: resourceAlicloudEmrV2ClusterUpdate,
Delete: resourceAlicloudEmrV2ClusterDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(10 * time.Minute),
Delete: schema.DefaultTimeout(5 * time.Minute),
},
Schema: map[string]*schema.Schema{
"resource_group_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"payment_type": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"PayAsYouGo", "Subscription"}, false),
},
"subscription_config": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"payment_duration_unit": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"Month", "Year"}, false),
},
"payment_duration": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntInSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, 60}),
},
"auto_renew": {
Type: schema.TypeBool,
Optional: true,
},
"auto_pay_order": {
Type: schema.TypeBool,
Optional: true,
},
"auto_renew_duration_unit": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validation.StringInSlice([]string{"Month", "Year"}, false),
},
"auto_renew_duration": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: validation.IntInSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, 60}),
},
},
},
MaxItems: 1,
},
"cluster_type": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: validation.StringInSlice([]string{"DATALAKE", "OLAP", "DATAFLOW", "DATASERVING", "CUSTOM"}, false),
},
"release_version": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"cluster_name": {
Type: schema.TypeString,
Required: true,
},
"log_collect_strategy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"deletion_protection": {
Type: schema.TypeBool,
Optional: true,
},
"deploy_mode": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"NORMAL", "HA"}, false),
},
"security_mode": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"NORMAL", "KERBEROS"}, false),
},
"applications": {
Type: schema.TypeSet,
Required: true,
ForceNew: true,
Elem: &schema.Schema{Type: schema.TypeString},
MinItems: 1,
},
"application_configs": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"application_name": {
Type: schema.TypeString,
Required: true,
},
"config_file_name": {
Type: schema.TypeString,
Required: true,
},
"config_item_key": {
Type: schema.TypeString,
Required: true,
},
"config_item_value": {
Type: schema.TypeString,
Required: true,
},
"config_scope": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validation.StringInSlice([]string{"CLUSTER", "NODE_GROUP"}, false),
},
"config_description": {
Type: schema.TypeString,
Optional: true,
},
"node_group_name": {
Type: schema.TypeString,
Optional: true,
},
"node_group_id": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"node_attributes": {
Type: schema.TypeSet,
Required: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"vpc_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"zone_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"security_group_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"ram_role": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"key_pair_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"data_disk_encrypted": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
ForceNew: true,
},
"data_disk_kms_key_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
ValidateFunc: validation.NoZeroValues,
},
"system_disk_encrypted": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
},
"system_disk_kms_key_id": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
ValidateFunc: validation.NoZeroValues,
},
},
},
ForceNew: true,
},
"node_groups": {
Type: schema.TypeList,
Required: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"node_group_type": {
Type: schema.TypeString,
Required: true,
ValidateFunc: StringInSlice([]string{"MASTER", "CORE", "TASK", "GATEWAY", "MASTER-EXTEND"}, false),
},
"node_group_name": {
Type: schema.TypeString,
Required: true,
},
"payment_type": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"PayAsYouGo", "Subscription"}, false),
},
"deployment_set_strategy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"NONE", "CLUSTER", "NODE_GROUP"}, false),
},
"node_resize_strategy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"PRIORITY", "COST_OPTIMIZED"}, false),
},
"subscription_config": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"payment_duration_unit": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"Month", "Year"}, false),
},
"payment_duration": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntInSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, 60}),
},
"auto_renew": {
Type: schema.TypeBool,
Optional: true,
},
"auto_pay_order": {
Type: schema.TypeBool,
Optional: true,
},
"auto_renew_duration_unit": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validation.StringInSlice([]string{"Month", "Year"}, false),
},
"auto_renew_duration": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: validation.IntInSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, 60}),
},
},
},
MaxItems: 1,
},
"spot_strategy": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"NoSpot", "SpotWithPriceLimit", "SpotAsPriceGo"}, false),
},
"spot_bid_prices": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_type": {
Type: schema.TypeString,
Required: true,
},
"bid_price": {
Type: schema.TypeInt,
Required: true,
},
},
},
},
"vswitch_ids": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"with_public_ip": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"additional_security_group_ids": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"instance_types": {
Type: schema.TypeSet,
Required: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"node_count": {
Type: schema.TypeInt,
Required: true,
},
"system_disk": {
Type: schema.TypeSet,
Required: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"category": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"cloud_essd", "cloud_efficiency", "cloud_ssd"}, false),
},
"size": {
Type: schema.TypeInt,
Required: true,
},
"performance_level": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"PL0", "PL1", "PL2", "PL3"}, false),
},
"count": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
},
},
},
MaxItems: 1,
},
"data_disks": {
Type: schema.TypeSet,
Required: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"category": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"cloud_efficiency", "cloud_ssd", "cloud_essd", "cloud", "local_hdd_pro", "local_disk", "local_ssd_pro"}, false),
},
"size": {
Type: schema.TypeInt,
Required: true,
},
"performance_level": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"PL0", "PL1", "PL2", "PL3"}, false),
},
"count": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
},
},
},
},
"graceful_shutdown": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"spot_instance_remedy": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"cost_optimized_config": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"on_demand_base_capacity": {
Type: schema.TypeInt,
Required: true,
},
"on_demand_percentage_above_base_capacity": {
Type: schema.TypeInt,
Required: true,
},
"spot_instance_pools": {
Type: schema.TypeInt,
Required: true,
},
},
},
MaxItems: 1,
},
"auto_scaling_policy": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"scaling_rules": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"rule_name": {
Type: schema.TypeString,
Required: true,
},
"trigger_type": {
Type: schema.TypeString,
Required: true,
ValidateFunc: StringInSlice([]string{"TIME_TRIGGER", "METRICS_TRIGGER"}, false),
},
"activity_type": {
Type: schema.TypeString,
Required: true,
ValidateFunc: StringInSlice([]string{"SCALE_OUT", "SCALE_IN"}, false),
},
"adjustment_type": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"CHANGE_IN_CAPACITY", "EXACT_CAPACITY"}, false),
},
"adjustment_value": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: IntBetween(1, 5000),
},
"min_adjustment_value": {
Type: schema.TypeInt,
Optional: true,
},
"time_trigger": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"launch_time": {
Type: schema.TypeString,
Required: true,
},
"start_time": {
Type: schema.TypeString,
Optional: true,
},
"end_time": {
Type: schema.TypeString,
Optional: true,
},
"launch_expiration_time": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 3600),
},
"recurrence_type": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"MINUTELY", "HOURLY", "DAILY", "WEEKLY", "MONTHLY"}, false),
},
"recurrence_value": {
Type: schema.TypeString,
Optional: true,
},
},
},
MaxItems: 1,
},
"metrics_trigger": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"time_window": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: IntBetween(30, 1800),
},
"evaluation_count": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: IntBetween(1, 5),
},
"cool_down_interval": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 10800),
},
"condition_logic_operator": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"And", "Or"}, false),
},
"time_constraints": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"start_time": {
Type: schema.TypeString,
Optional: true,
},
"end_time": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"conditions": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"metric_name": {
Type: schema.TypeString,
Required: true,
},
"statistics": {
Type: schema.TypeString,
Required: true,
ValidateFunc: StringInSlice([]string{"MAX", "MIN", "AVG"}, false),
},
"comparison_operator": {
Type: schema.TypeString,
Required: true,
ValidateFunc: StringInSlice([]string{"EQ", "NE", "GT", "LT", "GE", "LE"}, false),
},
"threshold": {
Type: schema.TypeFloat,
Required: true,
},
"tags": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Required: true,
},
"value": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
},
},
},
},
},
MaxItems: 1,
},
},
},
},
"constraints": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"max_capacity": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 2000),
},
"min_capacity": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 2000),
},
},
},
MaxItems: 1,
},
},
},
MaxItems: 1,
},
"ack_config": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"ack_instance_id": {
Type: schema.TypeString,
Required: true,
},
"node_selectors": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Required: true,
},
"value": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"tolerations": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Optional: true,
},
"value": {
Type: schema.TypeString,
Optional: true,
},
"operator": {
Type: schema.TypeString,
Optional: true,
},
"effect": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"namespace": {
Type: schema.TypeString,
Required: true,
},
"request_cpu": {
Type: schema.TypeFloat,
Required: true,
},
"request_memory": {
Type: schema.TypeFloat,
Required: true,
},
"limit_cpu": {
Type: schema.TypeFloat,
Required: true,
},
"limit_memory": {
Type: schema.TypeFloat,
Required: true,
},
"custom_labels": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Required: true,
},
"value": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"custom_annotations": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Required: true,
},
"value": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"pvcs": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
},
"path": {
Type: schema.TypeString,
Required: true,
},
"data_disk_storage_class": {
Type: schema.TypeString,
Required: true,
},
"data_disk_size": {
Type: schema.TypeInt,
Required: true,
},
},
},
},
"volumes": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
},
"path": {
Type: schema.TypeString,
Required: true,
},
"type": {
Type: schema.TypeString,
Required: true,
},
},
},
},
"volume_mounts": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
},
"path": {
Type: schema.TypeString,
Required: true,
},
},
},
},
"pre_start_command": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"pod_affinity": {
Type: schema.TypeString,
Optional: true,
},
"pod_anti_affinity": {
Type: schema.TypeString,
Optional: true,
},
"node_affinity": {
Type: schema.TypeString,
Optional: true,
},
},
},
MaxItems: 1,
},
},
},
MinItems: 1,
},
"bootstrap_scripts": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"script_name": {
Type: schema.TypeString,
Required: true,
},
"script_path": {
Type: schema.TypeString,
Required: true,
},
"script_args": {
Type: schema.TypeString,
Required: true,
},
"priority": {
Type: schema.TypeInt,
Optional: true,
Deprecated: "Field 'priority' has been deprecated from provider version 1.227.0.",
},
"execution_moment": {
Type: schema.TypeString,
Required: true,
ValidateFunc: StringInSlice([]string{"BEFORE_INSTALL", "AFTER_STARTED", "BEFORE_START"}, false),
},
"execution_fail_strategy": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"FAILED_CONTINUE", "FAILED_BLOCK"}, false),
},
"node_selector": {
Type: schema.TypeSet,
Required: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"node_select_type": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice([]string{"CLUSTER", "NODE_GROUP", "NODE"}, false),
},
"node_names": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"node_group_id": {
Type: schema.TypeString,
Optional: true,
Deprecated: "Field 'node_group_id' has been deprecated from provider version 1.227.0. New field 'node_group_ids' replaces it.",
},
"node_group_ids": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"node_group_types": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"node_group_name": {
Type: schema.TypeString,
Optional: true,
Deprecated: "Field 'node_group_name' has been deprecated from provider version 1.227.0. New field 'node_group_names' replaces it.",
},
"node_group_names": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
},
},
MaxItems: 1,
},
},
},
},
"tags": tagsSchema(),
},
}
}