Skip to content

Commit 7422aff

Browse files
authored
INTDMB-223: update search index to sdk v2 (#501)
* added fix to search index * update search index tests to sdk v2
1 parent 58c2e5c commit 7422aff

5 files changed

+72
-73
lines changed

mongodbatlas/data_source_mongodbatlas_search_index.go

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ package mongodbatlas
22

33
import (
44
"context"
5-
"errors"
6-
"fmt"
75

6+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
87
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
98
)
109

1110
func dataSourceMongoDBAtlasSearchIndex() *schema.Resource {
1211
return &schema.Resource{
13-
Read: dataSourceMongoDBAtlasSearchIndexRead,
14-
Schema: returnSearchIndexDSSchema(),
12+
ReadContext: dataSourceMongoDBAtlasSearchIndexRead,
13+
Schema: returnSearchIndexDSSchema(),
1514
}
1615
}
1716

@@ -71,7 +70,7 @@ func returnSearchIndexDSSchema() map[string]*schema.Schema {
7170
}
7271
}
7372

74-
func dataSourceMongoDBAtlasSearchIndexRead(d *schema.ResourceData, meta interface{}) error {
73+
func dataSourceMongoDBAtlasSearchIndexRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
7574
// Get client connection.
7675
conn := meta.(*MongoDBClient).Atlas
7776

@@ -80,20 +79,20 @@ func dataSourceMongoDBAtlasSearchIndexRead(d *schema.ResourceData, meta interfac
8079
indexID, indexIDOk := d.GetOk("index_id")
8180

8281
if !(projectIDOk && clusterNameOK && indexIDOk) {
83-
return errors.New("project_id, cluster_name and index_id must be configured")
82+
return diag.Errorf("project_id, cluster_name and index_id must be configured")
8483
}
8584

86-
searchIndex, _, err := conn.Search.GetIndex(context.Background(), projectID.(string), clusterName.(string), indexID.(string))
85+
searchIndex, _, err := conn.Search.GetIndex(ctx, projectID.(string), clusterName.(string), indexID.(string))
8786
if err != nil {
88-
return fmt.Errorf("error getting search index information: %s", err)
87+
return diag.Errorf("error getting search index information: %s", err)
8988
}
9089

9190
if err := d.Set("index_id", indexID); err != nil {
92-
return fmt.Errorf("error setting `index_id` for search index (%s): %s", d.Id(), err)
91+
return diag.Errorf("error setting `index_id` for search index (%s): %s", d.Id(), err)
9392
}
9493

9594
if err := d.Set("analyzer", searchIndex.Analyzer); err != nil {
96-
return fmt.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
95+
return diag.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
9796
}
9897

9998
searchIndexCustomAnalyzers, err := flattenSearchIndexCustomAnalyzers(searchIndex.Analyzers)
@@ -102,36 +101,36 @@ func dataSourceMongoDBAtlasSearchIndexRead(d *schema.ResourceData, meta interfac
102101
}
103102

104103
if err := d.Set("analyzers", searchIndexCustomAnalyzers); err != nil {
105-
return fmt.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
104+
return diag.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
106105
}
107106

108107
if err := d.Set("collection_name", searchIndex.CollectionName); err != nil {
109-
return fmt.Errorf("error setting `collectionName` for search index (%s): %s", d.Id(), err)
108+
return diag.Errorf("error setting `collectionName` for search index (%s): %s", d.Id(), err)
110109
}
111110

112111
if err := d.Set("database", searchIndex.Database); err != nil {
113-
return fmt.Errorf("error setting `database` for search index (%s): %s", d.Id(), err)
112+
return diag.Errorf("error setting `database` for search index (%s): %s", d.Id(), err)
114113
}
115114

116115
if err := d.Set("name", searchIndex.Name); err != nil {
117-
return fmt.Errorf("error setting `name` for search index (%s): %s", d.Id(), err)
116+
return diag.Errorf("error setting `name` for search index (%s): %s", d.Id(), err)
118117
}
119118

120119
if err := d.Set("search_analyzer", searchIndex.SearchAnalyzer); err != nil {
121-
return fmt.Errorf("error setting `searchAnalyzer` for search index (%s): %s", d.Id(), err)
120+
return diag.Errorf("error setting `searchAnalyzer` for search index (%s): %s", d.Id(), err)
122121
}
123122

124123
if err := d.Set("mappings_dynamic", searchIndex.Mappings.Dynamic); err != nil {
125-
return fmt.Errorf("error setting `mappings_dynamic` for search index (%s): %s", d.Id(), err)
124+
return diag.Errorf("error setting `mappings_dynamic` for search index (%s): %s", d.Id(), err)
126125
}
127126

128127
if searchIndex.Mappings.Fields != nil {
129128
searchIndexMappingFields, err := marshallSearchIndexMappingFields(*searchIndex.Mappings.Fields)
130129
if err != nil {
131-
return err
130+
return diag.FromErr(err)
132131
}
133132
if err := d.Set("mappings_fields", searchIndexMappingFields); err != nil {
134-
return fmt.Errorf("error setting `mappings_fields` for for search index (%s): %s", d.Id(), err)
133+
return diag.Errorf("error setting `mappings_fields` for for search index (%s): %s", d.Id(), err)
135134
}
136135
}
137136

mongodbatlas/data_source_mongodbatlas_search_index_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ func TestAccDataSourceMongoDBAtlasSearchIndexes_byID(t *testing.T) {
1717
)
1818

1919
resource.ParallelTest(t, resource.TestCase{
20-
PreCheck: func() { testAccPreCheck(t) },
21-
Providers: testAccProviders,
22-
CheckDestroy: testAccCheckMongoDBAtlasSearchIndexDestroy,
20+
PreCheck: func() { testAccPreCheck(t) },
21+
ProviderFactories: testAccProviderFactories,
22+
CheckDestroy: testAccCheckMongoDBAtlasSearchIndexDestroy,
2323
Steps: []resource.TestStep{
2424
{
2525
Config: testAccMongoDBAtlasSearchIndexDSConfig(projectID, clusterName),

mongodbatlas/data_source_mongodbatlas_search_indexes.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@ package mongodbatlas
22

33
import (
44
"context"
5-
"errors"
6-
"fmt"
75

6+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
87
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
98
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
109
matlas "go.mongodb.org/atlas/mongodbatlas"
1110
)
1211

1312
func dataSourceMongoDBAtlasSearchIndexes() *schema.Resource {
1413
return &schema.Resource{
15-
Read: dataSourceMongoDBAtlasSearchIndexesRead,
14+
ReadContext: dataSourceMongoDBAtlasSearchIndexesRead,
1615
Schema: map[string]*schema.Schema{
1716
"project_id": {
1817
Type: schema.TypeString,
@@ -53,7 +52,7 @@ func dataSourceMongoDBAtlasSearchIndexes() *schema.Resource {
5352
}
5453
}
5554

56-
func dataSourceMongoDBAtlasSearchIndexesRead(d *schema.ResourceData, meta interface{}) error {
55+
func dataSourceMongoDBAtlasSearchIndexesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
5756
// Get client connection.
5857
conn := meta.(*MongoDBClient).Atlas
5958

@@ -63,30 +62,30 @@ func dataSourceMongoDBAtlasSearchIndexesRead(d *schema.ResourceData, meta interf
6362
collectionName, collectionNameOK := d.GetOk("collection_name")
6463

6564
if !(projectIDOK && clusterNameOk && databaseNameOK && collectionNameOK) {
66-
return errors.New("project_id, cluster_name, database and collection_name must be configured")
65+
return diag.Errorf("project_id, cluster_name, database and collection_name must be configured")
6766
}
6867

6968
options := &matlas.ListOptions{
7069
PageNum: d.Get("page_num").(int),
7170
ItemsPerPage: d.Get("items_per_page").(int),
7271
}
7372

74-
searchIndexes, _, err := conn.Search.ListIndexes(context.Background(), projectID.(string), clusterName.(string), databaseName.(string), collectionName.(string), options)
73+
searchIndexes, _, err := conn.Search.ListIndexes(ctx, projectID.(string), clusterName.(string), databaseName.(string), collectionName.(string), options)
7574
if err != nil {
76-
return fmt.Errorf("error getting search indexes information: %s", err)
75+
return diag.Errorf("error getting search indexes information: %s", err)
7776
}
7877

7978
flattedSearchIndexes, err := flattenSearchIndexes(searchIndexes)
8079
if err != nil {
81-
return err
80+
return diag.FromErr(err)
8281
}
8382

8483
if err := d.Set("results", flattedSearchIndexes); err != nil {
85-
return fmt.Errorf("error setting `result` for search indexes: %s", err)
84+
return diag.Errorf("error setting `result` for search indexes: %s", err)
8685
}
8786

8887
if err := d.Set("total_count", len(searchIndexes)); err != nil {
89-
return fmt.Errorf("error setting `name`: %s", err)
88+
return diag.Errorf("error setting `name`: %s", err)
9089
}
9190

9291
d.SetId(resource.UniqueId())

mongodbatlas/resource_mongodbatlas_search_index.go

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,20 @@ import (
99
"strings"
1010

1111
"github.com/go-test/deep"
12+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1213
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1314
"github.com/mwielbut/pointy"
1415
matlas "go.mongodb.org/atlas/mongodbatlas"
1516
)
1617

1718
func resourceMongoDBAtlasSearchIndex() *schema.Resource {
1819
return &schema.Resource{
19-
Create: resourceMongoDBAtlasSearchIndexCreate,
20-
Read: resourceMongoDBAtlasSearchIndexRead,
21-
Update: resourceMongoDBAtlasSearchIndexUpdate,
22-
Delete: resourceMongoDBAtlasSearchIndexDelete,
20+
CreateContext: resourceMongoDBAtlasSearchIndexCreate,
21+
ReadContext: resourceMongoDBAtlasSearchIndexRead,
22+
UpdateContext: resourceMongoDBAtlasSearchIndexUpdate,
23+
DeleteContext: resourceMongoDBAtlasSearchIndexDelete,
2324
Importer: &schema.ResourceImporter{
24-
State: resourceMongoDBAtlasSearchIndexImportState,
25+
StateContext: resourceMongoDBAtlasSearchIndexImportState,
2526
},
2627
Schema: returnSearchIndexSchema(),
2728
}
@@ -227,7 +228,7 @@ func customAnalyzersSchema() *schema.Resource {
227228
}
228229
}
229230

230-
func resourceMongoDBAtlasSearchIndexImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
231+
func resourceMongoDBAtlasSearchIndexImportState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
231232
conn := meta.(*MongoDBClient).Atlas
232233

233234
parts := strings.SplitN(d.Id(), "--", 3)
@@ -239,7 +240,7 @@ func resourceMongoDBAtlasSearchIndexImportState(d *schema.ResourceData, meta int
239240
clusterName := parts[1]
240241
indexID := parts[2]
241242

242-
_, _, err := conn.Search.GetIndex(context.Background(), projectID, clusterName, indexID)
243+
_, _, err := conn.Search.GetIndex(ctx, projectID, clusterName, indexID)
243244
if err != nil {
244245
return nil, fmt.Errorf("couldn't import search index (%s) in projectID (%s) and Cluster (%s), error: %s", indexID, projectID, clusterName, err)
245246
}
@@ -265,33 +266,33 @@ func resourceMongoDBAtlasSearchIndexImportState(d *schema.ResourceData, meta int
265266
return []*schema.ResourceData{d}, nil
266267
}
267268

268-
func resourceMongoDBAtlasSearchIndexDelete(d *schema.ResourceData, meta interface{}) error {
269+
func resourceMongoDBAtlasSearchIndexDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
269270
// Get client connection.
270271
conn := meta.(*MongoDBClient).Atlas
271272
ids := decodeStateID(d.Id())
272273
projectID := ids["project_id"]
273274
clusterName := ids["cluster_name"]
274275
indexID := ids["index_id"]
275276

276-
_, err := conn.Search.DeleteIndex(context.Background(), projectID, clusterName, indexID)
277+
_, err := conn.Search.DeleteIndex(ctx, projectID, clusterName, indexID)
277278
if err != nil {
278-
return fmt.Errorf("error deleting search index (%s): %s", d.Get("name").(string), err)
279+
return diag.Errorf("error deleting search index (%s): %s", d.Get("name").(string), err)
279280
}
280281

281282
return nil
282283
}
283284

284-
func resourceMongoDBAtlasSearchIndexUpdate(d *schema.ResourceData, meta interface{}) error {
285+
func resourceMongoDBAtlasSearchIndexUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
285286
// Get client connection.
286287
conn := meta.(*MongoDBClient).Atlas
287288
ids := decodeStateID(d.Id())
288289
projectID := ids["project_id"]
289290
clusterName := ids["cluster_name"]
290291
indexID := ids["index_id"]
291292

292-
searchIndex, _, err := conn.Search.GetIndex(context.Background(), projectID, clusterName, indexID)
293+
searchIndex, _, err := conn.Search.GetIndex(ctx, projectID, clusterName, indexID)
293294
if err != nil {
294-
return fmt.Errorf("error getting search index information: %s", err)
295+
return diag.Errorf("error getting search index information: %s", err)
295296
}
296297

297298
if d.HasChange("analyzer") {
@@ -332,21 +333,21 @@ func resourceMongoDBAtlasSearchIndexUpdate(d *schema.ResourceData, meta interfac
332333
searchIndex.IndexID = ""
333334
_, _, err = conn.Search.UpdateIndex(context.Background(), projectID, clusterName, indexID, searchIndex)
334335
if err != nil {
335-
return fmt.Errorf("error updating search index (%s): %s", searchIndex.Name, err)
336+
return diag.Errorf("error updating search index (%s): %s", searchIndex.Name, err)
336337
}
337338

338-
return resourceMongoDBAtlasSearchIndexRead(d, meta)
339+
return resourceMongoDBAtlasSearchIndexRead(ctx, d, meta)
339340
}
340341

341-
func resourceMongoDBAtlasSearchIndexRead(d *schema.ResourceData, meta interface{}) error {
342+
func resourceMongoDBAtlasSearchIndexRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
342343
// Get client connection.
343344
conn := meta.(*MongoDBClient).Atlas
344345
ids := decodeStateID(d.Id())
345346
projectID := ids["project_id"]
346347
clusterName := ids["cluster_name"]
347348
indexID := ids["index_id"]
348349

349-
searchIndex, _, err := conn.Search.GetIndex(context.Background(), projectID, clusterName, indexID)
350+
searchIndex, _, err := conn.Search.GetIndex(ctx, projectID, clusterName, indexID)
350351
if err != nil {
351352
// case 404
352353
// deleted in the backend case
@@ -357,53 +358,53 @@ func resourceMongoDBAtlasSearchIndexRead(d *schema.ResourceData, meta interface{
357358
return nil
358359
}
359360

360-
return fmt.Errorf("error getting search index information: %s", err)
361+
return diag.Errorf("error getting search index information: %s", err)
361362
}
362363
if err := d.Set("index_id", indexID); err != nil {
363-
return fmt.Errorf("error setting `index_id` for search index (%s): %s", d.Id(), err)
364+
return diag.Errorf("error setting `index_id` for search index (%s): %s", d.Id(), err)
364365
}
365366

366367
if err := d.Set("analyzer", searchIndex.Analyzer); err != nil {
367-
return fmt.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
368+
return diag.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
368369
}
369370

370371
searchIndexCustomAnalyzers, err := flattenSearchIndexCustomAnalyzers(searchIndex.Analyzers)
371372
if err != nil {
372-
return err
373+
return diag.FromErr(err)
373374
}
374375

375376
if err := d.Set("analyzers", searchIndexCustomAnalyzers); err != nil {
376-
return fmt.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
377+
return diag.Errorf("error setting `analyzer` for search index (%s): %s", d.Id(), err)
377378
}
378379

379380
if err := d.Set("collection_name", searchIndex.CollectionName); err != nil {
380-
return fmt.Errorf("error setting `collectionName` for search index (%s): %s", d.Id(), err)
381+
return diag.Errorf("error setting `collectionName` for search index (%s): %s", d.Id(), err)
381382
}
382383

383384
if err := d.Set("database", searchIndex.Database); err != nil {
384-
return fmt.Errorf("error setting `database` for search index (%s): %s", d.Id(), err)
385+
return diag.Errorf("error setting `database` for search index (%s): %s", d.Id(), err)
385386
}
386387

387388
if err := d.Set("name", searchIndex.Name); err != nil {
388-
return fmt.Errorf("error setting `name` for search index (%s): %s", d.Id(), err)
389+
return diag.Errorf("error setting `name` for search index (%s): %s", d.Id(), err)
389390
}
390391

391392
if err := d.Set("search_analyzer", searchIndex.SearchAnalyzer); err != nil {
392-
return fmt.Errorf("error setting `searchAnalyzer` for search index (%s): %s", d.Id(), err)
393+
return diag.Errorf("error setting `searchAnalyzer` for search index (%s): %s", d.Id(), err)
393394
}
394395

395396
if err := d.Set("mappings_dynamic", searchIndex.Mappings.Dynamic); err != nil {
396-
return fmt.Errorf("error setting `mappings_dynamic` for search index (%s): %s", d.Id(), err)
397+
return diag.Errorf("error setting `mappings_dynamic` for search index (%s): %s", d.Id(), err)
397398
}
398399

399400
if searchIndex.Mappings.Fields != nil {
400401
searchIndexMappingFields, err := marshallSearchIndexMappingFields(*searchIndex.Mappings.Fields)
401402
if err != nil {
402-
return err
403+
return diag.FromErr(err)
403404
}
404405

405406
if err := d.Set("mappings_fields", searchIndexMappingFields); err != nil {
406-
return fmt.Errorf("error setting `mappings_fields` for for search index (%s): %s", d.Id(), err)
407+
return diag.Errorf("error setting `mappings_fields` for for search index (%s): %s", d.Id(), err)
407408
}
408409
}
409410

@@ -597,7 +598,7 @@ func flattenSearchIndexCharFilters(filters []*matlas.AnalyzerCharFilter) ([]map[
597598
return mapCharFilters, nil
598599
}
599600

600-
func resourceMongoDBAtlasSearchIndexCreate(d *schema.ResourceData, meta interface{}) error {
601+
func resourceMongoDBAtlasSearchIndexCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
601602
// Get client connection.
602603
conn := meta.(*MongoDBClient).Atlas
603604
projectID := d.Get("project_id").(string)
@@ -622,9 +623,9 @@ func resourceMongoDBAtlasSearchIndexCreate(d *schema.ResourceData, meta interfac
622623
Status: d.Get("status").(string),
623624
}
624625

625-
dbSearchIndexRes, _, err := conn.Search.CreateIndex(context.Background(), projectID, clusterName, searchIndexRequest)
626+
dbSearchIndexRes, _, err := conn.Search.CreateIndex(ctx, projectID, clusterName, searchIndexRequest)
626627
if err != nil {
627-
return fmt.Errorf("error creating database user: %s", err)
628+
return diag.Errorf("error creating database user: %s", err)
628629
}
629630

630631
d.SetId(encodeStateID(map[string]string{
@@ -633,7 +634,7 @@ func resourceMongoDBAtlasSearchIndexCreate(d *schema.ResourceData, meta interfac
633634
"index_id": dbSearchIndexRes.IndexID,
634635
}))
635636

636-
return resourceMongoDBAtlasSearchIndexRead(d, meta)
637+
return resourceMongoDBAtlasSearchIndexRead(ctx, d, meta)
637638
}
638639

639640
func expandCustomAnalyzers(analyzers []interface{}) []*matlas.CustomAnalyzer {

0 commit comments

Comments
 (0)