Fix crash when an unset variable is used#8837
Conversation
…ding things to make sure tests are working similarly as real life version
because a variable can be defined in the Locals block
|
Question for the team. With this PR a variable can be defined and have no value.But this would be different that for Terraform; so quoting this message:
Should we do the same ? |
I think as a terraform user the one might expect to be the same. In terraform if the variable without a default is used, is it going to return an error as your implementation does? I like the way you did and I think both solutions are good. If it's not too difficult, I would do it as terraform just for consistency. Maybe just add the option of setting |
| } | ||
|
|
||
| (*variables)[block.Labels[0]] = res | ||
| (*variables)[name] = res |
| Sensitive bool | ||
|
|
||
| block *hcl.Block | ||
| Range hcl.Range |
There was a problem hiding this comment.
Is this so that we can keep track of the block when generating diagnostics?
|
|
||
| replace github.com/gofrs/flock => github.com/azr/flock v0.0.0-20190823144736-958d66434653 | ||
|
|
||
| replace github.com/zclconf/go-cty => github.com/azr/go-cty v1.1.1-0.20200203143058-28fcda2fe0cc |
There was a problem hiding this comment.
My pr was merged; so this can be removed.
A variable's default value can be set to null to force user to set it.
|
Hey folks ! I think this PR is good to review. I think the behaviour are super close to what we want in the RFC. But since this also fixes a crash I think we should merge it. I'll gladly update the behaviours if/when the RFC changes later on 🙂. |
| @@ -29,6 +29,7 @@ variable "super_secret_password" { | |||
| description = <<IMSENSIBLE | |||
There was a problem hiding this comment.
Did you mean "sensitive" here instead of "sensible"?
| ~> **Important:** Variables with map and object values behave the same way as | ||
| other variables: the last value found overrides the previous values. | ||
|
|
||
| ### A variable value must be known : |
There was a problem hiding this comment.
💯 👍 🏆 Nicely done on adding the variables table.
Thanks to the following issue hashicorp/packer#8846, and the fact that they’ll be removing abiity to use a simple ‘go get’ (hashicorp/packer#8837 (comment)), it makes no sense to try to build it locally anymore.
…atching Before change ``` 413e19b Merge pull request #8942 from desolatorxxl/google-fix-ssh-keys-metadata b81800d Merge pull request #8935 from zaventh/feature/start-on-boot 9486316 Merge pull request #8922 from hashicorp/f-vsphere_iso-export-ovf-options 56aebbe Merge pull request #8920 from rhencke/patch-1 d068430 make sure locals are evaluated only once variables are + test this (#8918) 3dae5df Merge pull request #8905 from hashicorp/fix_8493 811a730 Merge pull request #8907 from hashicorp/fix_8428 fa49d21 Merge pull request #8906 from hashicorp/fix_8904 23f5603 Merge pull request #8889 from hashicorp/hcl2_singular_blocks dc9259f Merge pull request #8892 from zaventh/feature/vga-adapter fc35f02 Merge pull request #8890 from hashicorp/fix_8880 7972ab7 Merge pull request #8735 from hashicorp/fix_plugin_loading 890d7b2 Merge pull request #8875 from hashicorp/fix_8812 e94ff70 Merge pull request #8883 from hashicorp/fix_8835 9075b80 Merge pull request #8891 from rhencke/patch-1 6477d8a Merge pull request #8882 from hashicorp/fix-var-file-hcl 6008f91 Merge pull request #8847 from takaishi/support-keyboard-interactive 5604561 Merge pull request #8877 from paulcichonski/remote-esxi-bastion 698f744 Merge pull request #8887 from hashicorp/untangle_ssh_docs_from_aws aeedc9a Merge pull request #8879 from mbrancato/specify_keyvault_sku 5365fda Merge pull request #8884 from hashicorp/fix_codecov_config 4bd7b14 Merge pull request #8732 from jhawk28/reorder_cdrom_drive 072a71b Merge pull request #8863 from hashicorp/update_go-cty_regex 8a1caaa Merge pull request #8837 from hashicorp/fix_8730 7873cab Merge pull request #8858 from hashicorp/fix_8791 7e382d0 Merge pull request #8828 from mvitaly/fix_8816 8832b3e Merge pull request #8787 from jhawk28/vsphere_iso_multiple_disks 5281740 Merge pull request #8831 from rjhornsby/master e35a872 Merge pull request #8830 from hashicorp/d-var-file-hcl2-not-yet ``` After change ``` ⇶ git log v1.5.4...v1.5.5 --first-parent --oneline --grep="Merge pull request #[0-9]\+" --grep="(#[0-9]\+)$" 413e19b Merge pull request #8942 from desolatorxxl/google-fix-ssh-keys-metadata c387dc2 builder/vsphere-clone: Find the vm within the folder (#8938) b17b211 Add cleanup_remote_cache config option to vmware-iso (#8917) e6368b9 Fix azure winrm_password attribution and allow to set winrm_username (#8928) fcf10e9 Replace Amazon with Outscale for OSC BSU doc (#8944) 9240fb7 Fix typo in title (#8943) 2c6f096 Allow accepting image for the members in OpenStack builder (#8931) b81800d Merge pull request #8935 from zaventh/feature/start-on-boot daffd9c CONTRIBUTING: Update documentation for linting on Travis (#8933) 3a9d356 golangci-lint: Update --new-from-rev option to check only newly added commits (#8923) 97d797d Fix small typos in osc-bsuvolume.html.md (#8926) 9486316 Merge pull request #8922 from hashicorp/f-vsphere_iso-export-ovf-options 56aebbe Merge pull request #8920 from rhencke/patch-1 99b0b98 Add ovf export capability to vsphere builders (#8764) d068430 make sure locals are evaluated only once variables are + test this (#8918) ad8dafa HCL: add tests and fixes around var-file and var args (#8914) 7979ab0 Add after_n_builds to codecov.yml (#8913) 3dae5df Merge pull request #8905 from hashicorp/fix_8493 811a730 Merge pull request #8907 from hashicorp/fix_8428 fa49d21 Merge pull request #8906 from hashicorp/fix_8904 b94937c Update provisioner_test.go (#8900) 2319521 Add iso config test for checksum from file specific case (#8897) 23f5603 Merge pull request #8889 from hashicorp/hcl2_singular_blocks dc9259f Merge pull request #8892 from zaventh/feature/vga-adapter 690bf71 Add Codecov badge and remove report style (#8896) fc35f02 Merge pull request #8890 from hashicorp/fix_8880 7972ab7 Merge pull request #8735 from hashicorp/fix_plugin_loading 890d7b2 Merge pull request #8875 from hashicorp/fix_8812 e94ff70 Merge pull request #8883 from hashicorp/fix_8835 ```
|
I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further. |
This was due to a misunderstanding on my side. When a variable is not set one needs to set it to
cty.NullVal(cty.DynamicPseudoType), like so:packer/hcl2template/types.variables.go
Lines 57 to 93 in 23b940d
I choose not to error when a variable is not set and not used. But when someone does something like this:
The error is the following:
fix #8730