internal/fleet/enrollment_tokens/read.go (50 lines of code) (raw):

package enrollment_tokens import ( "context" "github.com/elastic/terraform-provider-elasticstack/generated/kbapi" "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 *enrollmentTokensDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { var model enrollmentTokensModel 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 } var tokens []kbapi.EnrollmentApiKey policyID := model.PolicyID.ValueString() if policyID == "" { tokens, diags = fleet.GetEnrollmentTokens(ctx, client) } else { tokens, diags = fleet.GetEnrollmentTokensByPolicy(ctx, client, policyID) } resp.Diagnostics.Append(diags...) if resp.Diagnostics.HasError() { return } if policyID != "" { model.ID = types.StringValue(policyID) } else { hash, err := utils.StringToHash(client.URL) if err != nil { resp.Diagnostics.AddError(err.Error(), "") return } model.ID = types.StringPointerValue(hash) } diags = model.populateFromAPI(ctx, tokens) resp.Diagnostics.Append(diags...) if resp.Diagnostics.HasError() { return } diags = resp.State.Set(ctx, model) resp.Diagnostics.Append(diags...) }