re-add ModuleInstance -> Module conversion
When working with a ConfigResource, the generalization of a ModuleInstance to a Module was inadvertently dropped, and there was to test coverage for that type of target. Ensure we can target a specific module instance alone.
This commit is contained in:
parent
0df5a7e6cf
commit
b9e076ec66
|
@ -6164,3 +6164,50 @@ resource "test_instance" "b" {
|
||||||
_, diags := ctx.Plan()
|
_, diags := ctx.Plan()
|
||||||
assertNoErrors(t, diags)
|
assertNoErrors(t, diags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestContext2Plan_targetedModuleInstance(t *testing.T) {
|
||||||
|
m := testModule(t, "plan-targeted")
|
||||||
|
p := testProvider("aws")
|
||||||
|
p.DiffFn = testDiffFn
|
||||||
|
ctx := testContext2(t, &ContextOpts{
|
||||||
|
Config: m,
|
||||||
|
Providers: map[addrs.Provider]providers.Factory{
|
||||||
|
addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p),
|
||||||
|
},
|
||||||
|
Targets: []addrs.Targetable{
|
||||||
|
addrs.RootModuleInstance.Child("mod", addrs.IntKey(0)),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
plan, diags := ctx.Plan()
|
||||||
|
if diags.HasErrors() {
|
||||||
|
t.Fatalf("unexpected errors: %s", diags.Err())
|
||||||
|
}
|
||||||
|
schema := p.GetSchemaReturn.ResourceTypes["aws_instance"]
|
||||||
|
ty := schema.ImpliedType()
|
||||||
|
|
||||||
|
if len(plan.Changes.Resources) != 1 {
|
||||||
|
t.Fatal("expected 1 changes, got", len(plan.Changes.Resources))
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, res := range plan.Changes.Resources {
|
||||||
|
ric, err := res.Decode(ty)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch i := ric.Addr.String(); i {
|
||||||
|
case "module.mod[0].aws_instance.foo":
|
||||||
|
if res.Action != plans.Create {
|
||||||
|
t.Fatalf("resource %s should be created", i)
|
||||||
|
}
|
||||||
|
checkVals(t, objectVal(t, schema, map[string]cty.Value{
|
||||||
|
"id": cty.UnknownVal(cty.String),
|
||||||
|
"num": cty.NumberIntVal(2),
|
||||||
|
"type": cty.StringVal("aws_instance"),
|
||||||
|
}), ric.After)
|
||||||
|
default:
|
||||||
|
t.Fatal("unknown instance:", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -3,5 +3,10 @@ resource "aws_instance" "foo" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "aws_instance" "bar" {
|
resource "aws_instance" "bar" {
|
||||||
foo = "${aws_instance.foo.num}"
|
foo = aws_instance.foo.num
|
||||||
|
}
|
||||||
|
|
||||||
|
module "mod" {
|
||||||
|
source = "./mod"
|
||||||
|
count = 1
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
resource "aws_instance" "foo" {
|
||||||
|
num = "2"
|
||||||
|
}
|
|
@ -145,6 +145,8 @@ func (t *TargetsTransformer) nodeIsTarget(v dag.Vertex, targets []addrs.Targetab
|
||||||
targetAddr = target.ContainingResource().Config()
|
targetAddr = target.ContainingResource().Config()
|
||||||
case addrs.AbsResource:
|
case addrs.AbsResource:
|
||||||
targetAddr = target.Config()
|
targetAddr = target.Config()
|
||||||
|
case addrs.ModuleInstance:
|
||||||
|
targetAddr = target.Module()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue