mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-23 23:50:12 -06:00
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()
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
7
terraform/testdata/plan-targeted/main.tf
vendored
7
terraform/testdata/plan-targeted/main.tf
vendored
@ -3,5 +3,10 @@ resource "aws_instance" "foo" {
|
||||
}
|
||||
|
||||
resource "aws_instance" "bar" {
|
||||
foo = "${aws_instance.foo.num}"
|
||||
foo = aws_instance.foo.num
|
||||
}
|
||||
|
||||
module "mod" {
|
||||
source = "./mod"
|
||||
count = 1
|
||||
}
|
||||
|
3
terraform/testdata/plan-targeted/mod/main.tf
vendored
Normal file
3
terraform/testdata/plan-targeted/mod/main.tf
vendored
Normal file
@ -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()
|
||||
case addrs.AbsResource:
|
||||
targetAddr = target.Config()
|
||||
case addrs.ModuleInstance:
|
||||
targetAddr = target.Module()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user