diff --git a/command/apply.go b/command/apply.go index 46da4a67b..f4a845000 100644 --- a/command/apply.go +++ b/command/apply.go @@ -95,13 +95,13 @@ func (c *ApplyCommand) Run(args []string) int { return 1 } - _, err = tf.Plan(state) + plan, err := tf.Plan(state) if err != nil { c.Ui.Error(fmt.Sprintf("Error running plan: %s", err)) return 1 } - state, err = tf.Apply(state, nil) + state, err = tf.Apply(plan) if err != nil { c.Ui.Error(fmt.Sprintf("Error applying plan: %s", err)) return 1 diff --git a/command/command_test.go b/command/command_test.go index e151b9de0..1b87d2bf1 100644 --- a/command/command_test.go +++ b/command/command_test.go @@ -25,6 +25,10 @@ func testTFConfig(p terraform.ResourceProvider) *terraform.Config { func testProvider() *terraform.MockResourceProvider { p := new(terraform.MockResourceProvider) + p.RefreshFn = func( + s *terraform.ResourceState) (*terraform.ResourceState, error) { + return s, nil + } p.ResourcesReturn = []terraform.ResourceType{ terraform.ResourceType{ Name: "test_instance", diff --git a/command/test-fixtures/diff/main.tf b/command/test-fixtures/plan/main.tf similarity index 100% rename from command/test-fixtures/diff/main.tf rename to command/test-fixtures/plan/main.tf diff --git a/terraform/terraform.go b/terraform/terraform.go index 68c41d93b..893f10078 100644 --- a/terraform/terraform.go +++ b/terraform/terraform.go @@ -201,8 +201,10 @@ func (t *Terraform) planWalkFn( if !diff.Empty() { rs = r.State.MergeDiff(diff) } - for ak, av := range rs.Attributes { - vars[fmt.Sprintf("%s.%s", r.Id, ak)] = av + if rs != nil { + for ak, av := range rs.Attributes { + vars[fmt.Sprintf("%s.%s", r.Id, ak)] = av + } } return vars, nil