Merge pull request #2788 from hashicorp/b-splat-unknown
terraform: splatting with computed values is computed [GH-2744]
This commit is contained in:
commit
28762152c6
|
@ -433,6 +433,11 @@ func (i *Interpolater) computeResourceMultiVariable(
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If any value is unknown, the whole thing is unknown
|
||||||
|
if attr == config.UnknownVariableValue {
|
||||||
|
return config.UnknownVariableValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
values = append(values, attr)
|
values = append(values, attr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,80 @@ func TestInterpolater_pathRoot(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInterpolater_resourceVariable(t *testing.T) {
|
||||||
|
lock := new(sync.RWMutex)
|
||||||
|
state := &State{
|
||||||
|
Modules: []*ModuleState{
|
||||||
|
&ModuleState{
|
||||||
|
Path: rootModulePath,
|
||||||
|
Resources: map[string]*ResourceState{
|
||||||
|
"aws_instance.web": &ResourceState{
|
||||||
|
Type: "aws_instance",
|
||||||
|
Primary: &InstanceState{
|
||||||
|
ID: "bar",
|
||||||
|
Attributes: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
i := &Interpolater{
|
||||||
|
Module: testModule(t, "interpolate-resource-variable"),
|
||||||
|
State: state,
|
||||||
|
StateLock: lock,
|
||||||
|
}
|
||||||
|
|
||||||
|
scope := &InterpolationScope{
|
||||||
|
Path: rootModulePath,
|
||||||
|
}
|
||||||
|
|
||||||
|
testInterpolate(t, i, scope, "aws_instance.web.foo", ast.Variable{
|
||||||
|
Value: "bar",
|
||||||
|
Type: ast.TypeString,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestInterpolater_resourceVariableMulti(t *testing.T) {
|
||||||
|
lock := new(sync.RWMutex)
|
||||||
|
state := &State{
|
||||||
|
Modules: []*ModuleState{
|
||||||
|
&ModuleState{
|
||||||
|
Path: rootModulePath,
|
||||||
|
Resources: map[string]*ResourceState{
|
||||||
|
"aws_instance.web": &ResourceState{
|
||||||
|
Type: "aws_instance",
|
||||||
|
Primary: &InstanceState{
|
||||||
|
ID: "bar",
|
||||||
|
Attributes: map[string]string{
|
||||||
|
"foo": config.UnknownVariableValue,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
i := &Interpolater{
|
||||||
|
Module: testModule(t, "interpolate-resource-variable"),
|
||||||
|
State: state,
|
||||||
|
StateLock: lock,
|
||||||
|
}
|
||||||
|
|
||||||
|
scope := &InterpolationScope{
|
||||||
|
Path: rootModulePath,
|
||||||
|
}
|
||||||
|
|
||||||
|
testInterpolate(t, i, scope, "aws_instance.web.*.foo", ast.Variable{
|
||||||
|
Value: config.UnknownVariableValue,
|
||||||
|
Type: ast.TypeString,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testInterpolate(
|
func testInterpolate(
|
||||||
t *testing.T, i *Interpolater,
|
t *testing.T, i *Interpolater,
|
||||||
scope *InterpolationScope,
|
scope *InterpolationScope,
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
resource "aws_instance" "web" {}
|
Loading…
Reference in New Issue