internal/elasticsearch/index/data_stream_lifecycle/read.go (46 lines of code) (raw):
package data_stream_lifecycle
import (
"context"
"github.com/elastic/terraform-provider-elasticstack/internal/clients"
"github.com/elastic/terraform-provider-elasticstack/internal/clients/elasticsearch"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/resource"
)
func (r *Resource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
var stateModel tfModel
resp.Diagnostics.Append(req.State.Get(ctx, &stateModel)...)
if resp.Diagnostics.HasError() {
return
}
client, diags := clients.MaybeNewApiClientFromFrameworkResource(ctx, stateModel.ElasticsearchConnection, r.client)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
finalModel, diags := r.read(ctx, client, stateModel)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
if finalModel == nil {
resp.State.RemoveResource(ctx)
return
}
resp.Diagnostics.Append(resp.State.Set(ctx, *finalModel)...)
}
func (r *Resource) read(ctx context.Context, client *clients.ApiClient, model tfModel) (*tfModel, diag.Diagnostics) {
var diags diag.Diagnostics
compId, diags := model.GetID()
if diags.HasError() {
return nil, diags
}
ds, diags := elasticsearch.GetDataStreamLifecycle(ctx, client, compId.ResourceId, model.ExpandWildcards.ValueString())
if diags.HasError() {
return nil, diags
}
if ds == nil || len(*ds) == 0 {
return nil, nil
}
diags.Append(model.populateFromAPI(ctx, *ds)...)
return &model, diags
}