in ec/ecresource/projectresource/elasticsearch.go [247:337]
func (es elasticsearchApi) Read(ctx context.Context, id string, model resource_elasticsearch_project.ElasticsearchProjectModel) (bool, resource_elasticsearch_project.ElasticsearchProjectModel, diag.Diagnostics) {
resp, err := es.client.GetElasticsearchProjectWithResponse(ctx, id)
if err != nil {
return false, model, diag.Diagnostics{
diag.NewErrorDiagnostic(err.Error(), err.Error()),
}
}
if resp.HTTPResponse != nil && resp.HTTPResponse.StatusCode == http.StatusNotFound {
return false, model, nil
}
if resp.JSON200 == nil {
return false, model, diag.Diagnostics{
diag.NewErrorDiagnostic(
"Failed to read elasticsearch_project",
fmt.Sprintf("The API request failed with: %d %s\n%s",
resp.StatusCode(),
resp.Status(),
resp.Body),
),
}
}
model.Id = basetypes.NewStringValue(id)
model.Alias = basetypes.NewStringValue(reformatAlias(resp.JSON200.Alias, id))
model.CloudId = basetypes.NewStringValue(resp.JSON200.CloudId)
endpoints, diags := resource_elasticsearch_project.NewEndpointsValue(
model.Endpoints.AttributeTypes(ctx),
map[string]attr.Value{
"elasticsearch": basetypes.NewStringValue(resp.JSON200.Endpoints.Elasticsearch),
"kibana": basetypes.NewStringValue(resp.JSON200.Endpoints.Kibana),
},
)
if diags.HasError() {
return false, model, diags
}
model.Endpoints = endpoints
metadataValues := map[string]attr.Value{
"created_at": basetypes.NewStringValue(resp.JSON200.Metadata.CreatedAt.String()),
"created_by": basetypes.NewStringValue(resp.JSON200.Metadata.CreatedBy),
"organization_id": basetypes.NewStringValue(resp.JSON200.Metadata.OrganizationId),
"suspended_at": basetypes.NewStringNull(),
"suspended_reason": basetypes.NewStringPointerValue(resp.JSON200.Metadata.SuspendedReason),
}
if resp.JSON200.Metadata.SuspendedAt != nil {
metadataValues["suspended_at"] = basetypes.NewStringValue(resp.JSON200.Metadata.SuspendedAt.String())
}
metadata, diags := resource_elasticsearch_project.NewMetadataValue(
model.Metadata.AttributeTypes(ctx),
metadataValues,
)
if diags.HasError() {
return false, model, diags
}
model.Metadata = metadata
model.Name = basetypes.NewStringValue(resp.JSON200.Name)
model.OptimizedFor = basetypes.NewStringValue(string(resp.JSON200.OptimizedFor))
model.RegionId = basetypes.NewStringValue(resp.JSON200.RegionId)
model.Type = basetypes.NewStringValue(string(resp.JSON200.Type))
searchLakeValues := map[string]attr.Value{
"boost_window": basetypes.NewInt64Null(),
"search_power": basetypes.NewInt64Null(),
}
if resp.JSON200.SearchLake != nil {
if resp.JSON200.SearchLake.BoostWindow != nil {
searchLakeValues["boost_window"] = basetypes.NewInt64Value(int64(*resp.JSON200.SearchLake.BoostWindow))
}
if resp.JSON200.SearchLake.SearchPower != nil {
searchLakeValues["search_power"] = basetypes.NewInt64Value(int64(*resp.JSON200.SearchLake.SearchPower))
}
}
searchLake, diags := resource_elasticsearch_project.NewSearchLakeValue(
model.SearchLake.AttributeTypes(ctx),
searchLakeValues,
)
if diags.HasError() {
return false, model, nil
}
model.SearchLake = searchLake
return true, model, nil
}