internal/kibana/synthetics/update.go (45 lines of code) (raw):
package synthetics
import (
"context"
"fmt"
"github.com/disaster37/go-kibana-rest/v8/kbapi"
"github.com/hashicorp/terraform-plugin-framework/resource"
)
func (r *Resource) Update(ctx context.Context, request resource.UpdateRequest, response *resource.UpdateResponse) {
kibanaClient := GetKibanaClient(r, response.Diagnostics)
if kibanaClient == nil {
return
}
plan := new(tfModelV0)
diags := request.Plan.Get(ctx, plan)
response.Diagnostics.Append(diags...)
if response.Diagnostics.HasError() {
return
}
input, diags := plan.toKibanaAPIRequest(ctx)
response.Diagnostics.Append(diags...)
if response.Diagnostics.HasError() {
return
}
monitorId, dg := GetCompositeId(plan.ID.ValueString())
response.Diagnostics.Append(dg...)
if response.Diagnostics.HasError() {
return
}
namespace := plan.SpaceID.ValueString()
result, err := kibanaClient.KibanaSynthetics.Monitor.Update(ctx, kbapi.MonitorID(monitorId.ResourceId), input.config, input.fields, namespace)
if err != nil {
response.Diagnostics.AddError(fmt.Sprintf("Failed to update Kibana monitor `%s`, namespace %s", input.config.Name, namespace), err.Error())
return
}
plan, diags = plan.toModelV0(ctx, result)
response.Diagnostics.Append(diags...)
if response.Diagnostics.HasError() {
return
}
diags = response.State.Set(ctx, plan)
response.Diagnostics.Append(diags...)
if response.Diagnostics.HasError() {
return
}
}