From e65a7269361849ecdcd59d512352abb065d4871c Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 11 Apr 2016 18:29:51 -0700 Subject: [PATCH] terraform: copy deps and provider for resource state --- terraform/state_add.go | 7 +++---- terraform/state_add_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/terraform/state_add.go b/terraform/state_add.go index 21a713e5da..4c6e0992f5 100644 --- a/terraform/state_add.go +++ b/terraform/state_add.go @@ -95,7 +95,7 @@ func stateAddFunc_Module_Module(s *State, addr *ResourceAddress, raw interface{} } func stateAddFunc_Resource_Resource(s *State, addr *ResourceAddress, raw interface{}) error { - src := raw.(*ResourceState) + src := raw.(*ResourceState).deepcopy() // Initialize the resource resourceRaw, exists := stateAddInitAddr(s, addr) @@ -104,9 +104,8 @@ func stateAddFunc_Resource_Resource(s *State, addr *ResourceAddress, raw interfa } resource := resourceRaw.(*ResourceState) resource.Type = src.Type - - // TODO: Dependencies - // TODO: Provider? + resource.Dependencies = src.Dependencies + resource.Provider = src.Provider // Move the primary if src.Primary != nil { diff --git a/terraform/state_add_test.go b/terraform/state_add_test.go index 54944258f1..f192c1acec 100644 --- a/terraform/state_add_test.go +++ b/terraform/state_add_test.go @@ -163,6 +163,38 @@ func TestStateAdd(t *testing.T) { }, }, + "ResourceState w/ deps, provider => Resource Addr (new)": { + false, + "aws_instance.foo", + &ResourceState{ + Type: "test_instance", + Provider: "foo", + Dependencies: []string{"bar"}, + Primary: &InstanceState{ + ID: "foo", + }, + }, + + &State{}, + &State{ + Modules: []*ModuleState{ + &ModuleState{ + Path: []string{"root"}, + Resources: map[string]*ResourceState{ + "aws_instance.foo": &ResourceState{ + Type: "test_instance", + Provider: "foo", + Dependencies: []string{"bar"}, + Primary: &InstanceState{ + ID: "foo", + }, + }, + }, + }, + }, + }, + }, + "ResourceState => Resource Addr (existing)": { true, "aws_instance.foo",