Commit Graph

28 Commits

Author SHA1 Message Date
Mitchell Hashimoto
2019a44f04
command/apply: apply from plan respects -backup and -state-out
Fixes #5409

I didn't expect this to be such a rabbit hole!

Based on git history, it appears that for "historical reasons"(tm),
setting up the various `state.State` structures for a plan were
_completely different logic_ than a normal `terraform apply`. This meant
that it was skipping things like disabling backups with `-backup="-"`.

This PR unifies loading from a plan to the normal state setup mechanism.
A few tests that were failing prior to this PR were added, no existing
tests were changed.
2016-10-28 20:51:05 -04:00
Mitchell Hashimoto
e8267f4907
command/push: failing test for pushing with no modules 2016-08-23 22:49:00 -07: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
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
James Nugent
b190aa05a5 core: Add missing OutputStates in synthetic state
In cases where we construct state directly rather than reading it via
the usual methods, we need to ensure that the necessary maps are
initialized correctly.
2016-06-22 17:06:41 +03:00
James Nugent
3ea3c657b5 core: Use OutputState in JSON instead of map
This commit forward ports the changes made for 0.6.17, in order to store
the type and sensitive flag against outputs.

It also refactors the logic of the import for V0 to V1 state, and
fixes up the call sites of the new format for outputs in V2 state.

Finally we fix up tests which did not previously set a state version
where one is required.
2016-05-18 13:25:20 -05:00
Mitchell Hashimoto
f34ef1f92a
command: compilation works
This still isn't ready. But this gets tests passing and compilation
working
2016-05-10 17:03:58 -07:00
Paul Hinze
c7f5450a96 command: Add terraform untaint
- [x] Docs
 - [x] Command Unit Tests
 - [x] State Unit Tests

Closes #4820
2016-03-11 12:38:57 -06:00
Mitchell Hashimoto
344e7c26b5 fix a bunch of tests from go-getter import 2015-10-15 13:48:58 -07:00
Kevin Nuckolls
bf9c5c46d0 Tests for apply parallelism=1 and parallelism=2 2015-09-29 22:41:26 -07:00
Mitchell Hashimoto
22087181af command/push: archive, upload 2015-03-24 13:30:22 -07:00
Mitchell Hashimoto
4ec31ecb95 command/taint: new command 2015-02-26 10:29:23 -08:00
Mitchell Hashimoto
622690583c command/init: remove dependency on remote package 2015-02-23 15:13:55 -08:00
Armon Dadgar
09d7fb7c27 command: cleanup test function names 2014-12-10 13:27:08 -08:00
Armon Dadgar
34df217514 command/pull: Adding the pull command 2014-12-10 13:27:07 -08:00
Mitchell Hashimoto
af548c9b53 command/plan: ask for input 2014-09-29 11:24:16 -07:00
Mitchell Hashimoto
a36b3e1ec5 command: tests pass 2014-09-24 15:48:46 -07:00
Mitchell Hashimoto
9b2b3a963f ResourceDiff => InstanceDiff 2014-09-17 16:33:24 -07:00
Mitchell Hashimoto
cdad3036ae command: closer to compiling 2014-09-17 11:15:07 -07:00
Mitchell Hashimoto
642fed0356 command: terraform.tfvars loaded by default if it exists 2014-08-05 09:32:01 -07:00
Mitchell Hashimoto
dc0ec11ec9 command: fix tests 2014-07-22 19:43:09 -07:00
Mitchell Hashimoto
6bf543cb07 command/plan: default state path 2014-07-11 21:03:56 -07:00
Mitchell Hashimoto
8f7244695f command/graph: takes config dir as arg 2014-07-11 20:38:03 -07:00
Mitchell Hashimoto
a6ae7230d1 command: use new API 2014-07-03 11:46:40 -07:00
Mitchell Hashimoto
64363da9dd command/plan: add -destroy flag to plan a destroy 2014-07-01 09:12:05 -07:00
Mitchell Hashimoto
fe79e5df03 command/apply: can take a plan as an argument 2014-06-27 14:43:33 -07:00
Mitchell Hashimoto
84cf644a30 command: apply uses the new plan structure 2014-06-20 12:51:42 -07:00
Mitchell Hashimoto
82af81b606 command: tests for apply 2014-06-18 21:36:44 -07:00