in internal/provider/template_resource.go [243:333]
func (r *templateResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// Retrieve values from plan
var plan templateResourceModel
diags := req.Plan.Get(ctx, &plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
reqSlt := backupdr.SltRest{
Name: plan.Name.ValueString(),
// Immutable: plan.Immutable.ValueBool(),
Description: plan.Description.ValueString(),
Sourcename: plan.Sourcename.ValueString(),
Override: plan.Override.ValueString(),
}
for _, pol := range plan.Policies {
reqSlt.Policies = append(reqSlt.Policies, backupdr.PolicyRest{
Name: pol.Name.ValueString(),
Description: pol.Description.ValueString(),
Priority: pol.Priority.ValueString(),
Exclusiontype: pol.Exclusiontype.ValueString(),
Iscontinuous: pol.Iscontinuous.ValueBool(),
Rpo: pol.Rpo.ValueString(),
Rpom: pol.Rpom.ValueString(),
Starttime: pol.Starttime.ValueString(),
Endtime: pol.Endtime.ValueString(),
Scheduletype: pol.Scheduletype.ValueString(),
// Scheduling: pol.Scheduling.ValueString(),
Targetvault: int32(pol.Targetvault.ValueInt64()),
Sourcevault: int32(pol.Sourcevault.ValueInt64()),
Selection: pol.Selection.ValueString(),
Exclusion: pol.Exclusion.ValueString(),
Exclusioninterval: pol.Exclusioninterval.ValueString(),
Retention: pol.Retention.ValueString(),
Retentionm: pol.Retentionm.ValueString(),
Remoteretention: int32(pol.Remoteretention.ValueInt64()),
PolicyType: pol.PolicyType.ValueString(),
Op: pol.Op.ValueString(),
Verification: pol.Verification.ValueBool(),
Repeatinterval: pol.Repeatinterval.ValueString(),
Encrypt: pol.Encrypt.ValueString(),
Reptype: pol.Reptype.ValueString(),
Verifychoice: pol.Verifychoice.ValueString(),
})
}
// Generate API request body from plan
reqBody := backupdr.SLATemplateApiCreateSltOpts{
Body: optional.NewInterface(reqSlt),
}
// Create new entity
respObject, _, err := r.client.SLATemplateApi.CreateSlt(r.authCtx, &reqBody)
if err != nil {
resp.Diagnostics.AddError(
"Error creating SLT",
"Could not create SLA Template, unexpected error: "+err.Error(),
)
return
}
// Map response body to schema and populate Computed attribute values
plan.ID = types.StringValue(respObject.Id)
plan.Href = types.StringValue(respObject.Href)
plan.OptionHref = types.StringValue(respObject.OptionHref)
plan.PolicyHref = types.StringValue(respObject.PolicyHref)
// response doesnot show policy details
sltID, _ := strconv.Atoi(respObject.Id)
respObjectPolicies, _, err := r.client.SLATemplateApi.ListPolicies(r.authCtx, int64(sltID))
if err != nil {
resp.Diagnostics.AddError(
"Error Reading SLT Policy",
"Could not read SLT policies ID: "+respObject.Id+": "+err.Error(),
)
return
}
for i, respPol := range respObjectPolicies.Items {
plan.Policies[i].ID = types.StringValue(respPol.Id)
plan.Policies[i].Href = types.StringValue(respPol.Href)
}
// Set state to fully populated data
diags = resp.State.Set(ctx, plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
}