Skip to content

Commit

Permalink
Merge pull request #29522 from hashicorp/jbardin/json-blocktoattr
Browse files Browse the repository at this point in the history
allow json output to marshal ConfigModeAttr blocks
  • Loading branch information
jbardin committed Sep 7, 2021
2 parents a9dfe7b + ac2a870 commit 1ad0421
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
4 changes: 4 additions & 0 deletions internal/command/jsonconfig/expression.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/hashicorp/terraform/internal/addrs"
"github.com/hashicorp/terraform/internal/configs/configschema"
"github.com/hashicorp/terraform/internal/lang"
"github.com/hashicorp/terraform/internal/lang/blocktoattr"
"github.com/zclconf/go-cty/cty"
ctyjson "github.com/zclconf/go-cty/cty/json"
)
Expand Down Expand Up @@ -96,6 +97,9 @@ func marshalExpressions(body hcl.Body, schema *configschema.Block) expressions {
// (lowSchema is an hcl.BodySchema:
// https://godoc.org/github.com/hashicorp/hcl/v2/hcl#BodySchema )

// fix any ConfigModeAttr blocks present from legacy providers
body = blocktoattr.FixUpBlockAttrs(body, schema)

// Use the low-level schema with the body to decode one level We'll just
// ignore any additional content that's not covered by the schema, which
// will effectively ignore "dynamic" blocks, and may also ignore other
Expand Down
28 changes: 28 additions & 0 deletions internal/command/jsonconfig/expression_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,29 @@ func TestMarshalExpressions(t *testing.T) {
},
},
},
{
hcltest.MockBody(&hcl.BodyContent{
Blocks: hcl.Blocks{
{
Type: "block_to_attr",
Body: hcltest.MockBody(&hcl.BodyContent{

Attributes: hcl.Attributes{
"foo": {
Name: "foo",
Expr: hcltest.MockExprTraversalSrc(`module.foo.bar`),
},
},
}),
},
},
}),
expressions{
"block_to_attr": expression{
References: []string{"module.foo.bar", "module.foo"},
},
},
},
}

for _, test := range tests {
Expand All @@ -89,6 +112,11 @@ func TestMarshalExpressions(t *testing.T) {
Type: cty.String,
Optional: true,
},
"block_to_attr": {
Type: cty.List(cty.Object(map[string]cty.Type{
"foo": cty.String,
})),
},
},
}

Expand Down

0 comments on commit 1ad0421

Please sign in to comment.