Mitchell Hashimoto
e68327e765
terraform: add config transformer to enable preventDestroy
2016-10-22 12:12:29 -07:00
Mitchell Hashimoto
0ed896a313
terraform: implement destroy planning basics from state
2016-10-22 12:12:29 -07:00
Mitchell Hashimoto
db807f4b0f
terraform: destroy graph builder, -Xnew-destroy flag
2016-10-22 12:12:29 -07:00
Mitchell Hashimoto
3dd64d9f2e
terraform: ResourceConfig.Equal should sort ComputedKeys
...
This was causing otherwise equal ResourceConfigs to report non-equal
which was incorrect, thus causing incorrect shadow graph errors.
2016-10-22 12:00:05 -07:00
Mitchell Hashimoto
f8e35ecb2f
terraform: log starting graph walk outside of the goroutine
...
This is so ordering makes a bit more sense reliably.
2016-10-21 16:20:38 -07:00
Mitchell Hashimoto
ae4f79e3b6
command/meta: add -shadow flag to disable shadow graph
...
Since it is still very much possible for this to cause problems, this
can be used to disable the shadow graph. We'll purposely not document
this since the goal is to remove this flag as we become more confident
with it.
2016-10-21 14:25:05 -07:00
Mitchell Hashimoto
4a6cc3b100
terraform: new apply resource node supports data sources
...
This enables the new apply graph's resource node to apply data sources.
Data sources appear to only be tested for "refresh" which is likely
where they're set but they've also been implemented (not my code, not
trying to edit code) within the "apply" operation as well.
This adds an apply test to ensure data sources work, and then modifies
the new apply node to support data sources.
2016-10-20 22:03:48 -07:00
Mitchell Hashimoto
1d27e554a5
terraform: test to ensure data sources work on Apply operation
...
It appears data sources have always been coded to work during apply, as
can be verified with this test (no impl. changes were necessary to make
it pass).
This test should be added to ensure our apply graph always works with
data sources as well.
2016-10-20 21:53:54 -07:00
Mitchell Hashimoto
2c1a21a8ef
terraform: disable shadowing the experimental graph
2016-10-20 15:17:28 -07:00
Mitchell Hashimoto
a89dcfd1b1
terraform: re-enable shadow tests
2016-10-19 15:09:01 -07:00
Mitchell Hashimoto
51e90cd641
terraform: move references for disable provider transform to old
2016-10-19 15:07:00 -07:00
Mitchell Hashimoto
fa25a3051b
terraform: orphan resources in old graph need unique ID
2016-10-19 15:05:38 -07:00
Mitchell Hashimoto
d27c8fbbbc
terraform: compared states from shadow graph must be pruned
2016-10-19 15:01:54 -07:00
Mitchell Hashimoto
e4ef1fe553
terraform: disable providers in new apply graph
...
This adds the proper logic for "disabling" providers to the new apply
graph: interolating and storing the config for inheritance but not
actually initializing and configuring the provider.
This is important since parent modules will often contain incomplete
provider configurations for the purpose of inheritance that would error
if they were actually attempted to be configured (since they're
incomplete). If the provider is not used, it should be "disabled".
2016-10-19 14:54:00 -07:00
Mitchell Hashimoto
13b9007474
terraform: logic for shadowing the original graph
...
This introduces failing tests. How many is unknown since shadow graph
errors cause a panic.
2016-10-19 14:17:12 -07:00
Mitchell Hashimoto
7d36e991da
terraform: resource address internal can parse data resource addrs
2016-10-19 14:12:30 -07:00
Mitchell Hashimoto
5d598ad217
terraform: if components is closed, initialize closed components
...
This was happening if the shadow initializes a provider that is never
used by the real side. We need to make sure it starts closed.
2016-10-19 14:10:46 -07:00
Mitchell Hashimoto
d87bdc2d2b
terraform: update destroy resource with proper unique-ifier for shadow
...
This adds a proper unique extra field so that the shadow graph can
properly compare values.
2016-10-19 13:51:11 -07:00
Mitchell Hashimoto
c9c1912b34
terraform: missing fields from ApplyGraphBuilder after master rebase
2016-10-19 13:46:32 -07:00
Mitchell Hashimoto
e59efa024b
terraform: fix merge issues with master
2016-10-19 13:41:30 -07:00
Mitchell Hashimoto
ec15783f24
-Xnew-apply to enable the new apply graph
2016-10-19 13:39:28 -07:00
Mitchell Hashimoto
eb9ecea863
terraform: don't set Provider on destroy nodes
...
This doesn't explicitly set `rs.Provider` on destroy nodes.
To be honest, I'm not sure why this was done in the first place (git
blame points to 6fda7bb5483a155b8ae1e1e4e4b7b7c4073bc1d9). Tests always
passed without it, and by adding it it causes other tests to fail. I
should've never changed those other tests.
Removing it now to get tests passing, this also reverts the test changes
made in 8213824962f085279810f04b60b95d1176a3a3f2.
2016-10-19 13:39:13 -07:00
Mitchell Hashimoto
7c2c9b82a3
terraform: interpolation for multi-var checks both ".0" and "" suffix
2016-10-19 13:39:13 -07:00
Mitchell Hashimoto
9ac4ee4b52
terraform: transform module variables does parent first
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
924f7a49e0
terraform: module variable transform must do children later (tested)
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
c1664d2eaa
terraform: cbd works!
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
23665790f3
terraform: destroy resource should have no references
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
aaee4df363
terraform: working on enabling CBD, some cycles
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
4aa84a2071
terraform: CBD makes the proper edge connections for dependent resources
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
3d4937b784
terraform: FlatConfigTransformer
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
6622ca001d
terraform: abstract resource nodes
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
046faf247a
terraform: cleanup and failing test for CBD
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
4e8e6cd661
dag: add EdgesFrom, EdgesTo, needs tests
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
b9b23e8483
terraform: improved logging
2016-10-19 13:38:53 -07:00
Mitchell Hashimoto
7baf64f806
terraform: starting CBD, destroy edge for the destroy relationship
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
4988378ccb
terraform: remove diff transformer test that no longer happens
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
311d27108e
terraform: Enable DestroyEdgeTransformer
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
08dade5475
terraform: more destroy edge tests
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
7b2bd93094
terraform: test the destroy edge transform
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
bd5d97f9f5
terraform: transform to attach resource configs
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
ceb5c53d56
terraform: destroy nodes should call post state update hook
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
56b4521d8f
terraform: provider depends on config references
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
ebc7d209a7
terraform: new graph fixes ".0" and "" boundaries on counts
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
2e8cb94a5e
terraform: orphan outputs are deleted from the state
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
38b9f7794d
terraform: reference transformer shouldn't make loop to self
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
5018617049
terraform: change node name so that it shows up properly
2016-10-19 13:38:52 -07:00
Mitchell Hashimoto
cd04ccfa62
terraform: update a test to be easier to target
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
80ef7f1acf
terraform: properly compare bad diffs
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
9e8cd48cda
terraform: add destroy nodes, destroys kind of work
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
2e8a419fd8
terraform: starting work on destroy
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
dfa02e4412
terraform: rename attach config to only attach provider config
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
0e666aa575
terraform: get tests to not panic on failures
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
0463ad74a8
terraform: RootVariableTransform
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
993c29f34a
terraform: move ModuleVariableTransformer to its own file
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
0d815872e1
terraform: tests for module variable node
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
3fb83f013e
terraform: depend on parent items
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
ad03a21040
terraform: rename to ModuleVariable
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
4dfdc52ba0
terraform: first stap at module variables, going to redo some things
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
6376c4ca9b
terraform: update comment
2016-10-19 13:38:51 -07:00
Mitchell Hashimoto
f2aa880625
terraform: proper prefix for output connects
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
7d07f20893
terraform: fix references to module outputs
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
0d7674b079
terraform: apply builder adds outputs to graphs
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
ba51295267
terraform: ReferenceTransform test
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
21888b1227
terraform: test for referencetransform for modules
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
994f5ce773
terraform: ReferenceTransform to connect references
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
e9e8304e95
terraform: new output transform that isn't used yet
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
7dd4813730
terraform: rename test to be more easily targetable
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
5220cba77c
terraform: enable provisioners to execute
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
0f0eecfee7
terraform: add provisioner nodes to the apply graph
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
4033e90474
terraform: clarify commment
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
39abec4970
terraform: NodeApplyableProvider evals with config
2016-10-19 13:38:50 -07:00
Mitchell Hashimoto
79a742c1ae
terraform: new provider graph node for flattened world
2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
b2ef4e9ac0
terraform: add way to toggle the graphs to use for apply
2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
11578f0792
terraform: tests for ParentProviderTransformer
2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
87bff933ef
terraform: ParentProviderTransform to connect parent providers
2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
ba751c4e3b
terraform: comment to avoid panic
2016-10-19 13:38:49 -07:00
Mitchell Hashimoto
e784e4a434
terraform: remove more nil panics (doesn't change test logic)
2016-10-19 13:38:49 -07:00
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