mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
implement UpgradeResourceState in the mock provider
The default is a Noop that simply encodes the provided state
This commit is contained in:
parent
ec65fb960d
commit
059dcf1e25
@ -6,6 +6,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/zclconf/go-cty/cty"
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
ctyjson "github.com/zclconf/go-cty/cty/json"
|
||||||
|
|
||||||
"github.com/hashicorp/terraform/config"
|
"github.com/hashicorp/terraform/config"
|
||||||
"github.com/hashicorp/terraform/config/hcl2shim"
|
"github.com/hashicorp/terraform/config/hcl2shim"
|
||||||
@ -191,6 +192,10 @@ func (p *MockProvider) UpgradeResourceState(r providers.UpgradeResourceStateRequ
|
|||||||
p.Lock()
|
p.Lock()
|
||||||
defer p.Unlock()
|
defer p.Unlock()
|
||||||
|
|
||||||
|
schemas := p.getSchema()
|
||||||
|
schema := schemas.ResourceTypes[r.TypeName]
|
||||||
|
schemaType := schema.Block.ImpliedType()
|
||||||
|
|
||||||
p.UpgradeResourceStateCalled = true
|
p.UpgradeResourceStateCalled = true
|
||||||
p.UpgradeResourceStateRequest = r
|
p.UpgradeResourceStateRequest = r
|
||||||
|
|
||||||
@ -198,7 +203,28 @@ func (p *MockProvider) UpgradeResourceState(r providers.UpgradeResourceStateRequ
|
|||||||
return p.UpgradeResourceStateFn(r)
|
return p.UpgradeResourceStateFn(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
return p.UpgradeResourceStateResponse
|
resp := p.UpgradeResourceStateResponse
|
||||||
|
|
||||||
|
if resp.UpgradedState == cty.NilVal {
|
||||||
|
switch {
|
||||||
|
case r.RawStateFlatmap != nil:
|
||||||
|
v, err := hcl2shim.HCL2ValueFromFlatmap(r.RawStateFlatmap, schemaType)
|
||||||
|
if err != nil {
|
||||||
|
resp.Diagnostics = resp.Diagnostics.Append(err)
|
||||||
|
return resp
|
||||||
|
}
|
||||||
|
resp.UpgradedState = v
|
||||||
|
case len(r.RawStateJSON) > 0:
|
||||||
|
v, err := ctyjson.Unmarshal(r.RawStateJSON, schemaType)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
resp.Diagnostics = resp.Diagnostics.Append(err)
|
||||||
|
return resp
|
||||||
|
}
|
||||||
|
resp.UpgradedState = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *MockProvider) Configure(r providers.ConfigureRequest) providers.ConfigureResponse {
|
func (p *MockProvider) Configure(r providers.ConfigureRequest) providers.ConfigureResponse {
|
||||||
|
Loading…
Reference in New Issue
Block a user