Skip to content

Commit

Permalink
Merge pull request #12340 from hashicorp/jbardin/GH-12253
Browse files Browse the repository at this point in the history
return 0 from resourceCountMax with a nil Resource
  • Loading branch information
jbardin authored Mar 2, 2017
2 parents d2f09d0 + ff445d3 commit e5e37b0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
4 changes: 4 additions & 0 deletions terraform/interpolate.go
Original file line number Diff line number Diff line change
Expand Up @@ -698,6 +698,10 @@ func (i *Interpolater) resourceCountMax(
// from the state. Plan and so on may not have any state yet so
// we do a full interpolation.
if i.Operation != walkApply {
if cr == nil {
return 0, nil
}

count, err := cr.Count()
if err != nil {
return 0, err
Expand Down
25 changes: 21 additions & 4 deletions terraform/interpolate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ func TestInterpolator_interpolatedListOrder(t *testing.T) {
&ModuleState{
Path: rootModulePath,
Resources: map[string]*ResourceState{
"aws_route53_zone.list": &ResourceState{
"aws_route53_zone.yada": &ResourceState{
Type: "aws_route53_zone",
Dependencies: []string{},
Primary: &InstanceState{
Expand Down Expand Up @@ -719,7 +719,7 @@ func TestInterpolator_interpolatedListOrder(t *testing.T) {

list := []interface{}{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"}

testInterpolate(t, i, scope, "aws_route53_zone.list.foo",
testInterpolate(t, i, scope, "aws_route53_zone.yada.foo",
interfaceToVariableSwallowError(list))
}

Expand Down Expand Up @@ -844,7 +844,7 @@ func TestInterpolator_sets(t *testing.T) {
&ModuleState{
Path: rootModulePath,
Resources: map[string]*ResourceState{
"aws_network_interface.set": &ResourceState{
"aws_route53_zone.yada": &ResourceState{
Type: "aws_network_interface",
Dependencies: []string{},
Primary: &InstanceState{
Expand Down Expand Up @@ -872,10 +872,27 @@ func TestInterpolator_sets(t *testing.T) {

set := []interface{}{"10.42.16.179"}

testInterpolate(t, i, scope, "aws_network_interface.set.private_ips",
testInterpolate(t, i, scope, "aws_route53_zone.yada.private_ips",
interfaceToVariableSwallowError(set))
}

// When a splat reference is made to a resource that is unknown, we should
// return an empty list rather than panicking.
func TestInterpolater_resourceUnknownVariableList(t *testing.T) {
i := &Interpolater{
Module: testModule(t, "plan-computed-data-resource"),
State: NewState(), // state,
StateLock: new(sync.RWMutex),
}

scope := &InterpolationScope{
Path: rootModulePath,
}

testInterpolate(t, i, scope, "aws_vpc.bar.*.foo",
interfaceToVariableSwallowError([]interface{}{}))
}

func testInterpolate(
t *testing.T, i *Interpolater,
scope *InterpolationScope,
Expand Down

0 comments on commit e5e37b0

Please sign in to comment.