internal/kibana/data_view/update.go (37 lines of code) (raw):
package data_view
import (
"context"
"github.com/elastic/terraform-provider-elasticstack/internal/clients/kibana_oapi"
"github.com/hashicorp/terraform-plugin-framework/resource"
)
func (r *DataViewResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
var planModel dataViewModel
diags := req.Plan.Get(ctx, &planModel)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
client, err := r.client.GetKibanaOapiClient()
if err != nil {
resp.Diagnostics.AddError(err.Error(), "")
return
}
body, diags := planModel.toAPIUpdateModel(ctx)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
viewID, spaceID := planModel.getViewIDAndSpaceID()
dataView, diags := kibana_oapi.UpdateDataView(ctx, client, spaceID, viewID, body)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
diags = planModel.populateFromAPI(ctx, dataView, spaceID)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
diags = resp.State.Set(ctx, planModel)
resp.Diagnostics.Append(diags...)
}