internal/fleet/integration_ds/read.go (39 lines of code) (raw):
package integration_ds
import (
"context"
"github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet"
"github.com/elastic/terraform-provider-elasticstack/internal/utils"
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/types"
)
func (d *integrationDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
var model integrationDataSourceModel
diags := req.Config.Get(ctx, &model)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
client, err := d.client.GetFleetClient()
if err != nil {
resp.Diagnostics.AddError(err.Error(), "")
return
}
name := model.Name.ValueString()
prerelease := model.Prerelease.ValueBool()
packages, diags := fleet.GetPackages(ctx, client, prerelease)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
if model.ID.ValueString() == "" {
hash, err := utils.StringToHash(name)
if err != nil {
resp.Diagnostics.AddError(err.Error(), "")
return
}
model.ID = types.StringPointerValue(hash)
}
model.populateFromAPI(name, packages)
diags = resp.State.Set(ctx, model)
resp.Diagnostics.Append(diags...)
}