Mitchell Hashimoto
0728e25f43
terraform: env vars are lower priority
2015-05-14 09:58:30 -07:00
Mitchell Hashimoto
fe74d69852
terraform: validation should succeed if env var set [GH-1930]
2015-05-13 20:09:05 -07:00
Paul Hinze
0fff7d1673
core: validate graph w/ diff during plan phase
...
This reimplements my prior attempt at nipping issues where a plan did
not yield the same cycle an apply did. My prior attempt was to have
ctx.Validate generate a "Verbose" worst-case graph. It turns out that
skipping PruneDestroyTransformer to generate this graph misses important
heuristics that prevent cycles by dropping destroy nodes that are
determined to be unused.
This resulted in Validate improperly failing in scenarios where these
heuristics would have broken the cycle.
We detected the problem during the work on #1781 and worked around the
issue by reverting to the non-Verbose graph in Validate.
This commit accomplishes the original goal in a better way - by
generating the full graph and checking it once Plan has calculated the
diff. This guarantees that any graph issue that would be caught by Apply
will be caught by Plan.
2015-05-05 17:24:44 -05:00
Mitchell Hashimoto
6d4969f64c
terraform: run prune destroy on validate
2015-05-05 12:11:49 -07:00
Paul Hinze
d4b9362518
core: validate on verbose graph to detect some cycles earlier
...
Most CBD-related cycles include destroy nodes, and destroy nodes were
all being pruned from the graph before staring the Validate walk.
In practice this meant that we had scenarios that would error out with
graph cycles on Apply that _seemed_ fine during Plan.
This introduces a Verbose option to the GraphBuilder that tells it to
generate a "worst-case" graph. Validate sets this to true so that cycle
errors will always trigger at this step if they're going to happen.
(This Verbose option will be exposed as a CLI flag to `terraform graph`
in a second incoming PR.)
refs #1651
2015-04-23 11:07:13 -05:00
Mitchell Hashimoto
7a1592ff1e
terraform: don't panic on input for bad default type [GH-1344]
2015-04-18 16:31:21 -07:00
Paul Hinze
97acccd3ed
core: targeted operations
...
Add `-target=resource` flag to core operations, allowing users to
target specific resources in their infrastructure. When `-target` is
used, the operation will only apply to that resource and its
dependencies.
The calculated dependencies are different depending on whether we're
running a normal operation or a `terraform destroy`.
Generally, "dependencies" refers to ancestors: resources falling
_before_ the target in the graph, because their changes are required to
accurately act on the target.
For destroys, "dependencies" are descendents: those resources which fall
_after_ the target. These resources depend on our target, which is going
to be destroyed, so they should also be destroyed.
2015-03-31 14:49:38 -05:00
Mitchell Hashimoto
5e27bfc040
command/push: read name from the config
2015-03-24 13:30:23 -07:00
Mitchell Hashimoto
22087181af
command/push: archive, upload
2015-03-24 13:30:22 -07:00
Mitchell Hashimoto
2dce764d75
terraform: add input mode to only ask for unset variables
...
This adds a new input mode for Context.Input() that will only ask for
variable values that are not set.
2015-03-24 13:30:21 -07:00
Mitchell Hashimoto
f3af221866
terraform: make DeepCopy public
2015-02-23 21:32:27 -08:00
Mitchell Hashimoto
709c40026c
terraform: remove debug println
2015-02-23 13:45:45 -08:00
Mitchell Hashimoto
fa222a44c3
terraform: limit parallelism
2015-02-19 12:08:34 -08:00
Mitchell Hashimoto
459ad04d71
terraform: provider cache should append the provider name to it
2015-02-19 12:08:33 -08:00
Mitchell Hashimoto
b1e5b32322
terraform: Graph returns *Graph for now
2015-02-19 12:08:32 -08:00
Mitchell Hashimoto
7552abed8b
terraform: fix Refresh func signature
2015-02-19 12:08:32 -08:00
Mitchell Hashimoto
7ccba588ac
terraform: gofmt -w -r 'Context2 -> Context' terraform/
2015-02-19 12:08:32 -08:00
Mitchell Hashimoto
e37c187228
terraform: goodbye context.go (old)
2015-02-19 12:08:32 -08:00
Mitchell Hashimoto
7c78a3749e
terraform: provider input
2015-02-19 12:08:08 -08:00
Mitchell Hashimoto
f3714f1efc
terraform: start Input
2015-02-19 12:08:08 -08:00
Mitchell Hashimoto
c8091aa338
terraform: fix more create-before-destroy state juggling
2015-02-19 12:08:07 -08:00
Mitchell Hashimoto
742b45886a
terraform: destroy nodes work properly
2015-02-19 12:08:06 -08:00
Mitchell Hashimoto
10e82375f2
terraform: early exit and cancellation
2015-02-19 12:08:05 -08:00
Mitchell Hashimoto
a614f6105a
terraform: apply starting
2015-02-19 12:08:04 -08:00
Mitchell Hashimoto
93f3050dbd
terraform: make things more linear
2015-02-19 12:08:04 -08:00
Mitchell Hashimoto
23d097ee53
terraform: module inputs are passed through to subgraphs
2015-02-19 12:08:01 -08:00
Mitchell Hashimoto
aae2d4c780
terraform: starting up the plans
2015-02-19 12:08:00 -08:00
Mitchell Hashimoto
e5e4ac7548
terraform: deep copy the state when refreshing
2015-02-19 12:08:00 -08:00
Mitchell Hashimoto
379c37dd06
terraform: refresh hooks
2015-02-19 12:08:00 -08:00
Mitchell Hashimoto
a616c362de
terraform: more tests
2015-02-19 12:08:00 -08:00
Mitchell Hashimoto
1e962b868d
terraform: Refresh, Read/Write state
2015-02-19 12:08:00 -08:00
Mitchell Hashimoto
863b9a4f45
terraform: filter eval nodes on operation
2015-02-19 12:07:59 -08:00
Mitchell Hashimoto
d94c4392eb
terraform: validate provisioners
2015-02-19 12:07:58 -08:00
Mitchell Hashimoto
58347617e8
terraform: trying this graphwalker thing
2015-02-19 12:07:56 -08:00
Mitchell Hashimoto
10264a7def
terraform: nicer errors by using multierror properly
2015-02-19 12:07:56 -08:00
Mitchell Hashimoto
d0786d20dd
terraform: more passing tests
2015-02-19 12:07:56 -08:00
Mitchell Hashimoto
de3d9fb9d9
terraform: evaluation interpolater connect
2015-02-19 12:07:56 -08:00
Mitchell Hashimoto
c308405b53
terraform: validation in progress
2015-02-19 12:07:55 -08:00
Mitchell Hashimoto
d9a964f44c
terraform: validate almost done
2015-02-19 12:07:55 -08:00
Mitchell Hashimoto
9f70c6fad5
terraform: rename context
2015-02-19 12:07:54 -08:00
Mitchell Hashimoto
659f0db8cf
terraform: Graph => GraphOld
2015-02-19 12:07:52 -08:00
Mitchell Hashimoto
2abeb2d9ac
config: use new API
2015-01-14 22:03:15 -08:00
Mitchell Hashimoto
8ae14f06b3
config: variables must be typed
2015-01-14 10:40:43 -08:00
Mitchell Hashimoto
1429ac6a7f
terraform: return unknown variable value if nil
2014-12-16 18:43:18 -08:00
Mitchell Hashimoto
ef60ac5b8c
terraform: update comment
2014-12-16 08:24:21 -08:00
Mitchell Hashimoto
e5f07567c6
terraform: module input to another module doesn't error [GH-659]
2014-12-16 08:23:19 -08:00
Armon Dadgar
f1cb297c59
terraform: Fixing issue with computed maps
2014-12-09 00:51:28 -08:00
Armon Dadgar
0a3d7bd121
terraform: Check module config for resource instead of state
2014-12-09 00:25:06 -08:00
Mitchell Hashimoto
e82a28529d
terraform: return errors for interpolations
2014-12-08 23:57:01 -08:00
Luke Amdor
ca48dcab4a
no module state, we shouldn't fail multivars yet
2014-12-06 15:30:19 -06:00
Luke Amdor
6dcb7166d1
fix destroy so incoming module vars get set
2014-12-05 17:18:45 -06:00
Luke Amdor
fead5872e5
Fix for multivars when modulestate not created yet
2014-12-02 13:53:09 -06:00
Luke Amdor
4b3bf76406
looking up count of multivars in module config
2014-11-28 07:14:58 -06:00
Armon Dadgar
a5d444b8e3
terraform: fix module output handling. Fixes #474
2014-11-24 19:18:52 -08:00
Armon Dadgar
f26b8df92f
Merge pull request #598 from hashicorp/f-mod-deps
...
Fix dependency handling of modules
2014-11-24 18:53:22 -08:00
Armon Dadgar
5b025c89f9
terraform: guard output types. Fixes #593
2014-11-24 16:49:38 -08:00
Armon Dadgar
d5fd4dabe8
terraform: Mark modules for destroy
2014-11-24 14:15:24 -08:00
Emil Hessman
4bfe18b40d
argument and verb formatting fixes reported by go vet
...
builtin/providers/aws/tags_test.go:56: unrecognized printf verb 'i'
builtin/providers/aws/tags_test.go:59: unrecognized printf verb 'i'
config/config_test.go:101: possible formatting directive in Fatal call
config/config_test.go:157: possible formatting directive in Fatal call
config/module/get_file_test.go:91: missing argument for Fatalf(%s): format reads arg 1, have only 0 args
helper/schema/schema.go:341: arg v.Type for printf verb %s of wrong type: schema.ValueType
helper/schema/schema.go:656: missing argument for Errorf(%s): format reads arg 2, have only 1 args
helper/schema/schema.go:912: arg schema.Type for printf verb %s of wrong type: schema.ValueType
terraform/context.go:178: arg v.Type() for printf verb %s of wrong type: github.com/hashicorp/terraform/config.VariableType
terraform/context.go:486: arg c.Operation for printf verb %s of wrong type: terraform.walkOperation
terraform/diff_test.go💯 arg actual for printf verb %s of wrong type: terraform.DiffChangeType
terraform/diff_test.go:235: arg actual for printf verb %s of wrong type: terraform.DiffChangeType
2014-11-02 13:56:44 +01:00
Mitchell Hashimoto
22f09b487b
terraform: refresh ignores variables with no values [GH-478]
2014-10-20 23:08:17 -07:00
Mitchell Hashimoto
0908e8f42c
terraform: don't fail refresh if output doesn't exist [GH-483]
2014-10-20 18:45:52 -07:00
Mitchell Hashimoto
686871310d
terraform: input properly sends on only set input
2014-10-18 14:54:42 -07:00
Mitchell Hashimoto
0a5e06d62c
terraform: merge interpolated inherited provider configurations [GH-418]
2014-10-18 13:58:01 -07:00
Mitchell Hashimoto
f03ab178bf
terraform: don't execute provisioners on destroy
2014-10-18 11:37:26 -07:00
Mitchell Hashimoto
990b814188
terraform: set count to 1 while validating [GH-442]
2014-10-17 18:18:28 -07:00
Mitchell Hashimoto
f626c5df96
terraform: validation works with count if default [GH-442]
2014-10-17 18:06:54 -07:00
Mitchell Hashimoto
82bf4f485b
terraform: taint resources who error on create with provisioners
...
[GH-434]
2014-10-16 23:19:07 -07:00
Mitchell Hashimoto
de4c922c9c
terraform: validation with unknown variables works [GH-432]
2014-10-16 15:54:56 -07:00
Armon Dadgar
422b82648c
terraform: Switch to using semaphore
2014-10-16 10:04:36 -07:00
Mitchell Hashimoto
5596ee7f53
terraform: don't panic if no state in Walk return [GH-403]
2014-10-15 20:32:19 -07:00
Mitchell Hashimoto
ce61b5caec
terraform: no outputs if we have no resources
2014-10-12 22:49:05 -07:00
Mitchell Hashimoto
d4d58ae44b
terraform: turn resource expand into graph
2014-10-12 08:57:08 -07:00
Mitchell Hashimoto
ecafcfa682
terraform: don't validate tainted resources
2014-10-11 16:02:07 -07:00
Mitchell Hashimoto
6e7d23d612
terraform: don't crash if validating orphan
2014-10-11 15:58:52 -07:00
Mitchell Hashimoto
e5ce6a97a3
Merge pull request #385 from hashicorp/f-splat-wtf
...
Fix variable "splatting"
2014-10-09 23:18:10 -07:00
Mitchell Hashimoto
975d564a22
terraform: remove debug stuff
2014-10-09 23:16:59 -07:00
Mitchell Hashimoto
6c96e0f6ac
terraform: nil out the Diff on a resource when expanding
...
This fixes a bug where the Destroy diff was being kept around for
nodes that shouldn't be destroyed. We added a test to verify this
doesn't happen.
2014-10-09 23:15:42 -07:00
Mitchell Hashimoto
865ec6a6bf
terraform: use the InterpSplitDelim
2014-10-09 16:17:00 -07:00
Mitchell Hashimoto
9dd7618fce
config: fix messaging for name symbols
2014-10-08 16:12:53 -07:00
Mitchell Hashimoto
9ed89dbabd
terraform: make wording better
2014-10-08 16:01:13 -07:00
Mitchell Hashimoto
36f4a644b6
terraform: warn if the name has special characters
2014-10-08 15:59:50 -07:00
Mitchell Hashimoto
8b5c120ecf
terraform: add InputMode to determine what is asked for
2014-10-08 10:18:45 -07:00
Mitchell Hashimoto
d714c6f2f1
terraform: test path variables
2014-10-07 20:09:30 -07:00
Mitchell Hashimoto
28acb7baa8
Merge pull request #361 from hashicorp/f-provisioner-ui
...
Foundational support for UI output from provisioners
2014-10-05 08:29:18 -07:00
Mitchell Hashimoto
b713f1ac8d
terraform: no longer check for nil diff as error
2014-10-04 16:47:42 -07:00
Mitchell Hashimoto
76f5f1057e
terraform: no longer require uiOutput, do it auto in Hook
2014-10-04 16:24:07 -07:00
Mitchell Hashimoto
d7a1f3dc0e
terraform: prefix the provisioner output
2014-10-04 10:38:46 -07:00
Mitchell Hashimoto
8b129babe5
terraform: change provisioners to take UIOutput
2014-10-04 09:20:05 -07:00
Mitchell Hashimoto
94f43ff145
terraform: fix crash if outputs with no state [GH-358]
2014-10-03 15:57:43 -07:00
Mitchell Hashimoto
2f2be4e936
terraform: show variable defaults when prompting for inputs
2014-10-02 22:33:38 -07:00
Mitchell Hashimoto
1ddf5bfc5f
terraform: guard against a nil resource
2014-10-02 22:24:01 -07:00
Mitchell Hashimoto
ea18b62e8f
terraform: count.index
2014-10-02 22:02:59 -07:00
Mitchell Hashimoto
66c58788fe
terraform: test count = 1 variable access
2014-10-02 17:24:22 -07:00
Mitchell Hashimoto
221e40a3a9
terraform: test count == zero
2014-10-02 17:18:40 -07:00
Mitchell Hashimoto
e4ba737392
terraform: validate count is non-negative
2014-10-02 17:14:25 -07:00
Mitchell Hashimoto
941e27b9f3
terraform: Validate expands properly
2014-10-02 13:24:38 -07:00
Mitchell Hashimoto
79520a19c4
terraform: walk the resource properly for destroy
2014-10-02 13:23:16 -07:00
Mitchell Hashimoto
3b89a7bdc7
terraform: more tests passing
2014-10-02 11:48:00 -07:00
Mitchell Hashimoto
fb1c224e12
terraform: expand resource nodes at walk time
2014-10-02 10:42:58 -07:00
Mitchell Hashimoto
fecb68f117
terraform: remove meta nodes
2014-10-01 18:08:52 -07:00
Armon Dadgar
4fe05428b3
terraform: Avoid having multiple primaries
2014-09-29 15:20:03 -07:00
Mitchell Hashimoto
d927c6e1f6
terraform: support var descriptions
2014-09-29 14:05:10 -07:00
Mitchell Hashimoto
901c1448b4
command: make the UI a look nicer
2014-09-29 13:12:06 -07:00
Mitchell Hashimoto
9bb26f7695
terraform: Make output more machine-like
2014-09-29 12:52:48 -07:00
Mitchell Hashimoto
980fce1d6c
terraform: make UX a bit better for input
2014-09-29 12:45:28 -07:00
Mitchell Hashimoto
99d0e52ead
terraform: validate should use the full config
2014-09-29 12:04:14 -07:00
Mitchell Hashimoto
133a28e363
terraform: prefix the Id for configuring providers
2014-09-29 10:36:49 -07:00
Mitchell Hashimoto
2791badf01
terraform: ask for input for providers
2014-09-29 09:13:15 -07:00
Mitchell Hashimoto
fd70e5e7bf
terraform: Input() asks for variable inputs
2014-09-28 23:37:36 -07:00
Mitchell Hashimoto
4b3473e522
terraform: fix compilation from merge
2014-09-26 10:10:08 -07:00
Mitchell Hashimoto
0d1867c0b3
Merge branch 'f-module-apply'
...
Conflicts:
terraform/context.go
2014-09-26 10:08:35 -07:00
Mitchell Hashimoto
77b1c7daa0
terraform: destroy plans work with modules
2014-09-25 20:44:34 -07:00
Mitchell Hashimoto
1835a03842
terraform: hook parameter is an InstanceInfo
2014-09-25 10:40:44 -07:00
Mitchell Hashimoto
bc71d6adca
terraform: prefix errors/warnings with the module they came from
2014-09-24 22:35:11 -07:00
Mitchell Hashimoto
c88614c585
terraform: providers inherit properly for validation
2014-09-24 21:38:23 -07:00
Mitchell Hashimoto
6712ed15aa
terraform: clarify comment
2014-09-24 19:40:54 -07:00
Mitchell Hashimoto
8420b58015
terraform: clean up some functions
2014-09-24 19:36:00 -07:00
Mitchell Hashimoto
2d07f79c5a
terraform: validation validates the submodules
2014-09-24 19:31:30 -07:00
Mitchell Hashimoto
a36b3e1ec5
command: tests pass
2014-09-24 15:48:46 -07:00
Mitchell Hashimoto
718fb42f4b
terraform: Plan should use module.Tree
2014-09-24 14:56:48 -07:00
Mitchell Hashimoto
1f1563c95b
terraform: provider inheritence is functional
2014-09-24 13:58:07 -07:00
Mitchell Hashimoto
8dbc7e0ccb
terraform: change the graph a bit to better support providers with
...
modules
This doesn't cause inheritence to work yet. That is coming
2014-09-24 13:31:35 -07:00
Mitchell Hashimoto
e8dfcdbe7b
terraform: computed input variables work to modules
2014-09-23 17:05:44 -07:00
Mitchell Hashimoto
9e871d5617
terraform: variables to modules work
2014-09-23 16:49:38 -07:00
Mitchell Hashimoto
a3b668bf7d
terraform: module w/ computed output works
2014-09-23 16:27:38 -07:00
Mitchell Hashimoto
bfa4e1d7d0
terraform: module output variables are functional
2014-09-23 16:07:41 -07:00
Mitchell Hashimoto
1b5d0ed0bb
terraform: outputs should be properly calculated for modules now
2014-09-23 15:46:20 -07:00
Mitchell Hashimoto
d443202b31
terraform: fix copying dependencies
2014-09-23 14:20:26 -07:00
Mitchell Hashimoto
b1a583e3de
terraform: plan with modules work
2014-09-23 14:15:40 -07:00
Mitchell Hashimoto
8dcc4528fc
terraform: basic sub-module walks work
...
Lots broken still, but its a start.
2014-09-23 13:47:20 -07:00
Mitchell Hashimoto
c164839ed1
terraform: walkContext
2014-09-23 13:21:45 -07:00
Mitchell Hashimoto
bc67e7c443
terraform: diff is split down into modules
2014-09-23 11:43:21 -07:00
Mitchell Hashimoto
a6f792b3aa
terraform: update graph to build subgraphs for modules
2014-09-22 16:48:18 -07:00
Mitchell Hashimoto
a32833af2c
terraform: Graph, Context, Plan all speak modules
2014-09-22 15:37:29 -07:00
Armon Dadgar
cdce8208f3
terraform: ensure provisioner runs only on instance create
2014-09-22 11:15:22 -07:00
Mitchell Hashimoto
73e2a43427
terraform: don't put the ResourceState in Resource
2014-09-21 22:08:21 -07:00
Mitchell Hashimoto
a3bb8435b7
terraform: remove unused
2014-09-21 09:42:37 -07:00
Mitchell Hashimoto
13a4818867
terraform: add flags field
2014-09-20 17:02:31 -07:00
Mitchell Hashimoto
53c23266ca
terraform: add Info field to Resource, remove from Node
2014-09-19 23:01:51 -06:00
Mitchell Hashimoto
06c862a379
terraform: tainted things all work
2014-09-19 22:47:53 -06:00
Mitchell Hashimoto
10b5661bc3
terraform: planning tainted resources works
2014-09-19 22:35:29 -06:00
Mitchell Hashimoto
157843725d
terraform: refreshing tainted resources works
2014-09-19 22:28:13 -06:00
Armon Dadgar
5e0765c24a
terraform: Refresh handles tainted instances
2014-09-19 16:24:17 -07:00
Armon Dadgar
dc01633f3c
terraform: fixing outputs for destroy plan
2014-09-17 17:35:43 -07:00
Mitchell Hashimoto
9aa8bec660
terraform: update comments
2014-09-17 17:23:19 -07:00
Mitchell Hashimoto
1aff5e98e1
terraform: some deepcopying going on
2014-09-17 17:18:17 -07:00
Armon Dadgar
c14a17f39b
terraform: save/restore dependency info for orphans
2014-09-17 17:01:55 -07:00
Mitchell Hashimoto
f9ce7de468
terraform: Refresh tests passing
2014-09-17 16:51:07 -07:00
Mitchell Hashimoto
e2aa067996
terraform: fixing Refresh tests
2014-09-17 16:47:26 -07:00
Mitchell Hashimoto
9b2b3a963f
ResourceDiff => InstanceDiff
2014-09-17 16:33:24 -07:00
Mitchell Hashimoto
0a6c675fba
terraform: update hooks to use InstanceState
2014-09-17 15:00:19 -07:00