Skip to content

Commit

Permalink
Merge pull request #9731 from hashicorp/b-deposed-hook
Browse files Browse the repository at this point in the history
terraform: deposed should trigger PostApply hook
  • Loading branch information
mitchellh authored Oct 31, 2016
2 parents e8f5e4b + b005a83 commit 92abaf1
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
59 changes: 59 additions & 0 deletions terraform/context_apply_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,65 @@ func TestContext2Apply_createBeforeDestroyUpdate(t *testing.T) {
}
}

func TestContext2Apply_createBeforeDestroy_hook(t *testing.T) {
h := new(MockHook)
m := testModule(t, "apply-good-create-before")
p := testProvider("aws")
p.ApplyFn = testApplyFn
p.DiffFn = testDiffFn
state := &State{
Modules: []*ModuleState{
&ModuleState{
Path: rootModulePath,
Resources: map[string]*ResourceState{
"aws_instance.bar": &ResourceState{
Type: "aws_instance",
Primary: &InstanceState{
ID: "bar",
Attributes: map[string]string{
"require_new": "abc",
},
},
},
},
},
},
}

var actual []string
var actualLock sync.Mutex
h.PostApplyFn = func(n *InstanceInfo, s *InstanceState, e error) (HookAction, error) {
actualLock.Lock()
defer actualLock.Unlock()
actual = append(actual, n.Id)
return HookActionContinue, nil
}

ctx := testContext2(t, &ContextOpts{
Module: m,
Hooks: []Hook{h},
Providers: map[string]ResourceProviderFactory{
"aws": testProviderFuncFixed(p),
},
State: state,
})

if p, err := ctx.Plan(); err != nil {
t.Fatalf("err: %s", err)
} else {
t.Logf(p.String())
}

if _, err := ctx.Apply(); err != nil {
t.Fatalf("err: %s", err)
}

expected := []string{"aws_instance.bar", "aws_instance.bar (deposed #0)"}
if !reflect.DeepEqual(actual, expected) {
t.Fatalf("bad: %#v", actual)
}
}

func TestContext2Apply_destroyComputed(t *testing.T) {
m := testModule(t, "apply-destroy-computed")
p := testProvider("aws")
Expand Down
6 changes: 6 additions & 0 deletions terraform/hook_mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ type MockHook struct {
PostApplyError error
PostApplyReturn HookAction
PostApplyReturnError error
PostApplyFn func(*InstanceInfo, *InstanceState, error) (HookAction, error)

PreDiffCalled bool
PreDiffInfo *InstanceInfo
Expand Down Expand Up @@ -111,6 +112,11 @@ func (h *MockHook) PostApply(n *InstanceInfo, s *InstanceState, e error) (HookAc
h.PostApplyInfo = n
h.PostApplyState = s
h.PostApplyError = e

if h.PostApplyFn != nil {
return h.PostApplyFn(n, s, e)
}

return h.PostApplyReturn, h.PostApplyReturnError
}

Expand Down
5 changes: 5 additions & 0 deletions terraform/transform_deposed.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,11 @@ func (n *graphNodeDeposedResource) EvalTree() EvalNode {
State: &state,
Index: n.Index,
},
&EvalApplyPost{
Info: info,
State: &state,
Error: &err,
},
&EvalReturnError{
Error: &err,
},
Expand Down

0 comments on commit 92abaf1

Please sign in to comment.