hashicorp / hashicorp/terraform-plugin-framework

Support Behavioral Fields

Open
#62 5 comments 3 reactions 0 assignees View on GitHub
enhancement schema
Dominant language
Go
Stars
384
Forks
107
Avg merge
3m
Merged PRs (30d)
1

Description

### Module version

```
v0.1.0
```

### Use-cases

There are several situations in which a field should be considered behavioral. It's not tracking state under management, it's controlling how a resource works. For example, `prevent_destroy`, `prevent_overwrite`, etc. Provider developers want to be able to offer users flags to control how resources behave.

### Attempted Solutions

Adding these fields as part of the schema works, but comes with some negative side-effects in SDKv2. For example, a field must be applied before it shows up in state, which limits some of the functionality in some places. Users see unnecessary, spurious diffs.

### Proposal

The proposal is to have a schema-defined, provider-controlled set of behavioral fields on each resource. The schema and values could be stored in the `private` area of the request/response, much like timeouts were. This would allow providers to define fields that control behaviors, don't diff, and don't have weird interactions with whether they've been applied yet or not.

### References

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.