Commit Graph

1425 Commits

Author SHA1 Message Date
Mitchell Hashimoto
9ea9e52185
terraform: rename Config to Module, tests for diff transform 2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
dcc3eb3011
terraform: test for ResourceAddress.stateId() 2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
5828a0a9ac
terraform: minimal applies work! 2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
dc9b9eee44
terraform: connect providers in the apply graph 2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
77b9177bd5
terraform: an incredible number of failing tests! 2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
3f090df26e
terraform: start apply-based graph builder, basic diff transform 2016-10-19 13:38:01 -07:00
Mitchell Hashimoto
361bc5a8df
terraform: parse internal resource addresses used in state/diff 2016-10-19 13:38:01 -07:00
Mitchell Hashimoto
50afee2a30
terraform: Diff.Empty should be true for nil Diff 2016-10-19 13:38:01 -07:00
Mitchell Hashimoto
0fe51b334c Merge pull request #9334 from hashicorp/f-shadow-graph
terraform: Shadow Graph
2016-10-19 13:36:10 -07:00
Mitchell Hashimoto
35d1868618
terraform: remove ModuleDiff.GoString
To address comments by @jbardin re: if we had a mutex this will fail
vet.
2016-10-19 10:07:47 -07:00
James Nugent
9e02431ed8 release: clean up after v0.7.7 2016-10-18 13:46:02 +00:00
James Nugent
fa6a83ebdc
v0.7.7 2016-10-18 13:36:31 +00:00
Mitchell Hashimoto
e2c415a87e
terraform: resource provider must never return pointers to same data
This is a requirement for the parallelism of Terraform to work sanely.
We could deep copy every result but I think this would be unrealistic
and impose a performance cost when it isn't necessary in most cases.
2016-10-17 20:55:20 -07:00
Mitchell Hashimoto
4baed414e7 Merge pull request #9361 from hashicorp/b-interp-multi
terraform: multi-var interpolation should use state for count
2016-10-14 11:13:33 -07:00
clint
d9542be43f release: clean up after v0.7.6 2016-10-14 16:43:48 +00:00
clint
754bdda8a7
v0.7.6 2016-10-14 16:32:43 +00:00
James Nugent
afe2d7b65b Merge pull request #7320 from dtolnay/conflict
core: Allow refresh of local state with no resources
2016-10-14 11:00:46 -05:00
Mitchell Hashimoto
728a1e5448
terraform: multi-var interpolation should use state for count
Related to #5254

If the count of a resource is interpolated (i.e. `${var.c}`), then it
must be interpolated before any splat variable using that resource can
be used (i.e. `type.name.*.attr`). The original fix for #5254 is to
always ensure that this is the case.

While working on a new apply builder based on the diff in
`f-apply-builder`, this truth no longer always holds. Rather than always
include such a resource, I believe the correct behavior instead is to
use the state as a source of truth during `walkApply` operations.

This change specifically is scoped to `walkApply` operation
interpolations since we know the state of any multi-variable should be
available. The behavior is less clear for other operations so I left the
logic unchanged from prior versions.
2016-10-13 17:57:11 -07:00
James Bardin
c5f85f9a91 Merge pull request #9356 from hashicorp/jbardin/TF-9337
Filter nil Deposed values during State init
2016-10-13 16:03:23 -04:00
Clint
46ee2ef51a Merge pull request #6819 from hashicorp/f-aws-vpc-data-sources
provider/aws: data sources for AWS network planning
2016-10-13 14:17:55 -05:00
James Bardin
4f91507d05 Merge pull request #9268 from hashicorp/jbardin/hcl-maps
Get rid of the list when parsing HCL maps for vars
2016-10-13 14:18:29 -04:00
James Bardin
816c04309c Filter nil Deposed values during State init
The Deposed slice wasn't being normalized and nil values could be read
in from a state file. Filter out the nils during init. There is
still a bug in copystructure, but that will be addressed separately.
2016-10-13 13:46:40 -04:00
James Bardin
fe4799bd68 Add failing test for nil IsntanceState in State
A nil InstanceState within State/Modules/Resources/Deposed will panic
during a deep copy. The panic needs to be fixed in copystructure, but
the nil probably should have been normalized out before we got here too.
2016-10-13 11:16:03 -04:00
Mitchell Hashimoto
baa59ff75d
terraform: fix go vet issues by not using *c to copy 2016-10-12 19:47:21 +08:00
Mitchell Hashimoto
70cee9c1c6
terraform: clean up any final TODOs with comments and placeholders 2016-10-12 19:03:41 +08:00
Mitchell Hashimoto
9a876f65ba
terraform: compare diffs on shadow Apply 2016-10-12 19:01:02 +08:00
Mitchell Hashimoto
7f04b33d3d
terraform: enable shadow walking on Refresh and Validate 2016-10-12 18:57:52 +08:00
Mitchell Hashimoto
98fa7d92a4
terraform: support data source apply for shadows 2016-10-12 18:56:57 +08:00
Mitchell Hashimoto
4c951428d7
terraform: enable shadow on destroy and Plan 2016-10-12 18:50:41 +08:00
Mitchell Hashimoto
a9f1166583
terraform: use KeyedValue.Init to avoid initialization race
There were races with ValidateResource in the provider initializing the
data which resulting in lost data for the shadow. A new "Init" function
has been added to the shadow structs to support safe concurrent
initialization.
2016-10-12 18:47:52 +08:00
Mitchell Hashimoto
b0801bf125
terraform: ResourceProvider.ReadDataDiff (shadow) 2016-10-11 22:17:31 +08:00
Mitchell Hashimoto
31f8d13678
terraform: Diff.Equal and tests 2016-10-11 22:17:31 +08:00
Mitchell Hashimoto
30596ca371
terraform: sanity test (passes, always passed) 2016-10-11 22:17:31 +08:00
Mitchell Hashimoto
c2dd9a7338
terraform: Provier.Diff (shadow) deep copy the config before call 2016-10-11 22:17:31 +08:00
Mitchell Hashimoto
817979c56d
terraform: ResourceProvider.ValidateResource (shadow) config deep copy 2016-10-11 22:17:31 +08:00
Mitchell Hashimoto
d7a5cc5b35
terraform: InstanceInfo.uniqueId
This adds a new function to get a unique identifier scoped to the graph
walk in order to identify operations against the same instance. This is
used by the shadow to namespace provider function calls.
2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
e2fc0b518f
terraform: ShadowError returns errors, not the close operation 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
d30cfef4d2
terraform: remove shadow eval context since we're not shadowing that
We allow the built in context to work as expected and shadow just the
components now. This is better since it allows us to use much more of
the REAL structures.
2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
a014b098b0
terraform: copy the provider input configs for the shadow context 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
fdeb4656c9
terraform: deep copy shadow arguments to avoid state modifications
The arguments passed into Apply, Refresh, Diff could be modified which
caused the shadow comparison later to cause errors. Also, the result
should be deep copied so that it isn't modified.
2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
4de803622d
terraform: ResourceProvisioner shadow 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
548a585762
terraform: unique ID for destroying resources 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
5c1af55711
terraform: don't run the shadow graph on interrupt 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
61c789aace
terraform: shadow graph runs in sequence after the real graph 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
a355d4ad55
terraform: deposed should have a unique ID for instance info 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
24456c042a
terraform: ResourceProvider (shadow) ValidateResource 2016-10-11 22:17:30 +08:00
Mitchell Hashimoto
3edb8599b1
terraform: Shadow interface, properly string through errors at the right
time
2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
184b4a8b09
terraform: context verifies real and shadow state/diff match 2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
62162427f4
terraform: ResourceProvider (shadow) CloseShadow closes all shadow
values
2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
3e7665db09
terraform: shadow component factory supports closing 2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
8ef35d7561
terraform: simplify the shadow component factory
This unifies shadow/real under one since it was really just a basic
switch of what to return.
2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
89e8656c6b
terraform: component uid includes the path 2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
0b00bbde4e
terraform: switch to a component factory
This is necessary so that the shadow version can actually keep track of
what provider is used for what. Before, providers for different alises
were just initialized but the factory had no idea. Arguably this is fine
but when trying to build a shadow graph this presents challenges.

With these changes, we now pass an opaque "uid" through that is used to
keep track of the providers and what real maps to what shadow.
2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
5053872e82
terraform: Diff.DeepCopy test to catch a bug that in copystructure
This was fixed upstream but keeping the test around to prevent
regressions.
2016-10-11 22:17:29 +08:00
Mitchell Hashimoto
742af8752b
terraform: run the shadow graph for Apply operations (everything fails) 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
02e93f5920
terraform: shadowResourceProviderFactory
This helper helps create the factory maps for the context.
2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
f7134d95e4
terraform: Diff.DeepCopy 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
9ae9f208d1
terraform: Context knows how to walk a shadow graph and report errors 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
3504054b1e
terraform: EvalContext.CloseProvider (shadow) works if never init 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
17b909a59b
terraform: EvalContext.CloseProvider (shadow) 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
ea8e7659e2
terraform: EvalContext.Provider (shadow) 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
ce56712473
terraform: EvalContext.InitProvider(shadow) test double init 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
792a9f1de4
terraform: EvalContext.InitProvider (shadow) tests 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
fb96b0c422
terraform: EvalContext.initProvider shadow 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
51ac3c5969
terraform: ResourceProvider.Refresh (shadow) 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
82a1158f55
terraform: ResourceProvider.Diff shadow 2016-10-11 22:17:28 +08:00
Mitchell Hashimoto
cbbd492bce
terraform: shadow resource provider Apply 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
3522b07b75
terraform: Shadow resource provider Configure 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
23204d2414
terraform: ResourceProvider.Validate for shadow 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
bb5f116cec
terraform: shadow resource provider tests begin 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
d37bb87bf2
terraform: ResourceConfig.DeepCopy should handle the nil case 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
37f5c6ae26
terraform: ResourceConfig.Equal handles nil case 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
f73dc844c7
wip 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
1df3bbdc37
terraform: working on the resource provider shadow, not working yet 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
35f13f9c52
terraform: wip on shadow graph, compiles 2016-10-11 22:17:27 +08:00
Mitchell Hashimoto
8c9097f454
terraform: orphaned grandchild module inherits provider config
This fixes an issue where orphaned grandchild modules don't properly
inherit their provider configurations from grandparents. I found this
while working on shadow graphs (the shadow graph actually caught an
inconsistency between runs and exposed this bug!), so I'm unsure if this
affects any issue.

To better explain the issue, I'll diagram things.

Here is a hierarchy that _works_ (w/o this PR):

```
root
|-- child1 (orphan)
|-- child2
    |-- grandchild
```

All modules in this case will successfully inherit provider
configurations from "root".

Here is a hierarchy that _doesn't work without this PR_:

```
root
|-- child1 (orphan)
    |-- grandchild (orphan)
```

In this case, `child1` does successfully inherit the provider from root,
but `grandchild` _will not_ unless `child1` had resources. If `child1`
has no resources, it wouldn't inherit anything. This PR fixes that.
2016-10-11 15:51:27 +08:00
James Bardin
48c8afaa11 Check for multi-values maps in output too
A map value read from a config file will be the default
`[]map[string]interface{}` type decoded from HCL. Since this type can't
be applied to a variable, it's likely that it was a simple map. If
there's a single map value, we can pull that out of the slice during
Eval.
2016-10-07 15:09:03 -04:00
clint
3e3854ed65 release: clean up after v0.7.5 2016-10-06 17:57:23 +00:00
clint
f7fa785925
v0.7.5 2016-10-06 17:41:22 +00:00
James Bardin
828aa7cfb4 Merge pull request #9062 from hashicorp/jbardin/race-fix
Fix race on Provisioner.RawConfig
2016-10-04 12:23:31 -04:00
James Bardin
77a64e7cb3 Merge pull request #9079 from hashicorp/jbardin/json-map
Allow map variables from json
2016-10-04 12:22:57 -04:00
Mitchell Hashimoto
ea342b793b
Update reflectwalk vendor to fix State.DeepCopy
The real reasoning for this can be found in #9, #10, and #11. All
these vendor updates aim to fix that issue, with minor adjustments
2016-09-27 19:52:12 -07:00
Mitchell Hashimoto
f897fa4701
terraform: ResourceConfig.Equal and tests 2016-09-27 18:52:32 -07:00
Mitchell Hashimoto
56901e5cfd
terraform: ResourceConfig.DeepCopy
This implements DeepCopy, still need to implement Equals to make this
more useful. Coming in the next commit but this still has its own full
functionality + tests.
2016-09-27 16:09:32 -07:00
James Bardin
3297a460c7 Allow map variables from json
A JSON object will be decoded as a list with a single map value. This
will be properly coerced later, so let it through the initial config
semantic checks.
2016-09-27 13:29:14 -04:00
James Bardin
475e0f1e6b Fix race on Provisioner.RawConfig
A race when accessing Provisioner.RawConfig can cause unexpected output
for provisioners that interpolate variables. Use RawConfig.Copy which
needs to acquire the RawConfig mutex to get the values.

Fixes #8890
2016-09-26 14:34:05 -04:00
Martin Atkins
ab29eca045 core: don't force data resource id diff to be empty
In an attempt to always show "id" as computed we were producing a
synthetic diff for it, but this causes problems when the id attribute for
a particular data source is actually settable in configuration, since it
masks the setting from the config and forces it to always be empty.

Instead, we'll set it conditionally so that a value provided in the config
can shine through when available.
2016-09-24 12:48:58 -07:00
Kyle Havlovitz
3a2819de25 core: Fixed variables not being in scope for destroy -target on modules 2016-09-23 19:05:40 -04:00
James Bardin
e58c6cf7da release: clean up after v0.7.4 2016-09-19 19:37:54 +00:00
James Bardin
84592f5967
v0.7.4 2016-09-19 19:13:49 +00:00
James Bardin
e5ff4d5bd4 create some unlocked methods for State
State.Init() needs to be called externally, so make sure it only calls
unlocked internal methods once a lock is acquired.
2016-09-16 09:59:04 -04:00
James Bardin
90aab0105d Add locks to InstanceState
Rename receivers for consistency
2016-09-16 09:59:04 -04:00
James Bardin
8d5080fe72 Lock all ResourceState methods
Also rename receivers so they are consistent.
2016-09-16 09:59:04 -04:00
James Bardin
469e71a488 add locks to all exported ModuleState methods 2016-09-16 09:59:04 -04:00
James Bardin
f1b44e36b4 add lock to OutputState.Equal 2016-09-16 09:59:04 -04:00
James Bardin
1235623fad Add locks to exported RemoteState methods 2016-09-16 09:59:04 -04:00
James Bardin
0be90c8994 Add locks to all exported State methods
move implementation into private methods when needed
2016-09-16 09:59:04 -04:00
David Tolnay
61185f083c Merge branch hashicorp/master into dtolnay/conflict 2016-09-07 19:17:22 -07:00
Trevor Pounds
38784cd38f Cleanup inaccurate state structure comments. 2016-09-06 16:24:51 -04:00
stack72
cdcff09d99
release: clean up after v0.7.3 2016-09-05 13:11:19 +01:00
stack72
0dd7c657d6
v0.7.3 2016-09-05 12:01:12 +00:00
James Bardin
2623d84a41 Add a context test for a datasource with count 2016-09-03 13:08:41 -07:00
Sander van Harmelen
47dd1ad153 Add wildcard (match all) support to ignore_changes (#8599) 2016-09-02 15:44:35 +02:00
Mitchell Hashimoto
d081ad1bc0 Merge pull request #8581 from hashicorp/f-self-count
terraform: self.count works in interpolations [GH-5283]
2016-08-31 11:58:36 -07:00
Mitchell Hashimoto
60f212b73e
terraform: test for referencing counts that are from vars 2016-08-31 11:54:14 -07:00
Mitchell Hashimoto
d2e15ab69a
terraform: add test explicitly for referencing count 2016-08-31 11:49:25 -07:00
Mitchell Hashimoto
08a9c8e2c2
terraform: self.count works in interpolations [GH-5283] 2016-08-31 11:36:51 -07:00
James Bardin
632c16c212 Fix inconsistent results with self interpolation
Due to a race in interpolateForce(), a reference to self could return
inconsistent results.
2016-08-30 14:16:37 -04:00
Mitchell Hashimoto
3c2db3d572 Merge pull request #8463 from hashicorp/b-read-state-validate
Validate the state on load
2016-08-26 13:27:21 -07:00
James Bardin
f326dad2ba Merge pull request #8452 from hashicorp/jbardin/locked-copy
Add locks to state structs for copying
2016-08-25 17:06:20 -04:00
James Bardin
4559eec8be Remove the proposed LockedCopy function
We didn't add the LockedCopy function in copystructure, in favor of
using the Config struct directly.
2016-08-25 16:55:28 -04:00
James Bardin
0e6e206465 Add an InstanceState.Set method to set all fields
We con no longer copy an InstanceState via a simple
dereference+assignment because of the mutex which can't be copied. This
adds a set method to properly set all field from another InstanceState,
and take the appropriate locks while doing so.
2016-08-25 14:41:51 -04:00
James Bardin
2a47b32374 fix State.Add chart so it renders in godoc 2016-08-25 14:41:51 -04:00
James Bardin
7a579c271d Remove GoString methods from state
These method set the GoString format behavior, but they only output the
default GoString format. Remove them to prevent copying mutex values.
2016-08-25 14:41:39 -04:00
stack72
5861802d08 release: clean up after v0.7.2 2016-08-25 15:11:50 +00:00
stack72
0985f39e99
v0.7.2 2016-08-25 14:29:18 +00:00
Mitchell Hashimoto
73f7c04159
terraform: clear docs for devs 2016-08-24 18:44:54 -07:00
Mitchell Hashimoto
3376611ad0
terraform: Validate validates single module states 2016-08-24 18:42:13 -07:00
Mitchell Hashimoto
c65bbc4f0c
terraform: minor edits to reading state to prep for validation 2016-08-24 18:20:47 -07:00
James Bardin
056fd70da4 Add locks to state structs for copying
Add locks to the state structs to handle concurrency during the graph
walks. We can't embed the mutexes due to serialization constraints when
communicating with providers, so expose the Lock/Unlock methods
manually.

Use copystructure.LockedCopy to ensure locks are honored.
2016-08-24 11:15:52 -04:00
Mitchell Hashimoto
b9219103df
terraform: prefix destroy resources with module path [GH-2767] 2016-08-22 13:33:11 -07:00
Mitchell Hashimoto
f98459d683 Merge pull request #8304 from hashicorp/b-state-mv
Fix `state mv` with nested modules to work properly
2016-08-20 00:00:22 -04:00
Mitchell Hashimoto
c22ab252dd
terraform: import specific index works [GH-7691] 2016-08-19 19:14:33 -04:00
clint
146da09d5d release: clean up after v0.7.1 2016-08-19 20:28:17 +00:00
clint
55ba6ebd3d
v0.7.1 2016-08-19 19:58:17 +00:00
Mitchell Hashimoto
8afbb0ee0e
terraform: state mv "foo" to "foo.0" with single count 2016-08-19 11:54:53 -04:00
Mitchell Hashimoto
88649ed010
terraform: StateAdd edge case test for multi-count to single index 2016-08-19 11:51:31 -04:00
Mitchell Hashimoto
a22f7e8257
terraform: State.Add works with multiple resources [GH-7797] 2016-08-19 11:46:52 -04:00
Mitchell Hashimoto
4454d534fc
terraform: test for querying count resources 2016-08-19 11:41:00 -04:00
Mitchell Hashimoto
3b3f92cd9b
terraform: fix some test failures on state add with multiple modules 2016-08-18 17:39:07 -04:00
Mitchell Hashimoto
3892cc4e91
terraform: fix state add with multiple ModuleStates 2016-08-18 17:13:53 -04:00
Mitchell Hashimoto
a44c8b8760
terraform: state mv tests 2016-08-18 15:05:42 -04:00
Mitchell Hashimoto
05cbb5c0ea
terraform: add test for filtering nested modules 2016-08-17 18:54:47 -05:00
Mitchell Hashimoto
802de4ea28
terraform: fix vet 2016-08-17 12:03:21 -07:00
Mitchell Hashimoto
cc5abd0815
terraform: add tests for variables 2016-08-17 11:28:58 -07:00
Mitchell Hashimoto
af7085f671
terraform: refactor var loading out to a helper
Small style changes too
2016-08-17 11:10:26 -07:00
Mitchell Hashimoto
e6d1e77a9a
Fix vet errors found with Go 1.7 2016-08-16 18:03:22 -07:00
Mitchell Hashimoto
f4faf2274b
config: count can't be a SimpleVariable 2016-08-16 13:48:12 -07:00
James Nugent
f933b2cf16 Merge pull request #8200 from hashicorp/fix-state-rm
core: Add `terraform state rm` command
2016-08-16 19:10:17 +01:00
Paul Hinze
50df583ffd Merge pull request #8120 from hashicorp/jbardin/null-state-module
Fix panic from a null resources module in a state file
2016-08-16 09:45:52 -05:00
Mitchell Hashimoto
0a2fd1a5e5 terraform: filtering on name actually matches name 2016-08-15 14:36:23 -05:00
Paul Hinze
b9f950f1d4 Merge pull request #8167 from hashicorp/b-tainted-no-attrs-still-replaces
terraform: diffs with only tainted set are non-empty
2016-08-12 18:06:32 -05:00
Paul Hinze
3dccfa0cc9
terraform: diffs with only tainted set are non-empty
Fixes issue where a resource marked as tainted with no other attribute
diffs would never show up in the plan or apply as needing to be
replaced.

One unrelated test needed updating due to a quirk in the testDiffFn
logic - it adds a "type" field diff if the diff is non-Empty. NBD
2016-08-12 17:37:49 -05:00
James Bardin
cdb80f68a8 Ensure better state normalization
Fix checksum issue with remote state

If we read a state file with "null" objects in a module and they become
initialized to an empty map the state file may be written out with empty
objects rather than "null", changing the checksum. If we can detect
this, increment the serial number to prevent a conflict in atlas.

Our fakeAtlas test server now needs to decode the state directly rather
than using the ReadState function, so as to be able to read the state
unaltered.

The terraform.State data structures have initialization spread out
throughout the package. More thoroughly initialize State during
ReadState, and add a call to init() during WriteState as another
normalization safeguard.

Expose State.init through an exported Init() method, so that a new State
can be completely realized outside of the terraform package.
Additionally, the internal init now completely walks all internal state
structures ensuring that all maps and slices are initialized.  While it
was mentioned before that the `init()` methods are problematic with too
many call sites, expanding this out better exposes the entry points that
will need to be refactored later for improved concurrency handling.

The State structures had a mix of `omitempty` fields. Remove omitempty
for all maps and slices as part of this normalization process. Make
Lineage mandatory, which is now explicitly set in some tests.
2016-08-12 11:09:50 -04:00
James Bardin
c48a1423a1 Collapse nested if with an && 2016-08-10 16:34:21 -04:00
James Bardin
d6c8b40201 unify some of the test code
Have all the values in the testDiffFn go through the same code path
2016-08-10 11:37:55 -04:00
James Bardin
2e5791ab2b Allow the HCL input when prompted
We already accept HCL encoded input for -vars, and this expands that to
accept HCL when prompted for a value on the command line as well.
2016-08-10 11:14:31 -04:00
James Nugent
fa64ac7815 release: clean up after v0.7.0 2016-08-02 18:17:05 +00:00
James Nugent
e822a79165
v0.7.0 2016-08-02 17:59:44 +00:00
James Bardin
1af7ee87a2 Silence log output when not verbose
Set the default log package output to iotuil.Discard during tests if the
`-v` flag isn't set. If we are verbose, then apply the filter according
to the TF_LOG env variable.
2016-08-01 17:19:14 -04:00