Skip to content

Commit

Permalink
Merge pull request #2476 from hashicorp/b-orphan-provider-inherit
Browse files Browse the repository at this point in the history
terraform: module orphans providers should inherit config
  • Loading branch information
mitchellh committed Jun 25, 2015
2 parents fb66be7 + afe5ec6 commit 632cc92
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 2 deletions.
48 changes: 48 additions & 0 deletions terraform/context_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4392,6 +4392,54 @@ func TestContext2Apply_moduleDestroyOrder(t *testing.T) {
}
}

func TestContext2Apply_moduleOrphanProvider(t *testing.T) {
m := testModule(t, "apply-module-orphan-provider-inherit")
p := testProvider("aws")
p.ApplyFn = testApplyFn
p.DiffFn = testDiffFn

p.ConfigureFn = func(c *ResourceConfig) error {
if _, ok := c.Get("value"); !ok {
return fmt.Errorf("value is not found")
}

return nil
}

// Create a state with an orphan module
state := &State{
Modules: []*ModuleState{
&ModuleState{
Path: []string{"root", "child"},
Resources: map[string]*ResourceState{
"aws_instance.bar": &ResourceState{
Type: "aws_instance",
Primary: &InstanceState{
ID: "bar",
},
},
},
},
},
}

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

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

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

func TestContext2Apply_moduleVarResourceCount(t *testing.T) {
m := testModule(t, "apply-module-var-resource-count")
p := testProvider("aws")
Expand Down
8 changes: 6 additions & 2 deletions terraform/graph_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,14 +117,12 @@ func (b *BuiltinGraphBuilder) Steps(path []string) []GraphTransformer {
&MissingProviderTransformer{Providers: b.Providers},
&ProviderTransformer{},
&CloseProviderTransformer{},
&PruneProviderTransformer{},
&DisableProviderTransformer{},

// Provisioner-related transformations
&MissingProvisionerTransformer{Provisioners: b.Provisioners},
&ProvisionerTransformer{},
&CloseProvisionerTransformer{},
&PruneProvisionerTransformer{},

// Run our vertex-level transforms
&VertexTransformer{
Expand Down Expand Up @@ -154,6 +152,12 @@ func (b *BuiltinGraphBuilder) Steps(path []string) []GraphTransformer {
// We don't do the following for modules.
if len(path) <= 1 {
steps = append(steps,
// Prune the providers and provisioners. This must happen
// only once because flattened modules might depend on empty
// providers.
&PruneProviderTransformer{},
&PruneProvisionerTransformer{},

// Create the destruction nodes
&DestroyTransformer{FullDestroy: b.Destroy},
&CreateBeforeDestroyTransformer{},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
provider "aws" {
value = "foo"
}

0 comments on commit 632cc92

Please sign in to comment.