in alibabacloudstack/resource_apsarastack_elasticsearch_on_k8s_instance.go [23:237]
func resourceAlibabacloudStackElasticsearchOnk8s() *schema.Resource {
resource := &schema.Resource{
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(120 * time.Minute),
Update: schema.DefaultTimeout(120 * time.Minute),
Delete: schema.DefaultTimeout(120 * time.Minute),
},
Schema: map[string]*schema.Schema{
// Basic instance information
"description": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validation.StringMatch(regexp.MustCompile(`^[\w\-.]{0,30}$`), "be 0 to 30 characters in length and can contain numbers, letters, underscores, (_) and hyphens (-). It must start with a letter, a number or Chinese character."),
Computed: true,
},
"vswitch_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"password": {
Type: schema.TypeString,
Sensitive: true,
Optional: true,
},
"kms_encrypted_password": {
Type: schema.TypeString,
Optional: true,
DiffSuppressFunc: kmsDiffSuppressFunc,
},
"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,
},
"version": {
Type: schema.TypeString,
Required: true,
DiffSuppressFunc: esVersionDiffSuppressFunc,
ForceNew: true,
},
"tags": tagsSchema(),
// Life cycle
"instance_charge_type": {
Type: schema.TypeString,
ValidateFunc: validation.StringInSlice([]string{string(common.PrePaid), string(common.PostPaid)}, false),
Default: PostPaid,
Optional: true,
},
"period": {
Type: schema.TypeInt,
ValidateFunc: validation.IntInSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36}),
Optional: true,
Default: 1,
DiffSuppressFunc: PostPaidDiffSuppressFunc,
},
// Data node configuration
"data_node_amount": {
Type: schema.TypeInt,
Required: true,
ValidateFunc: validation.IntBetween(2, 50),
},
"data_node_spec": {
Type: schema.TypeString,
Required: true,
},
"data_node_disk_size": {
Type: schema.TypeInt,
Required: true,
},
"data_node_disk_type": {
Type: schema.TypeString,
Required: true,
},
"data_node_disk_encrypted": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
Default: false,
},
"private_whitelist": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Computed: true,
},
"enable_public": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"public_whitelist": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Computed: true,
DiffSuppressFunc: elasticsearchEnablePublicDiffSuppressFunc,
},
"master_node_spec": {
Type: schema.TypeString,
Optional: true,
},
// Client node configuration
"client_node_amount": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: validation.IntBetween(2, 25),
},
"client_node_spec": {
Type: schema.TypeString,
Optional: true,
},
"protocol": {
Type: schema.TypeString,
Optional: true,
Default: "HTTP",
ValidateFunc: validation.StringInSlice([]string{"HTTP", "HTTPS"}, false),
},
"domain": {
Type: schema.TypeString,
Computed: true,
},
"port": {
Type: schema.TypeInt,
Computed: true,
},
"status": {
Type: schema.TypeString,
Computed: true,
},
// Kibana node configuration
"kibana_domain": {
Type: schema.TypeString,
Computed: true,
},
"kibana_port": {
Type: schema.TypeInt,
Computed: true,
},
"enable_kibana_public_network": {
Type: schema.TypeBool,
Optional: true,
Default: true,
},
"kibana_whitelist": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Computed: true,
DiffSuppressFunc: elasticsearchEnableKibanaPublicDiffSuppressFunc,
},
"enable_kibana_private_network": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"kibana_private_whitelist": {
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Computed: true,
DiffSuppressFunc: elasticsearchEnableKibanaPrivateDiffSuppressFunc,
},
"zone_count": {
Type: schema.TypeInt,
ForceNew: true,
Optional: true,
ValidateFunc: validation.IntBetween(1, 3),
Default: 1,
},
"resource_group_id": {
Type: schema.TypeString,
ForceNew: true,
Optional: true,
Computed: true,
},
"setting_config": {
Type: schema.TypeMap,
Optional: true,
Computed: true,
},
},
}
setResourceFunc(resource, resourceAlibabacloudStackElasticsearchOnk8sCreate, resourceAlibabacloudStackElasticsearchOnk8sRead, resourceAlibabacloudStackElasticsearchOnk8sUpdate, resourceAlibabacloudStackElasticsearchOnk8sDelete)
return resource
}