Skip to content

Commit 8a64b68

Browse files
Copilottobio
andcommitted
Address all PR feedback: refactor models, clean API functions, improve validation
Co-authored-by: tobio <444668+tobio@users.noreply.github.com>
1 parent 0bec889 commit 8a64b68

File tree

7 files changed

+130
-272
lines changed

7 files changed

+130
-272
lines changed

docs/resources/elasticsearch_alias.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
page_title: "elasticstack_elasticsearch_alias Resource - terraform-provider-elasticstack"
55
subcategory: "Elasticsearch"
66
description: |-
7-
Manages an Elasticsearch alias. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html
7+
Manages an Elasticsearch alias. See the alias documentation for more details.
88
---
99

1010
# elasticstack_elasticsearch_alias (Resource)
1111

12-
Manages an Elasticsearch alias. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html
12+
Manages an Elasticsearch alias. See the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html">alias documentation</a> for more details.
1313

1414

1515

internal/clients/elasticsearch/index.go

Lines changed: 4 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -604,9 +604,9 @@ func GetAlias(ctx context.Context, apiClient *clients.ApiClient, aliasName strin
604604
return nil, nil
605605
}
606606

607-
diags := diagutil.CheckError(res, fmt.Sprintf("Unable to get alias '%s'", aliasName))
608-
if diagutil.FrameworkDiagsFromSDK(diags).HasError() {
609-
return nil, diagutil.FrameworkDiagsFromSDK(diags)
607+
diags := diagutil.CheckErrorFromFW(res, fmt.Sprintf("Unable to get alias '%s'", aliasName))
608+
if diags.HasError() {
609+
return nil, diags
610610
}
611611

612612
indices := make(map[string]models.Index)
@@ -619,118 +619,6 @@ func GetAlias(ctx context.Context, apiClient *clients.ApiClient, aliasName strin
619619
return indices, nil
620620
}
621621

622-
func PutAlias(ctx context.Context, apiClient *clients.ApiClient, aliasName string, indices []string, alias *models.IndexAlias) fwdiags.Diagnostics {
623-
esClient, err := apiClient.GetESClient()
624-
if err != nil {
625-
return fwdiags.Diagnostics{
626-
fwdiags.NewErrorDiagnostic(err.Error(), err.Error()),
627-
}
628-
}
629-
630-
// Build the request body for index aliases API
631-
var actions []map[string]interface{}
632-
633-
for _, index := range indices {
634-
addAction := map[string]interface{}{
635-
"add": map[string]interface{}{
636-
"index": index,
637-
"alias": aliasName,
638-
},
639-
}
640-
641-
// Only include non-empty optional fields in the add action
642-
addActionDetails := addAction["add"].(map[string]interface{})
643-
644-
if alias.Filter != nil {
645-
addActionDetails["filter"] = alias.Filter
646-
}
647-
if alias.IndexRouting != "" {
648-
addActionDetails["index_routing"] = alias.IndexRouting
649-
}
650-
if alias.SearchRouting != "" {
651-
addActionDetails["search_routing"] = alias.SearchRouting
652-
}
653-
if alias.Routing != "" {
654-
addActionDetails["routing"] = alias.Routing
655-
}
656-
if alias.IsHidden {
657-
addActionDetails["is_hidden"] = alias.IsHidden
658-
}
659-
if alias.IsWriteIndex {
660-
addActionDetails["is_write_index"] = alias.IsWriteIndex
661-
}
662-
663-
actions = append(actions, addAction)
664-
}
665-
666-
aliasActions := map[string]interface{}{
667-
"actions": actions,
668-
}
669-
670-
aliasBytes, err := json.Marshal(aliasActions)
671-
if err != nil {
672-
return fwdiags.Diagnostics{
673-
fwdiags.NewErrorDiagnostic(err.Error(), err.Error()),
674-
}
675-
}
676-
677-
res, err := esClient.Indices.UpdateAliases(
678-
bytes.NewReader(aliasBytes),
679-
esClient.Indices.UpdateAliases.WithContext(ctx),
680-
)
681-
if err != nil {
682-
return fwdiags.Diagnostics{
683-
fwdiags.NewErrorDiagnostic(err.Error(), err.Error()),
684-
}
685-
}
686-
defer res.Body.Close()
687-
688-
diags := diagutil.CheckError(res, fmt.Sprintf("Unable to create/update alias '%s'", aliasName))
689-
return diagutil.FrameworkDiagsFromSDK(diags)
690-
}
691-
692-
func DeleteAlias(ctx context.Context, apiClient *clients.ApiClient, aliasName string, indices []string) fwdiags.Diagnostics {
693-
esClient, err := apiClient.GetESClient()
694-
if err != nil {
695-
return fwdiags.Diagnostics{
696-
fwdiags.NewErrorDiagnostic(err.Error(), err.Error()),
697-
}
698-
}
699-
700-
// Use UpdateAliases API for deletion to handle multiple indices
701-
aliasActions := map[string]interface{}{
702-
"actions": []map[string]interface{}{
703-
{
704-
"remove": map[string]interface{}{
705-
"indices": indices,
706-
"alias": aliasName,
707-
},
708-
},
709-
},
710-
}
711-
712-
aliasBytes, err := json.Marshal(aliasActions)
713-
if err != nil {
714-
return fwdiags.Diagnostics{
715-
fwdiags.NewErrorDiagnostic(err.Error(), err.Error()),
716-
}
717-
}
718-
719-
res, err := esClient.Indices.UpdateAliases(
720-
bytes.NewReader(aliasBytes),
721-
esClient.Indices.UpdateAliases.WithContext(ctx),
722-
)
723-
if err != nil {
724-
return fwdiags.Diagnostics{
725-
fwdiags.NewErrorDiagnostic(err.Error(), err.Error()),
726-
}
727-
}
728-
defer res.Body.Close()
729-
730-
diags := diagutil.CheckError(res, fmt.Sprintf("Unable to delete alias '%s'", aliasName))
731-
return diagutil.FrameworkDiagsFromSDK(diags)
732-
}
733-
734622
// AliasAction represents a single action in an atomic alias update operation
735623
type AliasAction struct {
736624
Type string // "add" or "remove"
@@ -817,8 +705,7 @@ func UpdateAliasesAtomic(ctx context.Context, apiClient *clients.ApiClient, acti
817705
}
818706
defer res.Body.Close()
819707

820-
diags := diagutil.CheckError(res, "Unable to update aliases atomically")
821-
return diagutil.FrameworkDiagsFromSDK(diags)
708+
return diagutil.CheckErrorFromFW(res, "Unable to update aliases atomically")
822709
}
823710

824711
func PutIngestPipeline(ctx context.Context, apiClient *clients.ApiClient, pipeline *models.IngestPipeline) diag.Diagnostics {

internal/elasticsearch/index/alias/delete.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,5 @@ func (r *aliasResource) Delete(ctx context.Context, req resource.DeleteRequest,
3737
// Remove the alias from all indices
3838
if len(actions) > 0 {
3939
resp.Diagnostics.Append(elasticsearch.UpdateAliasesAtomic(ctx, r.client, actions)...)
40-
if resp.Diagnostics.HasError() {
41-
return
42-
}
4340
}
4441
}

0 commit comments

Comments
 (0)