resource/cloudflare_ruleset: improve unknown value handling #4692
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Within the rulesets schema, we have a handful of fields that are
Computed
. The expectation of this directive is that it is avalue not known at run time and may be provided by the remote.
However, this premise will break down and not work correctly if
the value is ever provided to the plan since the value is no
longer "unknown". This subtle bug is one part of what is
contributing to the additional output toil in #2690. To address
this, I've removed the lines that modified these values and
were being supplied to the plan operation.
This takes the confusing and bloated output from looking like this:
To a clearer and more concise output:
The second part of this confusing output is the
last_updated
andversion
output. Thelast_updated
is pretty self explanatoryhowever, there are some minor but important details about the version
field here. Within ERE, it captures and is tied to a particular state
of the ruleset rule at any point and is incremented when changes are
detected to any parts of the rule. The nuance here is that ERE does
not perform a diff of the current state and what is proposed.
Instead, it autoincrements this field even if the payload is identical.
So why is this important for the Terraform resource? Well, since we
use explicit ordering via
ListNestedObject
schema attribute, we aresending all rules to the API even when only a single one changes to
ensure we maintain the correctness the end user expects. Doing this
causes the
last_updated
andversion
fields to always show asunknown values and result in updates.
While the
last_updated
andversion
fields are useful in a contextwhere you may reuse the
version
, value, it's not in Terraform. Toremove that part of the diff, we're going to just remove them entirely
from the schema. Given that users couldn't be using them in a
configuration, we're going to release this within a minor version
handling the cleanup internally to the provider.
Supersedes #3091
Closes #2690