99 lines
3.9 KiB
Go
99 lines
3.9 KiB
Go
|
package tfprotov5
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
// DataSourceServer is an interface containing the methods a data source
|
||
|
// implementation needs to fill.
|
||
|
type DataSourceServer interface {
|
||
|
// ValidateDataSourceConfig is called when Terraform is checking that a
|
||
|
// data source's configuration is valid. It is guaranteed to have types
|
||
|
// conforming to your schema, but it is not guaranteed that all values
|
||
|
// will be known. This is your opportunity to do custom or advanced
|
||
|
// validation prior to a plan being generated.
|
||
|
ValidateDataSourceConfig(context.Context, *ValidateDataSourceConfigRequest) (*ValidateDataSourceConfigResponse, error)
|
||
|
|
||
|
// ReadDataSource is called when Terraform is refreshing a data
|
||
|
// source's state.
|
||
|
ReadDataSource(context.Context, *ReadDataSourceRequest) (*ReadDataSourceResponse, error)
|
||
|
}
|
||
|
|
||
|
// ValidateDataSourceConfigRequest is the request Terraform sends when it wants
|
||
|
// to validate a data source's configuration.
|
||
|
type ValidateDataSourceConfigRequest struct {
|
||
|
// TypeName is the type of data source Terraform is validating.
|
||
|
TypeName string
|
||
|
|
||
|
// Config is the configuration the user supplied for that data source.
|
||
|
// See the documentation on `DynamicValue` for more information about
|
||
|
// safely accessing the configuration.
|
||
|
//
|
||
|
// The configuration is represented as a tftypes.Object, with each
|
||
|
// attribute and nested block getting its own key and value.
|
||
|
//
|
||
|
// This configuration may contain unknown values if a user uses
|
||
|
// interpolation or other functionality that would prevent Terraform
|
||
|
// from knowing the value at request time.
|
||
|
Config *DynamicValue
|
||
|
}
|
||
|
|
||
|
// ValidateDataSourceConfigResponse is the response from the provider about the
|
||
|
// validity of a data source's configuration.
|
||
|
type ValidateDataSourceConfigResponse struct {
|
||
|
// Diagnostics report errors or warnings related to the given
|
||
|
// configuration. Returning an empty slice indicates a successful
|
||
|
// validation with no warnings or errors generated.
|
||
|
Diagnostics []*Diagnostic
|
||
|
}
|
||
|
|
||
|
// ReadDataSourceRequest is the request Terraform sends when it wants to get
|
||
|
// the latest state for a data source.
|
||
|
type ReadDataSourceRequest struct {
|
||
|
// TypeName is the type of data source Terraform is requesting an
|
||
|
// updated state for.
|
||
|
TypeName string
|
||
|
|
||
|
// Config is the configuration the user supplied for that data source.
|
||
|
// See the documentation on `DynamicValue` for information about safely
|
||
|
// accessing the configuration.
|
||
|
//
|
||
|
// The configuration is represented as a tftypes.Object, with each
|
||
|
// attribute and nested block getting its own key and value.
|
||
|
//
|
||
|
// This configuration may have unknown values.
|
||
|
Config *DynamicValue
|
||
|
|
||
|
// ProviderMeta supplies the provider metadata configuration for the
|
||
|
// module this data source is in. Module-specific provider metadata is
|
||
|
// an advanced feature and usage of it should be coordinated with the
|
||
|
// Terraform Core team by raising an issue at
|
||
|
// https://github.com/hashicorp/terraform/issues/new/choose. See the
|
||
|
// documentation on `DynamicValue` for information about safely
|
||
|
// accessing the configuration.
|
||
|
//
|
||
|
// The configuration is represented as a tftypes.Object, with each
|
||
|
// attribute and nested block getting its own key and value.
|
||
|
//
|
||
|
// This configuration will have known values for all fields.
|
||
|
ProviderMeta *DynamicValue
|
||
|
}
|
||
|
|
||
|
// ReadDataSourceResponse is the response from the provider about the current
|
||
|
// state of the requested data source.
|
||
|
type ReadDataSourceResponse struct {
|
||
|
// State is the current state of the data source, represented as a
|
||
|
// `DynamicValue`. See the documentation on `DynamicValue` for
|
||
|
// information about safely creating the `DynamicValue`.
|
||
|
//
|
||
|
// The state should be represented as a tftypes.Object, with each
|
||
|
// attribute and nested block getting its own key and value.
|
||
|
State *DynamicValue
|
||
|
|
||
|
// Diagnostics report errors or warnings related to retrieving the
|
||
|
// current state of the requested data source. Returning an empty slice
|
||
|
// indicates a successful validation with no warnings or errors
|
||
|
// generated.
|
||
|
Diagnostics []*Diagnostic
|
||
|
}
|