terraform-provider-gitea/vendor/github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema/resource_importer.go
Tobias Trabelsi e1266ebf64
Some checks reported errors
continuous-integration/drone/pr Build encountered an error
continuous-integration/drone/push Build encountered an error
updated GHA
Update to v2 SDK
updated dependencies
2022-08-06 16:21:18 +02:00

80 lines
3.4 KiB
Go

package schema
import (
"context"
"errors"
)
// ResourceImporter defines how a resource is imported in Terraform. This
// can be set onto a Resource struct to make it Importable. Not all resources
// have to be importable; if a Resource doesn't have a ResourceImporter then
// it won't be importable.
//
// "Importing" in Terraform is the process of taking an already-created
// resource and bringing it under Terraform management. This can include
// updating Terraform state, generating Terraform configuration, etc.
type ResourceImporter struct {
// State is called to convert an ID to one or more InstanceState to
// insert into the Terraform state.
//
// Deprecated: State is deprecated in favor of StateContext.
// Only one of the two functions can bet set.
State StateFunc
// StateContext is called to convert an ID to one or more InstanceState to
// insert into the Terraform state. If this isn't specified, then
// the ID is passed straight through. This function receives a context
// that will cancel if Terraform sends a cancellation signal.
StateContext StateContextFunc
}
// StateFunc is the function called to import a resource into the Terraform state.
//
// Deprecated: Please use the context aware equivalent StateContextFunc.
type StateFunc func(*ResourceData, interface{}) ([]*ResourceData, error)
// StateContextFunc is the function called to import a resource into the
// Terraform state. It is given a ResourceData with only ID set. This
// ID is going to be an arbitrary value given by the user and may not map
// directly to the ID format that the resource expects, so that should
// be validated.
//
// This should return a slice of ResourceData that turn into the state
// that was imported. This might be as simple as returning only the argument
// that was given to the function. In other cases (such as AWS security groups),
// an import may fan out to multiple resources and this will have to return
// multiple.
//
// To create the ResourceData structures for other resource types (if
// you have to), instantiate your resource and call the Data function.
type StateContextFunc func(context.Context, *ResourceData, interface{}) ([]*ResourceData, error)
// InternalValidate should be called to validate the structure of this
// importer. This should be called in a unit test.
//
// Resource.InternalValidate() will automatically call this, so this doesn't
// need to be called manually. Further, Resource.InternalValidate() is
// automatically called by Provider.InternalValidate(), so you only need
// to internal validate the provider.
func (r *ResourceImporter) InternalValidate() error {
if r.State != nil && r.StateContext != nil {
return errors.New("Both State and StateContext cannot be set.")
}
return nil
}
// ImportStatePassthrough is an implementation of StateFunc that can be
// used to simply pass the ID directly through.
//
// Deprecated: Please use the context aware ImportStatePassthroughContext instead
func ImportStatePassthrough(d *ResourceData, m interface{}) ([]*ResourceData, error) {
return []*ResourceData{d}, nil
}
// ImportStatePassthroughContext is an implementation of StateContextFunc that can be
// used to simply pass the ID directly through. This should be used only
// in the case that an ID-only refresh is possible.
func ImportStatePassthroughContext(ctx context.Context, d *ResourceData, m interface{}) ([]*ResourceData, error) {
return []*ResourceData{d}, nil
}