12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package provider
- import (
- "context"
- "net/http"
- "github.com/hashicorp/terraform-plugin-framework/datasource"
- "github.com/hashicorp/terraform-plugin-framework/diag"
- "github.com/hashicorp/terraform-plugin-framework/provider"
- "github.com/hashicorp/terraform-plugin-framework/resource"
- "github.com/hashicorp/terraform-plugin-framework/tfsdk"
- "github.com/hashicorp/terraform-plugin-framework/types"
- )
- // Ensure ScaffoldingProvider satisfies various provider interfaces.
- var _ provider.Provider = &ScaffoldingProvider{}
- var _ provider.ProviderWithMetadata = &ScaffoldingProvider{}
- // ScaffoldingProvider defines the provider implementation.
- type ScaffoldingProvider struct {
- // version is set to the provider version on release, "dev" when the
- // provider is built and ran locally, and "test" when running acceptance
- // testing.
- version string
- }
- // ScaffoldingProviderModel describes the provider data model.
- type ScaffoldingProviderModel struct {
- Endpoint types.String `tfsdk:"endpoint"`
- }
- func (p *ScaffoldingProvider) Metadata(ctx context.Context, req provider.MetadataRequest, resp *provider.MetadataResponse) {
- resp.TypeName = "scaffolding"
- resp.Version = p.version
- }
- func (p *ScaffoldingProvider) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostics) {
- return tfsdk.Schema{
- Attributes: map[string]tfsdk.Attribute{
- "endpoint": {
- MarkdownDescription: "Example provider attribute",
- Optional: true,
- Type: types.StringType,
- },
- },
- }, nil
- }
- func (p *ScaffoldingProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) {
- var data ScaffoldingProviderModel
- resp.Diagnostics.Append(req.Config.Get(ctx, &data)...)
- if resp.Diagnostics.HasError() {
- return
- }
- // Configuration values are now available.
- // if data.Endpoint.IsNull() { /* ... */ }
- // Example client configuration for data sources and resources
- client := http.DefaultClient
- resp.DataSourceData = client
- resp.ResourceData = client
- }
- func (p *ScaffoldingProvider) Resources(ctx context.Context) []func() resource.Resource {
- return []func() resource.Resource{
- NewExampleResource,
- }
- }
- func (p *ScaffoldingProvider) DataSources(ctx context.Context) []func() datasource.DataSource {
- return []func() datasource.DataSource{
- NewExampleDataSource,
- }
- }
- func New(version string) func() provider.Provider {
- return func() provider.Provider {
- return &ScaffoldingProvider{
- version: version,
- }
- }
- }
|