func()

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
	}
}