terraform-plugin-framework icon indicating copy to clipboard operation
terraform-plugin-framework copied to clipboard

Add `value.IsNullOrUnknown()` function

Open zliang-akamai opened this issue 1 year ago • 2 comments

Does this make sense for checking whether the value has a real value?

I have an optional but non-computed attribute, I usually think I can safely assume the plan will never be an Unknown value but am worried about someone change the schema to computed in the future and this can become a side-effect.

Writing s.IsNull() || s.IsUnknown() is verbose in provider code, IMO.

func (s StringValue) IsNullOrUnknown() bool {
	return s.IsNull() || s.IsUnknown()
}

Kind of like if someAttr, ok := d.GetOk("some_attr"); ok {} in SDKv2

zliang-akamai avatar Nov 20 '24 20:11 zliang-akamai

I've often wished that the attr.Value interface included a HasValue() bool method for the same reason.

think I can safely assume the plan will never be an Unknown value

A mistake that I seem to make regularly is forgetting that while the planned value cannot be unknown for a non-Computed attribute, the config (as used exposed to attribute or resource validator) might be unknown.

chrismarget-j avatar Nov 20 '24 20:11 chrismarget-j

@chrismarget-j

A mistake that I seem to make regularly is forgetting that while the planned value cannot be unknown for a non-Computed attribute, the config (as used exposed to attribute or resource validator) might be unknown.

True, I made that mistake 😭

zliang-akamai avatar Nov 21 '24 21:11 zliang-akamai