35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
|
package json
|
||
|
|
||
|
import (
|
||
|
"github.com/zclconf/go-cty/cty"
|
||
|
ctyjson "github.com/zclconf/go-cty/cty/json"
|
||
|
|
||
|
"github.com/hashicorp/terraform/addrs"
|
||
|
)
|
||
|
|
||
|
type ResourceAddr struct {
|
||
|
Addr string `json:"addr"`
|
||
|
Module string `json:"module"`
|
||
|
Resource string `json:"resource"`
|
||
|
ImpliedProvider string `json:"implied_provider"`
|
||
|
ResourceType string `json:"resource_type"`
|
||
|
ResourceName string `json:"resource_name"`
|
||
|
ResourceKey ctyjson.SimpleJSONValue `json:"resource_key"`
|
||
|
}
|
||
|
|
||
|
func newResourceAddr(addr addrs.AbsResourceInstance) ResourceAddr {
|
||
|
resourceKey := ctyjson.SimpleJSONValue{Value: cty.NilVal}
|
||
|
if addr.Resource.Key != nil {
|
||
|
resourceKey.Value = addr.Resource.Key.Value()
|
||
|
}
|
||
|
return ResourceAddr{
|
||
|
Addr: addr.String(),
|
||
|
Module: addr.Module.String(),
|
||
|
Resource: addr.Resource.String(),
|
||
|
ImpliedProvider: addr.Resource.Resource.ImpliedProvider(),
|
||
|
ResourceType: addr.Resource.Resource.Type,
|
||
|
ResourceName: addr.Resource.Resource.Name,
|
||
|
ResourceKey: resourceKey,
|
||
|
}
|
||
|
}
|