internal/kibana/synthetics/private_location/read.go (46 lines of code) (raw):
package private_location
import (
"context"
"errors"
"fmt"
"github.com/disaster37/go-kibana-rest/v8/kbapi"
"github.com/elastic/terraform-provider-elasticstack/internal/kibana/synthetics"
"github.com/hashicorp/terraform-plugin-framework/resource"
)
func (r *Resource) Read(ctx context.Context, request resource.ReadRequest, response *resource.ReadResponse) {
kibanaClient := synthetics.GetKibanaClient(r, response.Diagnostics)
if kibanaClient == nil {
return
}
var state tfModelV0
diags := request.State.Get(ctx, &state)
response.Diagnostics.Append(diags...)
if response.Diagnostics.HasError() {
return
}
resourceId := state.ID.ValueString()
compositeId, dg := tryReadCompositeId(resourceId)
response.Diagnostics.Append(dg...)
if response.Diagnostics.HasError() {
return
}
if compositeId != nil {
resourceId = compositeId.ResourceId
}
result, err := kibanaClient.KibanaSynthetics.PrivateLocation.Get(ctx, resourceId)
if err != nil {
var apiError *kbapi.APIError
if errors.As(err, &apiError) && apiError.Code == 404 {
response.State.RemoveResource(ctx)
return
}
response.Diagnostics.AddError(fmt.Sprintf("Failed to get private location `%s`", resourceId), err.Error())
return
}
state = toModelV0(*result)
// Set refreshed state
diags = response.State.Set(ctx, &state)
response.Diagnostics.Append(diags...)
if response.Diagnostics.HasError() {
return
}
}