package provider import ( "context" "errors" "fmt" "regexp" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" elastic7 "github.com/olivere/elastic/v7" elastic6 "gopkg.in/olivere/elastic.v6" ) const ( testAccOpensearchIndex = ` resource "opensearch_index" "test" { name = "terraform-test" number_of_shards = 1 number_of_replicas = 1 } ` testAccOpensearchIndexUpdate1 = ` resource "opensearch_index" "test" { name = "terraform-test" number_of_shards = 1 number_of_replicas = 2 number_of_routing_shards = 1 routing_partition_size = 1 refresh_interval = "10s" max_result_window = 1000 max_refresh_listeners = 10 blocks_read_only = false blocks_read = false blocks_write = false blocks_metadata = false search_slowlog_threshold_query_warn = "5s" search_slowlog_threshold_fetch_warn = "5s" search_slowlog_level = "warn" indexing_slowlog_threshold_index_warn = "5s" indexing_slowlog_level = "warn" } ` testAccOpensearchIndexAnalysis = ` resource "opensearch_index" "test" { name = "terraform-test" number_of_shards = 1 number_of_replicas = 1 analysis_analyzer = jsonencode({ default = { filter = [ "lowercase", "asciifolding", ] tokenizer = "standard" } full_text_search = { filter = [ "lowercase", "asciifolding", ] tokenizer = "custom_ngram_tokenizer" } }) analysis_tokenizer = jsonencode({ custom_ngram_tokenizer = { max_gram = "4" min_gram = "3" type = "ngram" } }) analysis_filter = jsonencode({ my_filter_shingle = { type = "shingle" max_shingle_size = 2 min_shingle_size = 2 output_unigrams = false } }) analysis_char_filter = jsonencode({ my_char_filter_apostrophe = { type = "mapping" mappings = ["'=>"] } }) analysis_normalizer = jsonencode({ my_normalizer = { type = "custom" filter = ["lowercase", "asciifolding"] } }) } ` testAccOpensearchIndexInvalid = ` resource "opensearch_index" "test" { name = "terraform-test" number_of_shards = 1 number_of_replicas = 1 mappings = < 0 { return fmt.Errorf("rollover alias %q still exists", alias) } return nil } }