diff --git a/website/docs/plugin/framework/accessing-values.mdx b/website/docs/plugin/framework/accessing-values.mdx index dba20f70e..b532c44e7 100644 --- a/website/docs/plugin/framework/accessing-values.mdx +++ b/website/docs/plugin/framework/accessing-values.mdx @@ -7,6 +7,8 @@ description: |- # Accessing State, Config, and Plan +-> Note: The Plugin Framework is in beta. + There are various points at which the provider needs access to the data from the practitioner's configuration, Terraform's state, or generated plan. The same patterns are used for accessing this data, regardless of diff --git a/website/docs/plugin/framework/acctests.mdx b/website/docs/plugin/framework/acctests.mdx index afe3a2049..cfdf90edb 100644 --- a/website/docs/plugin/framework/acctests.mdx +++ b/website/docs/plugin/framework/acctests.mdx @@ -7,6 +7,8 @@ description: >- # Acceptance Tests +-> Note: The Plugin Framework is in beta. + You can implement testing with the [acceptance test framework](/plugin/sdkv2/testing/acceptance-tests) shipped with SDKv2. Writing and running tests is similar to SDKv2 providers, with the following exceptions: diff --git a/website/docs/plugin/framework/data-sources/configure.mdx b/website/docs/plugin/framework/data-sources/configure.mdx index 2cd749cc3..e5a1443af 100644 --- a/website/docs/plugin/framework/data-sources/configure.mdx +++ b/website/docs/plugin/framework/data-sources/configure.mdx @@ -6,6 +6,8 @@ description: >- # Configure Data Sources +-> Note: The Plugin Framework is in beta. + [Data sources](/plugin/framework/data-sources) may require provider-level data or remote system clients to operate correctly. The framework supports the ability to configure this data and/or clients once within the provider, then pass that information to data sources by adding the `Configure` method. ## Prepare Provider Configure Method diff --git a/website/docs/plugin/framework/data-sources/index.mdx b/website/docs/plugin/framework/data-sources/index.mdx index ff16efa74..1f42f0f54 100644 --- a/website/docs/plugin/framework/data-sources/index.mdx +++ b/website/docs/plugin/framework/data-sources/index.mdx @@ -7,6 +7,8 @@ description: >- # Data Sources +-> Note: The Plugin Framework is in beta. + [Data sources](/language/data-sources) are an abstraction that allow Terraform to reference external data. Unlike [managed resources](/language/resources), Terraform does not manage the lifecycle of the resource or data. Data sources are intended to have no side-effects. This page describes the basic implementation details required for supporting a data source within the provider. Further documentation is available for deeper data source concepts: diff --git a/website/docs/plugin/framework/data-sources/timeouts.mdx b/website/docs/plugin/framework/data-sources/timeouts.mdx index 0f158c5df..4eb824c6a 100644 --- a/website/docs/plugin/framework/data-sources/timeouts.mdx +++ b/website/docs/plugin/framework/data-sources/timeouts.mdx @@ -6,6 +6,8 @@ description: >- # Timeouts +-> Note: The Plugin Framework is in beta. + The reality of cloud infrastructure is that it typically takes time to perform operations such as booting operating systems, discovering services, and replicating state across network edges. As the provider developer you should take known delays in data source APIs into account in the `Read` function of the data source. Terraform supports configurable timeouts to assist in these situations. The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in the `Read` function. diff --git a/website/docs/plugin/framework/debugging.mdx b/website/docs/plugin/framework/debugging.mdx index ef1f8351e..b769cc37a 100644 --- a/website/docs/plugin/framework/debugging.mdx +++ b/website/docs/plugin/framework/debugging.mdx @@ -5,6 +5,8 @@ description: How to implement debugger support in Framework Terraform providers. # Debugging Framework Providers +-> Note: The Plugin Framework is in beta. + This page contains implementation details for inspecting runtime information of a Terraform provider developed with Framework via a debugger tool by adjusting the [provider server](/plugin/framework/provider-servers) implementation. Review the top level [Debugging](/plugin/debugging) page for information pertaining to the overall Terraform provider debugging process and other inspection options, such as log-based debugging. ## Code Implementation diff --git a/website/docs/plugin/framework/diagnostics.mdx b/website/docs/plugin/framework/diagnostics.mdx index 78933fce3..c6d91345f 100644 --- a/website/docs/plugin/framework/diagnostics.mdx +++ b/website/docs/plugin/framework/diagnostics.mdx @@ -7,6 +7,8 @@ description: |- # Returning Errors and Warnings +-> Note: The Plugin Framework is in beta. + Providers use `Diagnostics` to surface errors and warnings to practitioners, such as contextual messages returned from Terraform CLI at the end of command output: diff --git a/website/docs/plugin/framework/index.mdx b/website/docs/plugin/framework/index.mdx index a0409f7e1..7fe3d5e77 100644 --- a/website/docs/plugin/framework/index.mdx +++ b/website/docs/plugin/framework/index.mdx @@ -6,6 +6,8 @@ description: |- # Terraform Plugin Framework +-> Note: The Plugin Framework is in beta. + The plugin framework is a new way to develop Terraform Plugins on [protocol version 6](/plugin/how-terraform-works#protocol-version-6) or [protocol version 5](/plugin/how-terraform-works#protocol-version-5). It offers improvements and new features from [Teraform Plugin SDKv2](/plugin/sdkv2). ~> **Important**: [Which SDK Should I Use?](/plugin/which-sdk) explains the differences between [Teraform Plugin SDKv2](/plugin/sdkv2) and Terraform Plugin Framework to help you decide which option is right for your provider. diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx index 1d4201277..355369582 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/attribute-schema.mdx @@ -6,6 +6,8 @@ description: >- # Attribute Schema +-> Note: The Plugin Framework is in beta. + Attributes define how users can configure values for your Terraform provider, resources, and data sources. Refer to [Schemas - Attributes](/plugin/framework/schemas#attributes) in the Framework documentation for details. diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx index 20fbf3505..12487d7c5 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/blocks-computed.mdx @@ -6,6 +6,8 @@ description: >- # Blocks with Computed Fields +-> Note: The Plugin Framework is in beta. + Some providers, resources, and data sources include repeatable nested blocks in their attributes. Some blocks contain fields with `Computed: true`, which means that the provider code can define the value or that it could come from the output of terraform apply (e.g., the ID of an EC2 instance). diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx index a18b2e473..6f4ccf667 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/blocks.mdx @@ -6,6 +6,8 @@ description: >- # Blocks +-> Note: The Plugin Framework is in beta. + Some providers, resources, and data sources include repeatable nested blocks in their attributes. These nested blocks typically represent separate objects that are related to (or embedded within) the containing object. diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx index 67e8007d9..6b1f5f173 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/default-values.mdx @@ -7,6 +7,8 @@ description: >- # Default Values +-> Note: The Plugin Framework is in beta. + Default values set a value for an attribute when the Terraform configuration does not provide one. In SDKv2, default values are set via fields on an attribute's schema. In the Framework, you set default values via plan modification. Refer to diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/fields.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/fields.mdx index 40180ea56..9895d66c1 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/fields.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/fields.mdx @@ -6,6 +6,8 @@ description: >- # Attribute Fields +-> Note: The Plugin Framework is in beta. + A subset of attribute fields, such as required, optional, computed, or sensitive, define attribute behavior as boolean flags. Refer to [Schemas - Attributes](/plugin/framework/schemas#required) in the Framework documentation for details. diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx index 368442d5e..200060b6b 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/force-new.mdx @@ -6,6 +6,8 @@ description: >- # ForceNew +-> Note: The Plugin Framework is in beta. + In Terraform, sometimes a resource must be replaced when the value of an attribute changes. In SDKv2, this is accomplished via the `ForceNew` field. In the Framework, you implement the same behavior via a `RequiresReplace` plan modifier. Refer to diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/types.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/types.mdx index 7b79e9487..8761f5241 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/types.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/types.mdx @@ -6,6 +6,8 @@ description: >- # Attribute Types +-> Note: The Plugin Framework is in beta. + An attribute either contains a primitive type, such as an integer or a string, or contains other attributes. Attributes that contain other attributes are referred to as nested attributes, and are implemented by populating the `NestedAttributes` field on the `tfsdk.Attribute` struct. Refer to diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx index 5fb744beb..43d94fe6c 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/validators-custom.mdx @@ -6,6 +6,8 @@ description: >- # Custom Validators +-> Note: The Plugin Framework is in beta. + You can write custom validations that give users feedback about required syntax, types, and acceptable values in your provider. The Framework has a collection of [predefined validators](https://github.com/hashicorp/terraform-plugin-framework-validators). Refer to diff --git a/website/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx b/website/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx index 5057310b2..52ee4b603 100644 --- a/website/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx +++ b/website/docs/plugin/framework/migrating/attributes-blocks/validators-predefined.mdx @@ -7,6 +7,8 @@ description: >- # Validators - Predefined +-> Note: The Plugin Framework is in beta. + Attribute validators ensure that attributes do or do not contain specific values. You can use predefined validators for many use cases, or implement custom validators. Refer to [Schemas - Validators](/plugin/framework/schemas#validators) in the Framework documentation for details. Refer to the diff --git a/website/docs/plugin/framework/migrating/data-sources/index.mdx b/website/docs/plugin/framework/migrating/data-sources/index.mdx index 4e9e56c76..41496622e 100644 --- a/website/docs/plugin/framework/migrating/data-sources/index.mdx +++ b/website/docs/plugin/framework/migrating/data-sources/index.mdx @@ -6,6 +6,8 @@ description: >- # Data Sources +-> Note: The Plugin Framework is in beta. + Data sources let Terraform reference external data. Unlike resources, Terraform does not create, update, or delete data sources, and makes no attempt to modify the underlying API. Data Sources are a read-only resource type, so they only implement a subset of the operations that resources do. Refer to [Data Sources](/plugin/framework/data-sources) diff --git a/website/docs/plugin/framework/migrating/data-sources/timeouts.mdx b/website/docs/plugin/framework/migrating/data-sources/timeouts.mdx index 864a719ab..294fe8ec4 100644 --- a/website/docs/plugin/framework/migrating/data-sources/timeouts.mdx +++ b/website/docs/plugin/framework/migrating/data-sources/timeouts.mdx @@ -6,6 +6,8 @@ description: >- # Timeouts +-> Note: The Plugin Framework is in beta. + The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in CRUD functions. ## Specifying Timeouts in Configuration diff --git a/website/docs/plugin/framework/migrating/index.mdx b/website/docs/plugin/framework/migrating/index.mdx index 82d21d51f..67f289b13 100644 --- a/website/docs/plugin/framework/migrating/index.mdx +++ b/website/docs/plugin/framework/migrating/index.mdx @@ -6,6 +6,8 @@ description: >- # Overview +-> Note: The Plugin Framework is in beta. + This guide helps you migrate a Terraform provider from SDKv2 to the plugin Framework. We recommend migrating because the Framework has abstractions that make it easier to use, and it represents the future of Terraform plugin development. Refer to [Which SDK should I Use?](/plugin/which-sdk) for more details. This guide provides information and examples for most common use cases, but it does not discuss every nuance of migration. You can ask additional migration questions in the [HashiCorp Discuss forum](https://discuss.hashicorp.com/c/terraform-providers/tf-plugin-sdk/43). To request additions or updates to this guide, submit issues or pull requests to the [`terraform-plugin-framework` repository](https://github.com/hashicorp/terraform-plugin-framework). diff --git a/website/docs/plugin/framework/migrating/providers/index.mdx b/website/docs/plugin/framework/migrating/providers/index.mdx index 61d629396..1d5f17ddf 100644 --- a/website/docs/plugin/framework/migrating/providers/index.mdx +++ b/website/docs/plugin/framework/migrating/providers/index.mdx @@ -6,6 +6,8 @@ description: >- # Provider +-> Note: The Plugin Framework is in beta. + Providers are Terraform plugins that define resources and data sources for practitioners to use. You serve your providers with a provider server so they can interact with Terraform. diff --git a/website/docs/plugin/framework/migrating/resources/crud.mdx b/website/docs/plugin/framework/migrating/resources/crud.mdx index 356e87561..6c96ba9a6 100644 --- a/website/docs/plugin/framework/migrating/resources/crud.mdx +++ b/website/docs/plugin/framework/migrating/resources/crud.mdx @@ -6,6 +6,8 @@ description: >- # CRUD functions +-> Note: The Plugin Framework is in beta. + In Terraform, a resource represents a single instance of a given resource type. They modify a specific resource in the API and in Terraform's state through a set of Create, Read, Update, and Delete (CRUD) functions. A resource's CRUD functions implement the logic required to manage your resources with Terraform. Refer to diff --git a/website/docs/plugin/framework/migrating/resources/import.mdx b/website/docs/plugin/framework/migrating/resources/import.mdx index ea8503b74..41399ac5b 100644 --- a/website/docs/plugin/framework/migrating/resources/import.mdx +++ b/website/docs/plugin/framework/migrating/resources/import.mdx @@ -7,6 +7,8 @@ description: >- # Import +-> Note: The Plugin Framework is in beta. + Practitioners can use the [`terraform import` command](https://www.terraform.io/cli/commands/import) to let Terraform begin managing existing infrastructure by importing an existing resource into their Terraform project's state. A resource's importer function implements the logic to add a resource to Terraform's state. Refer to diff --git a/website/docs/plugin/framework/migrating/resources/index.mdx b/website/docs/plugin/framework/migrating/resources/index.mdx index 6243884b0..3754aab96 100644 --- a/website/docs/plugin/framework/migrating/resources/index.mdx +++ b/website/docs/plugin/framework/migrating/resources/index.mdx @@ -6,6 +6,8 @@ description: >- # Resources +-> Note: The Plugin Framework is in beta. + Resources are an abstraction that allow Terraform to manage infrastructure objects by defining create, read, update, and delete functionality that maps onto API operations. Resource schemas define what fields a resource has, give Terraform metadata about those fields, and define how the resource behaves. Refer to diff --git a/website/docs/plugin/framework/migrating/resources/plan-modification.mdx b/website/docs/plugin/framework/migrating/resources/plan-modification.mdx index a014a6895..c19a0db44 100644 --- a/website/docs/plugin/framework/migrating/resources/plan-modification.mdx +++ b/website/docs/plugin/framework/migrating/resources/plan-modification.mdx @@ -5,6 +5,9 @@ description: >- --- # Plan Modification + +-> Note: The Plugin Framework is in beta. + Your provider can modify the Terraform plan to match the expected end state. This can include replacing unknown values with expected known values or marking a resource that must be replaced. Refer to [Plan Modification](/plugin/framework/resources/plan-modification) in the Framework documentation for details. diff --git a/website/docs/plugin/framework/migrating/resources/state-upgrade.mdx b/website/docs/plugin/framework/migrating/resources/state-upgrade.mdx index 9b5e8c7be..29ca3910d 100644 --- a/website/docs/plugin/framework/migrating/resources/state-upgrade.mdx +++ b/website/docs/plugin/framework/migrating/resources/state-upgrade.mdx @@ -7,6 +7,8 @@ description: >- # State Upgraders +-> Note: The Plugin Framework is in beta. + When you update a resource's implementation in your provider, some changes may not be compatible with old versions. You can create state upgraders to automatically migrate resources provisioned with old schema configurations. Refer to [State Upgrade](/plugin/framework/resources/state-upgrade) in the Framework documentation for details. diff --git a/website/docs/plugin/framework/migrating/resources/timeouts.mdx b/website/docs/plugin/framework/migrating/resources/timeouts.mdx index bfb699699..cfe645ca6 100644 --- a/website/docs/plugin/framework/migrating/resources/timeouts.mdx +++ b/website/docs/plugin/framework/migrating/resources/timeouts.mdx @@ -6,6 +6,8 @@ description: >- # Timeouts +-> Note: The Plugin Framework is in beta. + The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in CRUD functions. ## Specifying Timeouts in Configuration diff --git a/website/docs/plugin/framework/migrating/schema/index.mdx b/website/docs/plugin/framework/migrating/schema/index.mdx index 6f5775760..d887236c2 100644 --- a/website/docs/plugin/framework/migrating/schema/index.mdx +++ b/website/docs/plugin/framework/migrating/schema/index.mdx @@ -6,6 +6,8 @@ description: >- # Schema +-> Note: The Plugin Framework is in beta. + Providers, resources, and data sources all use schema to define their attributes and behavior. Schemas specify the constraints of Terraform configuration blocks and how the provider, resource, or data source behaves. Refer to [Schemas](/plugin/framework/schemas) in the Framework documentation for details. diff --git a/website/docs/plugin/framework/migrating/testing.mdx b/website/docs/plugin/framework/migrating/testing.mdx index 636030582..e18613b9d 100644 --- a/website/docs/plugin/framework/migrating/testing.mdx +++ b/website/docs/plugin/framework/migrating/testing.mdx @@ -6,6 +6,8 @@ description: >- # Testing +-> Note: The Plugin Framework is in beta. + During migration, you should [write tests](#testing-migration) to verify that the behaviour of your provider has not been altered by the migration itself. You will also need to [update](#provider-factories) your tests too. diff --git a/website/docs/plugin/framework/path-expressions.mdx b/website/docs/plugin/framework/path-expressions.mdx index 9ee170d0a..de71bad21 100644 --- a/website/docs/plugin/framework/path-expressions.mdx +++ b/website/docs/plugin/framework/path-expressions.mdx @@ -8,6 +8,8 @@ description: >- # Path Expressions +-> Note: The Plugin Framework is in beta. + Path expressions are logic built on top of [paths](/plugin/framework/paths), which may represent one or more actual paths within a schema or schema-based data. Expressions enable providers to work outside the restrictions of absolute paths and steps. ## Usage diff --git a/website/docs/plugin/framework/paths.mdx b/website/docs/plugin/framework/paths.mdx index 76a292f60..e942935e2 100644 --- a/website/docs/plugin/framework/paths.mdx +++ b/website/docs/plugin/framework/paths.mdx @@ -7,6 +7,8 @@ description: >- # Paths +-> Note: The Plugin Framework is in beta. + An exact location within a [schema](/plugin/framework/schemas) or schema-based data such as [`tfsdk.Config`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#Config), [`tfsdk.Plan`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#Plan), or [`tfsdk.State`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/tfsdk#State), is referred to as a path. ## Usage diff --git a/website/docs/plugin/framework/provider-servers.mdx b/website/docs/plugin/framework/provider-servers.mdx index ff4fedf81..a0fb1ff21 100644 --- a/website/docs/plugin/framework/provider-servers.mdx +++ b/website/docs/plugin/framework/provider-servers.mdx @@ -7,6 +7,8 @@ description: >- # Provider Servers +-> Note: The Plugin Framework is in beta. + Before a [provider](/plugin/framework/providers) can be used with Terraform, it must implement a [gRPC server](https://grpc.io) that supports Terraform-specific connection and handshake handling on startup. The server must then implement the [Terraform Plugin Protocol](/plugin/how-terraform-works#terraform-plugin-protocol). The framework handles the majority of the server implementation details, however it is useful from a provider developer perspective to understand the provider server details at least at a high level. diff --git a/website/docs/plugin/framework/providers.mdx b/website/docs/plugin/framework/providers.mdx index 469ae4d57..8b2f47b46 100644 --- a/website/docs/plugin/framework/providers.mdx +++ b/website/docs/plugin/framework/providers.mdx @@ -8,6 +8,8 @@ description: >- # Providers +-> Note: The Plugin Framework is in beta. + Providers are Terraform plugins that define [resources](/plugin/framework/resources) and [data sources](/plugin/framework/data-sources) for practitioners to use. Providers are wrapped by a [provider server](/plugin/framework/provider-servers) for interacting with Terraform. This page describes the basic implementation details required for defining a provider. Further documentation is available for deeper provider concepts: diff --git a/website/docs/plugin/framework/resources/configure.mdx b/website/docs/plugin/framework/resources/configure.mdx index 0ad464ff8..1c61e1bb3 100644 --- a/website/docs/plugin/framework/resources/configure.mdx +++ b/website/docs/plugin/framework/resources/configure.mdx @@ -6,6 +6,8 @@ description: >- # Configure Resources +-> Note: The Plugin Framework is in beta. + [Resources](/plugin/framework/resources) may require provider-level data or remote system clients to operate correctly. The framework supports the ability to configure this data and/or clients once within the provider, then pass that information to resources by adding the `Configure` method. ## Prepare Provider Configure Method diff --git a/website/docs/plugin/framework/resources/import.mdx b/website/docs/plugin/framework/resources/import.mdx index f8a084c35..322a5ea95 100644 --- a/website/docs/plugin/framework/resources/import.mdx +++ b/website/docs/plugin/framework/resources/import.mdx @@ -6,6 +6,8 @@ description: >- # Resource Import +-> Note: The Plugin Framework is in beta. + Practitioners can use the [`terraform import` command](/cli/commands/import) to let Terraform begin managing existing infrastructure resources. Resources can implement the `ImportState` method, which must either specify enough Terraform state for the `Read` method to refresh [`resource.Resource`](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/resource#Resource) or return an error. ## Define Resource ImportState Method diff --git a/website/docs/plugin/framework/resources/index.mdx b/website/docs/plugin/framework/resources/index.mdx index ab1152eea..36fcb983d 100644 --- a/website/docs/plugin/framework/resources/index.mdx +++ b/website/docs/plugin/framework/resources/index.mdx @@ -7,6 +7,8 @@ description: >- # Resources +-> Note: The Plugin Framework is in beta. + [Resources](/language/resources) are an abstraction that allow Terraform to manage infrastructure objects, such as a compute instance, an access policy, or disk. Terraform assumes that every resource: - operates as a pure key/value store, with values getting returned exactly as they were written. diff --git a/website/docs/plugin/framework/resources/plan-modification.mdx b/website/docs/plugin/framework/resources/plan-modification.mdx index 95d652d43..4cad9581c 100644 --- a/website/docs/plugin/framework/resources/plan-modification.mdx +++ b/website/docs/plugin/framework/resources/plan-modification.mdx @@ -7,6 +7,8 @@ description: >- # Plan Modification +-> Note: The Plugin Framework is in beta. + After [validation](/plugin/framework/validation) and before applying configuration changes, Terraform generates a plan that describes the expected values and behaviors of those changes. Providers can then tailor the plan to match the expected end state. For example, they may replace unknown values with expected known values or mark a resource that must be replaced. Users can perform this plan modification for an attribute or an entire resource. ## Plan Modification Process diff --git a/website/docs/plugin/framework/resources/private-state.mdx b/website/docs/plugin/framework/resources/private-state.mdx index 5531fb794..8216a779c 100644 --- a/website/docs/plugin/framework/resources/private-state.mdx +++ b/website/docs/plugin/framework/resources/private-state.mdx @@ -7,6 +7,8 @@ description: >- # Private State Management +-> Note: The Plugin Framework is in beta. + Resource private state is provider maintained data that is stored in Terraform state alongside the schema-defined data. Private state is never accessed or exposed by Terraform plans, however providers can use this data storage for advanced use cases. ## Usage diff --git a/website/docs/plugin/framework/resources/state-upgrade.mdx b/website/docs/plugin/framework/resources/state-upgrade.mdx index 01f3106d0..fd20d26cd 100644 --- a/website/docs/plugin/framework/resources/state-upgrade.mdx +++ b/website/docs/plugin/framework/resources/state-upgrade.mdx @@ -7,6 +7,8 @@ description: >- # State Upgrade +-> Note: The Plugin Framework is in beta. + A resource schema captures the structure and types of the resource [state](/language/state). Any state data that does not conform to the resource schema will generate errors or may not be persisted properly. Over time, it may be necessary for resources to make breaking changes to their schemas, such as changing an attribute type. Terraform supports versioning of these resource schemas and the current version is saved into the Terraform state. When the provider advertises a newer schema version, Terraform will call back to the provider to attempt to upgrade from the saved schema version to the one advertised. This operation is performed prior to planning, but with a configured provider. -> Some versions of Terraform CLI will also request state upgrades even when the current schema version matches the state version. The framework will automatically handle this request. diff --git a/website/docs/plugin/framework/resources/timeouts.mdx b/website/docs/plugin/framework/resources/timeouts.mdx index 5fe4d4dba..af25981a3 100644 --- a/website/docs/plugin/framework/resources/timeouts.mdx +++ b/website/docs/plugin/framework/resources/timeouts.mdx @@ -6,6 +6,8 @@ description: >- # Timeouts +-> Note: The Plugin Framework is in beta. + The reality of cloud infrastructure is that it typically takes time to perform operations such as booting operating systems, discovering services, and replicating state across network edges. As the provider developer you should take known delays in resource APIs into account in the CRUD functions of the resource. Terraform supports configurable timeouts to assist in these situations. The Framework can be used in conjunction with the [terraform-plugin-framework-timeouts](https://github.com/hashicorp/terraform-plugin-framework-timeouts) module in order to allow defining timeouts in configuration and have them be available in CRUD functions. diff --git a/website/docs/plugin/framework/schemas.mdx b/website/docs/plugin/framework/schemas.mdx index 61a73cb4a..b5de5f3a4 100644 --- a/website/docs/plugin/framework/schemas.mdx +++ b/website/docs/plugin/framework/schemas.mdx @@ -7,6 +7,8 @@ description: >- # Schemas +-> Note: The Plugin Framework is in beta. + Schemas specify the constraints of Terraform configuration blocks. They define what fields a provider, resource, or data source configuration block has, and give Terraform metadata about those fields. You can think of the schema as the "type information" or diff --git a/website/docs/plugin/framework/types.mdx b/website/docs/plugin/framework/types.mdx index d5698eb23..c7d5ca4c7 100644 --- a/website/docs/plugin/framework/types.mdx +++ b/website/docs/plugin/framework/types.mdx @@ -7,6 +7,8 @@ description: >- # Attribute Types +-> Note: The Plugin Framework is in beta. + Attributes are the fields in a resource, data source, or provider. They hold the values that end up in state. Every attribute has an attribute type, which describes the constraints on the data the attribute can hold. When you access an diff --git a/website/docs/plugin/framework/validation.mdx b/website/docs/plugin/framework/validation.mdx index 60e6f5ca3..596fe10ef 100644 --- a/website/docs/plugin/framework/validation.mdx +++ b/website/docs/plugin/framework/validation.mdx @@ -5,6 +5,8 @@ description: How to validate configuration values using the provider development # Validation +-> Note: The Plugin Framework is in beta. + The framework can return [diagnostics](/plugin/framework/diagnostics) feedback for values in provider, resource, and data source configurations. This allows you to write validations that give users feedback about required syntax, types, and acceptable values. -> **Note:** When implementing validation logic, configuration values may be [unknown](/plugin/framework/types#unknown) based on the source of the value. Implementations must account for this case, typically by returning early without returning new diagnostics. diff --git a/website/docs/plugin/framework/writing-state.mdx b/website/docs/plugin/framework/writing-state.mdx index e0179e902..0578dc23d 100644 --- a/website/docs/plugin/framework/writing-state.mdx +++ b/website/docs/plugin/framework/writing-state.mdx @@ -7,6 +7,8 @@ description: >- # Writing State +-> Note: The Plugin Framework is in beta. + One of the primary jobs of a Terraform provider is to manage the provider's resources and data sources in the [Terraform statefile](/language/state). Writing values to state is something that provider developers will do frequently.