internal/fleet/agent_policy/create.go (41 lines of code) (raw):
package agent_policy
import (
"context"
"github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet"
"github.com/hashicorp/terraform-plugin-framework/resource"
)
func (r *agentPolicyResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
var planModel agentPolicyModel
diags := req.Plan.Get(ctx, &planModel)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
client, err := r.client.GetFleetClient()
if err != nil {
resp.Diagnostics.AddError(err.Error(), "")
return
}
sVersion, e := r.client.ServerVersion(ctx)
if e != nil {
return
}
body, diags := planModel.toAPICreateModel(ctx, sVersion)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
sysMonitoring := planModel.SysMonitoring.ValueBool()
policy, diags := fleet.CreateAgentPolicy(ctx, client, body, sysMonitoring)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
diags = planModel.populateFromAPI(ctx, policy)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
resp.State.Set(ctx, planModel)
resp.Diagnostics.Append(diags...)
}