internal/fleet/integration_policy/read.go (41 lines of code) (raw):
package integration_policy
import (
"context"
"github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet"
"github.com/hashicorp/terraform-plugin-framework/resource"
)
func (r *integrationPolicyResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
var stateModel integrationPolicyModel
diags := req.State.Get(ctx, &stateModel)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
client, err := r.client.GetFleetClient()
if err != nil {
resp.Diagnostics.AddError(err.Error(), "")
return
}
policyID := stateModel.PolicyID.ValueString()
policy, diags := fleet.GetPackagePolicy(ctx, client, policyID)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
if policy == nil {
resp.State.RemoveResource(ctx)
return
}
diags = HandleRespSecrets(ctx, policy, resp.Private)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
diags = stateModel.populateFromAPI(ctx, policy)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
diags = resp.State.Set(ctx, stateModel)
resp.Diagnostics.Append(diags...)
}