mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-25 08:21:07 -06:00
helper/schema: Get on computed diff should be empty
This commit is contained in:
parent
c9a541d95b
commit
faa4e75960
@ -558,20 +558,25 @@ func (d *ResourceData) getPrimitive(
|
||||
|
||||
if d.diff != nil && source >= getSourceDiff {
|
||||
attrD, ok := d.diff.Attributes[k]
|
||||
if ok && !attrD.NewComputed {
|
||||
result = attrD.New
|
||||
if attrD.NewExtra != nil {
|
||||
// If NewExtra != nil, then we have processed data as the New,
|
||||
// so we store that but decode the unprocessed data into result
|
||||
resultProcessed = result
|
||||
if ok {
|
||||
if !attrD.NewComputed {
|
||||
result = attrD.New
|
||||
if attrD.NewExtra != nil {
|
||||
// If NewExtra != nil, then we have processed data as the New,
|
||||
// so we store that but decode the unprocessed data into result
|
||||
resultProcessed = result
|
||||
|
||||
err := mapstructure.WeakDecode(attrD.NewExtra, &result)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
err := mapstructure.WeakDecode(attrD.NewExtra, &result)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resultSet = true
|
||||
resultSet = true
|
||||
} else {
|
||||
result = ""
|
||||
resultSet = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,8 +30,8 @@ func TestResourceDataGet(t *testing.T) {
|
||||
Diff: &terraform.ResourceDiff{
|
||||
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||
"availability_zone": &terraform.ResourceAttrDiff{
|
||||
Old: "",
|
||||
New: "",
|
||||
Old: "foo",
|
||||
New: "bar",
|
||||
NewComputed: true,
|
||||
},
|
||||
},
|
||||
@ -117,6 +117,36 @@ func TestResourceDataGet(t *testing.T) {
|
||||
Value: "bar",
|
||||
},
|
||||
|
||||
{
|
||||
Schema: map[string]*Schema{
|
||||
"availability_zone": &Schema{
|
||||
Type: TypeString,
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
},
|
||||
|
||||
State: &terraform.ResourceState{
|
||||
Attributes: map[string]string{
|
||||
"availability_zone": "foo",
|
||||
},
|
||||
},
|
||||
|
||||
Diff: &terraform.ResourceDiff{
|
||||
Attributes: map[string]*terraform.ResourceAttrDiff{
|
||||
"availability_zone": &terraform.ResourceAttrDiff{
|
||||
Old: "foo",
|
||||
New: "bar",
|
||||
NewComputed: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Key: "availability_zone",
|
||||
Value: "",
|
||||
},
|
||||
|
||||
{
|
||||
Schema: map[string]*Schema{
|
||||
"port": &Schema{
|
||||
|
Loading…
Reference in New Issue
Block a user