mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-26 00:41:27 -06:00
f6505870cc
* providers.Interface: huge renamification This commit renames a handful of functions in the providers.Interface to match changes made in protocol v6. The following commit implements this change across the rest of the codebase; I put this in a separate commit for ease of reviewing and will squash these together when merging. One noteworthy detail: protocol v6 removes the config from the ValidateProviderConfigResponse, since it's never been used. I chose to leave that in place in the interface until we deprecate support for protocol v5 entirely. Note that none of these changes impact current providers using protocol v5; the protocol is unchanged. Only the translation layer between the proto and terraform have changed.
129 lines
3.3 KiB
Go
129 lines
3.3 KiB
Go
// simple provider a minimal provider implementation for testing
|
|
package simple
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
|
|
"github.com/hashicorp/terraform/configs/configschema"
|
|
"github.com/hashicorp/terraform/providers"
|
|
"github.com/zclconf/go-cty/cty"
|
|
ctyjson "github.com/zclconf/go-cty/cty/json"
|
|
)
|
|
|
|
type simple struct {
|
|
schema providers.GetProviderSchemaResponse
|
|
}
|
|
|
|
func Provider() providers.Interface {
|
|
simpleResource := providers.Schema{
|
|
Block: &configschema.Block{
|
|
Attributes: map[string]*configschema.Attribute{
|
|
"id": {
|
|
Computed: true,
|
|
Type: cty.String,
|
|
},
|
|
"value": {
|
|
Optional: true,
|
|
Type: cty.String,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
return simple{
|
|
schema: providers.GetProviderSchemaResponse{
|
|
Provider: providers.Schema{
|
|
Block: nil,
|
|
},
|
|
ResourceTypes: map[string]providers.Schema{
|
|
"simple_resource": simpleResource,
|
|
},
|
|
DataSources: map[string]providers.Schema{
|
|
"simple_resource": simpleResource,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func (s simple) GetProviderSchema() providers.GetProviderSchemaResponse {
|
|
return s.schema
|
|
}
|
|
|
|
func (s simple) ValidateProviderConfig(req providers.ValidateProviderConfigRequest) (resp providers.ValidateProviderConfigResponse) {
|
|
return resp
|
|
}
|
|
|
|
func (s simple) ValidateResourceConfig(req providers.ValidateResourceConfigRequest) (resp providers.ValidateResourceConfigResponse) {
|
|
return resp
|
|
}
|
|
|
|
func (s simple) ValidateDataSourceConfig(req providers.ValidateDataSourceConfigRequest) (resp providers.ValidateDataSourceConfigResponse) {
|
|
return resp
|
|
}
|
|
|
|
func (p simple) UpgradeResourceState(req providers.UpgradeResourceStateRequest) (resp providers.UpgradeResourceStateResponse) {
|
|
ty := p.schema.ResourceTypes[req.TypeName].Block.ImpliedType()
|
|
val, err := ctyjson.Unmarshal(req.RawStateJSON, ty)
|
|
resp.Diagnostics = resp.Diagnostics.Append(err)
|
|
resp.UpgradedState = val
|
|
return resp
|
|
}
|
|
|
|
func (s simple) ConfigureProvider(providers.ConfigureProviderRequest) (resp providers.ConfigureProviderResponse) {
|
|
return resp
|
|
}
|
|
|
|
func (s simple) Stop() error {
|
|
return nil
|
|
}
|
|
|
|
func (s simple) ReadResource(req providers.ReadResourceRequest) (resp providers.ReadResourceResponse) {
|
|
// just return the same state we received
|
|
resp.NewState = req.PriorState
|
|
return resp
|
|
}
|
|
|
|
func (s simple) PlanResourceChange(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) {
|
|
m := req.ProposedNewState.AsValueMap()
|
|
_, ok := m["id"]
|
|
if !ok {
|
|
m["id"] = cty.UnknownVal(cty.String)
|
|
}
|
|
|
|
resp.PlannedState = cty.ObjectVal(m)
|
|
return resp
|
|
}
|
|
|
|
func (s simple) ApplyResourceChange(req providers.ApplyResourceChangeRequest) (resp providers.ApplyResourceChangeResponse) {
|
|
if req.PlannedState.IsNull() {
|
|
resp.NewState = req.PlannedState
|
|
return resp
|
|
}
|
|
|
|
m := req.PlannedState.AsValueMap()
|
|
_, ok := m["id"]
|
|
if !ok {
|
|
m["id"] = cty.StringVal(time.Now().String())
|
|
}
|
|
resp.NewState = cty.ObjectVal(m)
|
|
|
|
return resp
|
|
}
|
|
|
|
func (s simple) ImportResourceState(providers.ImportResourceStateRequest) (resp providers.ImportResourceStateResponse) {
|
|
resp.Diagnostics = resp.Diagnostics.Append(errors.New("unsupported"))
|
|
return resp
|
|
}
|
|
|
|
func (s simple) ReadDataSource(req providers.ReadDataSourceRequest) (resp providers.ReadDataSourceResponse) {
|
|
m := req.Config.AsValueMap()
|
|
m["id"] = cty.StringVal("static_id")
|
|
resp.State = cty.ObjectVal(m)
|
|
return resp
|
|
}
|
|
|
|
func (s simple) Close() error {
|
|
return nil
|
|
}
|