in teamcity/project_param.go [189:237]
func (r *paramResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
var plan paramResourceModel
diags := req.Plan.Get(ctx, &plan)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
var oldState paramResourceModel
diags = req.State.Get(ctx, &oldState)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
if !plan.Value.Equal(oldState.Value) {
name := plan.Name.ValueString()
var err error
if isSecureParam(plan) {
err = r.client.SecureSetParam(plan.ProjectId.ValueString(), name, plan.Value.ValueString())
} else {
err = r.client.SetParam(plan.ProjectId.ValueString(), name, plan.Value.ValueString())
}
if err != nil {
resp.Diagnostics.AddError(
"Error updating project param",
err.Error(),
)
return
}
}
var newState paramResourceModel
newState.Id = types.StringValue(fmt.Sprintf("%s/%s", plan.ProjectId.ValueString(), plan.Name.ValueString()))
newState.ProjectId = plan.ProjectId
newState.Name = plan.Name
newState.Value = plan.Value
if plan.Type.IsNull() || plan.Type.ValueString() == "" {
newState.Type = types.StringValue(models.ParamTypeText)
} else {
newState.Type = plan.Type
}
diags = resp.State.Set(ctx, newState)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
}