internal/elasticsearch/index/data_stream_lifecycle/create.go (49 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/elastic/terraform-provider-elasticstack/internal/utils" "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/resource" "github.com/hashicorp/terraform-plugin-framework/tfsdk" "github.com/hashicorp/terraform-plugin-framework/types" ) func (r Resource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { resp.Diagnostics.Append(r.create(ctx, req.Plan, &resp.State)...) } func (r Resource) create(ctx context.Context, plan tfsdk.Plan, state *tfsdk.State) diag.Diagnostics { var planModel tfModel diags := plan.Get(ctx, &planModel) if diags.HasError() { return diags } client, d := clients.MaybeNewApiClientFromFrameworkResource(ctx, planModel.ElasticsearchConnection, r.client) diags.Append(d...) if diags.HasError() { return diags } name := planModel.Name.ValueString() id, sdkDiags := client.ID(ctx, name) if sdkDiags.HasError() { diags.Append(utils.FrameworkDiagsFromSDK(sdkDiags)...) return diags } planModel.ID = types.StringValue(id.String()) apiModel, d := planModel.toAPIModel(ctx) diags.Append(d...) if diags.HasError() { return diags } diags.Append(elasticsearch.PutDataStreamLifecycle(ctx, client, name, planModel.ExpandWildcards.ValueString(), apiModel)...) if diags.HasError() { return diags } finalModel, d := r.read(ctx, client, planModel) diags.Append(d...) if diags.HasError() { return diags } diags.Append(state.Set(ctx, finalModel)...) return diags }