You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am a fairly new cdktf user and try to add a validation condition on the env variable s.t. it can only be set to "staging" or "production". However, no matter what I try, cdktf refuses to evaluate my expression.
I searched the docs and could not find any information on how to specify the condition property.
What I expected to work:
env=TerraformVariable(self, "env", type="string")
env.add_validation(
condition=f"contains(['production', 'staging'], {env.string_value})",
error_message="ERROR: Valid types are production and staging"
)
However, it failed with:
Error: Invalid variable validation result
│
│ on cdk.tf.json line 81, in variable.env.validation[0]:
│ 81: "condition": "contains(['production', 'staging'], ${var.env})",
│ ├────────────────
│ │ var.env is "staging"
│
│ Invalid validation condition result value: a bool is required.
I also tried to reference the input variable as follows:
env.add_validation(
condition=f"contains(['production', 'staging'], var.env)",
error_message="ERROR: Valid types are production and staging"
)
... which failed with:
│ Error: Invalid validation expression
│
│ on cdk.tf.json line 81, in variable.env.validation[0]:
│ 81: "condition": "contains(['production', 'staging'], var.env)",
│
│ The condition expression must refer to at least one object from elsewhere in
│ the configuration, or else its result would not be checking anything.
│ Error: Invalid variable validation condition
│
│ on cdk.tf.json line 81, in variable.env.validation[0]:
│ 81: "condition": "contains(['production', 'staging'], var.env)",
│
│ The condition for variable "env" must refer to var.env in order to test
│ incoming values.
Does not make sense to me, as I included var.env into the condition and it looks similar as examples in the non-cdk docs.
Could someone please shed some light on that topic?
Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment
The text was updated successfully, but these errors were encountered:
If you check your resulting configuration, you see that the condition parameter is synthesized as a string, not a hcl boolean.
Either add expression syntax to the condition string:
env=TerraformVariable(self, "env", type="string")
env.add_validation(
condition=f"${{contains(['production', 'staging'], {env.string_value})}}",
error_message="ERROR: Valid types are production and staging"
)
or use the CDKTF equivalent of the contains function.
fromcdktfimportTerraformVariable, FnGeneratedenv=TerraformVariable(self, "env", type="string")
env.add_validation(
condition=FnGenerated.contains(["production", "staging"], env.string_value),
error_message="ERROR: Valid types are production and staging"
)
Description
I am a fairly new cdktf user and try to add a validation condition on the env variable s.t. it can only be set to "staging" or "production". However, no matter what I try, cdktf refuses to evaluate my expression.
I searched the docs and could not find any information on how to specify the condition property.
What I expected to work:
However, it failed with:
I also tried to reference the input variable as follows:
... which failed with:
Does not make sense to me, as I included
var.env
into the condition and it looks similar as examples in the non-cdk docs.Could someone please shed some light on that topic?
Links
Help Wanted
Community Note
The text was updated successfully, but these errors were encountered: