I am migrating the resources from sdk v2 to the new plugin framework. In the plugin framework there is no way to specify a block as required while in sdk v2 I was able to do that. This causes all the blocks to be shown as optional when the documentation for the resource/data source is generated using the tf-plugin-docs tool. Is there a way to overcome this? We have certain blocks which need to be marked as required. Can’t change to nested attributes as it has to be backwards compatible.
Hi there @prakkarp!
As you noted, there is no longer a built-in field to mark blocks as
Required in the plugin-framework. This affects the terraform-plugin-doc tool as it defaults fields to optional if it can’t determine if it’s
Currently, there are 3 validators that will help you achieve the same functionality as a required block that can be used with
SetNestedBlock , or
As for the documentation, currently you’ll have to workaround the documentation generation tool to avoid it being shown as optional by using a manual template.
You can run an initial generation to get your fields/descriptions, then insert them into a template. Here is an example from our
- terraform-provider-cloudinit/config.md.tmpl at 9e5572999097685392b2f74b2a624b7da9516dcc · hashicorp/terraform-provider-cloudinit · GitHub
Available fields for use in your templates are documented here
Hi Agustin, thanks for the response. I will make the validations as suggested and also try out creating the documentation template.