From 12ee583c59ffb0acac0acd2f17ba008a794955a2 Mon Sep 17 00:00:00 2001 From: premkiran Date: Wed, 15 Nov 2023 22:57:39 +0530 Subject: [PATCH 1/3] [112] making use of _template endpoint (legacy index templates) for older opensearch versions (<= 1.0.0) Signed-off-by: premkiran --- .../resource_opensearch_index_template.go | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/provider/resource_opensearch_index_template.go b/provider/resource_opensearch_index_template.go index 69f5e37..e8e3e9f 100644 --- a/provider/resource_opensearch_index_template.go +++ b/provider/resource_opensearch_index_template.go @@ -5,12 +5,15 @@ import ( "encoding/json" "log" + "github.com/hashicorp/go-version" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" elastic7 "github.com/olivere/elastic/v7" elastic6 "gopkg.in/olivere/elastic.v6" ) +var maximumOSTemplateVersion, _ = version.NewVersion("1.0.0") + func resourceOpensearchIndexTemplate() *schema.Resource { return &schema.Resource{ Description: "Provides an Opensearch index template resource.", @@ -53,10 +56,12 @@ func resourceOpensearchIndexTemplateRead(d *schema.ResourceData, meta interface{ var result string var err error + osClient, err := getClient(meta.(*ProviderConf)) if err != nil { return err } + result, err = elastic7IndexGetTemplate(osClient, id) if err != nil { if elastic7.IsNotFound(err) || elastic6.IsNotFound(err) { @@ -122,17 +127,31 @@ func resourceOpensearchPutIndexTemplate(d *schema.ResourceData, meta interface{} body := d.Get("body").(string) var err error + var openSearchVersion *version.Version + + providerConf := meta.(*ProviderConf) osClient, err := getClient(meta.(*ProviderConf)) if err != nil { return err } - err = elastic7IndexPutTemplate(osClient, name, body, create) + + openSearchVersion, err = version.NewVersion(providerConf.osVersion) + if err == nil { + err = elastic7IndexPutTemplate(openSearchVersion, osClient, name, body, create) + } return err } -func elastic7IndexPutTemplate(client *elastic7.Client, name string, body string, create bool) error { - _, err := client.IndexPutIndexTemplate(name).BodyString(body).Create(create).Do(context.TODO()) +func elastic7IndexPutTemplate(openSearchVersion *version.Version, client *elastic7.Client, name string, body string, create bool) error { + var err error + + // making use of _template endpoint (legacy index templates) for older opensearch versions (<= 1.0.0) + if openSearchVersion.LessThanOrEqual(maximumOSTemplateVersion) { + _, err = client.IndexPutTemplate(name).BodyString(body).Create(create).Do(context.TODO()) + } else { + _, err = client.IndexPutIndexTemplate(name).BodyString(body).Create(create).Do(context.TODO()) + } return err } From 8c39f0557269db1d17985f22b09b0db0265dd785 Mon Sep 17 00:00:00 2001 From: premkiran Date: Wed, 15 Nov 2023 23:45:57 +0530 Subject: [PATCH 2/3] [112] making use of LessThan with 2.0.0 when deciding the opensearch version for using _template endpoint Signed-off-by: premkiran --- provider/resource_opensearch_index_template.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/provider/resource_opensearch_index_template.go b/provider/resource_opensearch_index_template.go index e8e3e9f..d58784a 100644 --- a/provider/resource_opensearch_index_template.go +++ b/provider/resource_opensearch_index_template.go @@ -12,7 +12,7 @@ import ( elastic6 "gopkg.in/olivere/elastic.v6" ) -var maximumOSTemplateVersion, _ = version.NewVersion("1.0.0") +var maximumOSTemplateVersion, _ = version.NewVersion("2.0.0") func resourceOpensearchIndexTemplate() *schema.Resource { return &schema.Resource{ @@ -147,7 +147,7 @@ func elastic7IndexPutTemplate(openSearchVersion *version.Version, client *elasti var err error // making use of _template endpoint (legacy index templates) for older opensearch versions (<= 1.0.0) - if openSearchVersion.LessThanOrEqual(maximumOSTemplateVersion) { + if openSearchVersion.LessThan(maximumOSTemplateVersion) { _, err = client.IndexPutTemplate(name).BodyString(body).Create(create).Do(context.TODO()) } else { _, err = client.IndexPutIndexTemplate(name).BodyString(body).Create(create).Do(context.TODO()) From 5efa0267a54d1ddd532706c3e581cf37ffb02c35 Mon Sep 17 00:00:00 2001 From: premkiran Date: Thu, 16 Nov 2023 00:10:48 +0530 Subject: [PATCH 3/3] [112] comment fix Signed-off-by: premkiran --- provider/resource_opensearch_index_template.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/resource_opensearch_index_template.go b/provider/resource_opensearch_index_template.go index d58784a..f00a216 100644 --- a/provider/resource_opensearch_index_template.go +++ b/provider/resource_opensearch_index_template.go @@ -146,7 +146,7 @@ func resourceOpensearchPutIndexTemplate(d *schema.ResourceData, meta interface{} func elastic7IndexPutTemplate(openSearchVersion *version.Version, client *elastic7.Client, name string, body string, create bool) error { var err error - // making use of _template endpoint (legacy index templates) for older opensearch versions (<= 1.0.0) + // making use of _template endpoint (legacy index templates) for older opensearch versions (< 2.0.0) if openSearchVersion.LessThan(maximumOSTemplateVersion) { _, err = client.IndexPutTemplate(name).BodyString(body).Create(create).Do(context.TODO()) } else {