in teamcity/project_param.go [140:187]
func (r *paramResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
var oldState paramResourceModel
diags := req.State.Get(ctx, &oldState)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
name := oldState.Name.ValueString()
var newState paramResourceModel
newState.Id = types.StringValue(fmt.Sprintf("%s/%s", oldState.ProjectId.ValueString(), name))
newState.ProjectId = oldState.ProjectId
newState.Name = oldState.Name
isPassword := isSecureParam(oldState)
if isPassword {
// Server does not return secure value; keep it from state to avoid unwanted diffs
newState.Value = oldState.Value
newState.Type = types.StringValue(models.ParamTypePassword)
} else {
result, err := r.client.GetParam(oldState.ProjectId.ValueString(), name)
if err != nil {
resp.Diagnostics.AddError(
"Error reading group param",
err.Error(),
)
return
}
if result == nil {
resp.State.RemoveResource(ctx)
return
}
newState.Value = types.StringValue(*result)
if oldState.Type.IsNull() || oldState.Type.ValueString() == "" {
newState.Type = types.StringValue(models.ParamTypeText)
} else {
newState.Type = oldState.Type
}
}
diags = resp.State.Set(ctx, newState)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
return
}
}