terraform: import graph should setup parent refs to providers
Fixes #11212 The import graph builder was missing the transform to setup links to parent providers, so provider inheritance didn't work properly. This adds that. This also removes the `PruneProviderTransform` since that has no value in this graph since we'll never add an unused provider.
This commit is contained in:
parent
f84fd39ef9
commit
b2fb3b1d0f
|
@ -208,6 +208,53 @@ func TestContextImport_moduleProvider(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// Test that import sets up the graph properly for provider inheritance
|
||||
func TestContextImport_providerInherit(t *testing.T) {
|
||||
p := testProvider("aws")
|
||||
ctx := testContext2(t, &ContextOpts{
|
||||
Providers: map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
})
|
||||
|
||||
p.ImportStateReturn = []*InstanceState{
|
||||
&InstanceState{
|
||||
ID: "foo",
|
||||
Ephemeral: EphemeralState{Type: "aws_instance"},
|
||||
},
|
||||
}
|
||||
|
||||
configured := false
|
||||
p.ConfigureFn = func(c *ResourceConfig) error {
|
||||
configured = true
|
||||
|
||||
if v, ok := c.Get("foo"); !ok || v.(string) != "bar" {
|
||||
return fmt.Errorf("bad")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
m := testModule(t, "import-provider-inherit")
|
||||
|
||||
_, err := ctx.Import(&ImportOpts{
|
||||
Module: m,
|
||||
Targets: []*ImportTarget{
|
||||
&ImportTarget{
|
||||
Addr: "module.child.aws_instance.foo",
|
||||
ID: "bar",
|
||||
},
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
if !configured {
|
||||
t.Fatal("didn't configure provider")
|
||||
}
|
||||
}
|
||||
|
||||
// Test that import will interpolate provider configuration and use
|
||||
// that configuration for import.
|
||||
func TestContextImport_providerVarConfig(t *testing.T) {
|
||||
|
|
|
@ -47,7 +47,7 @@ func (b *ImportGraphBuilder) Steps() []GraphTransformer {
|
|||
|
||||
steps := []GraphTransformer{
|
||||
// Create all our resources from the configuration and state
|
||||
&ConfigTransformerOld{Module: mod},
|
||||
&ConfigTransformer{Module: mod},
|
||||
|
||||
// Add the import steps
|
||||
&ImportStateTransformer{Targets: b.ImportTargets},
|
||||
|
@ -55,8 +55,8 @@ func (b *ImportGraphBuilder) Steps() []GraphTransformer {
|
|||
// Provider-related transformations
|
||||
&MissingProviderTransformer{Providers: b.Providers, Concrete: concreteProvider},
|
||||
&ProviderTransformer{},
|
||||
&DisableProviderTransformerOld{},
|
||||
&PruneProviderTransformer{},
|
||||
&DisableProviderTransformer{},
|
||||
&ParentProviderTransformer{},
|
||||
&AttachProviderConfigTransformer{Module: mod},
|
||||
|
||||
// This validates that the providers only depend on variables
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
# Empty
|
|
@ -0,0 +1,5 @@
|
|||
provider "aws" {
|
||||
foo = "bar"
|
||||
}
|
||||
|
||||
module "child" { source = "./child" }
|
Loading…
Reference in New Issue