in internal/provider/profile_resource.go [201:297]
func (r *profileResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// Retrieve values from plan
var plan profileResourceModel
diags := req.Plan.Get(ctx, &plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
reqSlp := backupdr.SlpRest{
Name: plan.Name.ValueString(),
Description: plan.Description.ValueString(),
Cid: plan.Cid.ValueString(),
Performancepool: plan.Performancepool.ValueString(),
Remotenode: plan.Remotenode.ValueString(),
Localnode: plan.Localnode.ValueString(),
}
if plan.Vaultpool != nil {
reqSlp.Vaultpool = &backupdr.DiskPoolRest{
Id: plan.Vaultpool.ID.ValueString(),
}
}
if plan.Vaultpool2 != nil {
reqSlp.Vaultpool2 = &backupdr.DiskPoolRest{
Id: plan.Vaultpool2.ID.ValueString(),
}
}
if plan.Vaultpool3 != nil {
reqSlp.Vaultpool3 = &backupdr.DiskPoolRest{
Id: plan.Vaultpool3.ID.ValueString(),
}
}
if plan.Vaultpool4 != nil {
reqSlp.Vaultpool4 = &backupdr.DiskPoolRest{
Id: plan.Vaultpool4.ID.ValueString(),
}
}
// Generate API request body from plan
reqBody := backupdr.SLAProfileApiCreateSlpOpts{
Body: optional.NewInterface(reqSlp),
}
// Create new slp
respObject, _, err := r.client.SLAProfileApi.CreateSlp(r.authCtx, &reqBody)
if err != nil {
resp.Diagnostics.AddError(
"Error creating SLA Profle",
"Could not create SLA Profile, unexpected error: "+err.Error(),
)
return
}
plan.Dedupasyncnode = types.StringValue(respObject.Dedupasyncnode)
plan.Remotenode = types.StringValue(respObject.Remotenode)
plan.Localnode = types.StringValue(respObject.Localnode)
plan.Performancepool = types.StringValue(respObject.Performancepool)
// Map response body to schema and populate Computed attribute values
plan.ID = types.StringValue(respObject.Id)
plan.Href = types.StringValue(respObject.Href)
plan.Clusterid = types.StringValue(respObject.Clusterid)
plan.Srcid = types.StringValue(respObject.Srcid)
plan.Stale = types.BoolValue(respObject.Stale)
plan.Createdate = types.Int64Value(respObject.Createdate)
plan.Modifydate = types.Int64Value(respObject.Modifydate)
plan.Syncdate = types.Int64Value(respObject.Syncdate)
if respObject.Vaultpool != nil {
plan.Vaultpool.Name = types.StringValue(respObject.Vaultpool.Name)
plan.Vaultpool.Href = types.StringValue(respObject.Vaultpool.Href)
}
if respObject.Vaultpool2 != nil {
plan.Vaultpool2.Name = types.StringValue(respObject.Vaultpool2.Name)
plan.Vaultpool2.Href = types.StringValue(respObject.Vaultpool2.Href)
}
if respObject.Vaultpool3 != nil {
plan.Vaultpool3.Name = types.StringValue(respObject.Vaultpool3.Name)
plan.Vaultpool3.Href = types.StringValue(respObject.Vaultpool3.Href)
}
if respObject.Vaultpool4 != nil {
plan.Vaultpool4.Name = types.StringValue(respObject.Vaultpool4.Name)
plan.Vaultpool4.Href = types.StringValue(respObject.Vaultpool4.Href)
}
// Set state to fully populated data
diags = resp.State.Set(ctx, plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
}