Merge pull request #32683 from hashicorp/jbardin/import-terraform-data

allow terraform_data to import
This commit is contained in:
James Bardin 2023-02-17 09:51:02 -05:00 committed by GitHub
commit 014a425d0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 1 deletions

View File

@ -119,7 +119,11 @@ func (p *Provider) ApplyResourceChange(req providers.ApplyResourceChangeRequest)
}
// ImportResourceState requests that the given resource be imported.
func (p *Provider) ImportResourceState(providers.ImportResourceStateRequest) providers.ImportResourceStateResponse {
func (p *Provider) ImportResourceState(req providers.ImportResourceStateRequest) providers.ImportResourceStateResponse {
if req.TypeName == "terraform_data" {
return importDataStore(req)
}
panic("unimplemented - terraform_remote_state has no resources")
}

View File

@ -146,3 +146,24 @@ func applyDataStoreResourceChange(req providers.ApplyResourceChangeRequest) (res
return resp
}
// TODO: This isn't very useful even for examples, because terraform_data has
// no way to refresh the full resource value from only the import ID. This
// minimal implementation allows the import to succeed, and can be extended
// once the configuration is available during import.
func importDataStore(req providers.ImportResourceStateRequest) (resp providers.ImportResourceStateResponse) {
schema := dataStoreResourceSchema()
v := cty.ObjectVal(map[string]cty.Value{
"id": cty.StringVal(req.ID),
})
state, err := schema.Block.CoerceValue(v)
resp.Diagnostics = resp.Diagnostics.Append(err)
resp.ImportedResources = []providers.ImportedResource{
{
TypeName: req.TypeName,
State: state,
},
}
return resp
}