diff --git a/docs/content/best-practices/common-resource-patterns.md b/docs/content/best-practices/common-resource-patterns.md index 9cdc5e9f7f7d..3956932a2a18 100644 --- a/docs/content/best-practices/common-resource-patterns.md +++ b/docs/content/best-practices/common-resource-patterns.md @@ -11,7 +11,7 @@ Singletons are resources – often config or settings objects – that can only Implementing resources like this may require some or all of the following: -1. If there _isn't_ a create endpoint, set the [create_url]({{< ref "/reference/resource-reference/#create_url" >}}) to point to the update endpoint. +1. If there _isn't_ a create endpoint, set the [create_url]({{< ref "/reference/resource/#create_url" >}}) to point to the update endpoint. 1. If there _is_ a create endpoint, add [pre-create custom code]({{< ref "/develop/custom-code/#pre_post_injection" >}}) that implements "acquire-on-create" logic. The custom code should check whether the resource already exists with a read request, and if it does, run the update logic and return early. For example, see [mmv1/templates/terraform/pre_create/firebasehosting_site.go.tmpl](https://github.com/GoogleCloudPlatform/magic-modules/blob/dc4d9755cb9288177e0996c1c3b3fa9738ebdf89/mmv1/templates/terraform/pre_create/firebasehosting_site.go.tmpl). * Note: The main disadvantage of "acquire-on-create" logic is that users will not be presented with a diff between the resource's old and new states – because from the terraform perspective, the resource is only being created. Please upvote https://github.com/hashicorp/terraform/issues/19017 to request better support for this workflow. -1. If there is no delete endpoint, set [`exclude_delete: true`]({{< ref "/reference/resource-reference/#create_url" >}}) at the top level of the resource. \ No newline at end of file +1. If there is no delete endpoint, set [`exclude_delete: true`]({{< ref "/reference/resource/#create_url" >}}) at the top level of the resource. \ No newline at end of file diff --git a/docs/content/best-practices/deletion-behaviors.md b/docs/content/best-practices/deletion-behaviors.md index bb97ffdf64d8..784a625b4430 100644 --- a/docs/content/best-practices/deletion-behaviors.md +++ b/docs/content/best-practices/deletion-behaviors.md @@ -40,4 +40,4 @@ See [Client-side fields]({{< ref "/develop/client-side-fields" >}}) for informat ## Exclude deletion {#exclude_delete} -Some resources do not support deletion in the API and can only be removed from state. For these resources, the best practice is to set [`exclude_delete: true`]({{< ref "/reference/resource-reference#exclude_delete" >}}) on the resource. +Some resources do not support deletion in the API and can only be removed from state. For these resources, the best practice is to set [`exclude_delete: true`]({{< ref "/reference/resource#exclude_delete" >}}) on the resource. diff --git a/docs/content/develop/add-fields.md b/docs/content/develop/add-fields.md index 12d0642982fd..8bf52bb5861a 100644 --- a/docs/content/develop/add-fields.md +++ b/docs/content/develop/add-fields.md @@ -186,7 +186,7 @@ For `key_name` and `key_description`, provide a domain-appropriate name and desc 2. Modify the field configuration according to the API documentation and behavior. -> **Note:** The templates in this section only include the most commonly-used fields. For a comprehensive reference, see [MMv1 field reference]({{}}). For information about modifying the values sent and received for a field, see [Modify the API request or response]({{}}). +> **Note:** The templates in this section only include the most commonly-used fields. For a comprehensive reference, see [MMv1 field reference]({{}}). For information about modifying the values sent and received for a field, see [Modify the API request or response]({{}}). {{< /tab >}} {{< tab "Handwritten" >}} 1. Add the field to the handwritten resource's schema. diff --git a/docs/content/develop/add-iam-support.md b/docs/content/develop/add-iam-support.md index b0d4339d4d12..575e8950e6f0 100644 --- a/docs/content/develop/add-iam-support.md +++ b/docs/content/develop/add-iam-support.md @@ -60,7 +60,7 @@ iam_policy: # min_version: beta ``` -2. Modify the template as needed to match the API resource's documented behavior. These are the most commonly-used fields. For a comprehensive reference, see [MMv1 resource reference: `iam_policy` ↗]({{}}). +2. Modify the template as needed to match the API resource's documented behavior. These are the most commonly-used fields. For a comprehensive reference, see [MMv1 resource reference: `iam_policy` ↗]({{}}). 3. Delete all remaining comments in the IAM configuration (including attribute descriptions) that were copied from the above template. {{< /tab >}} {{< tab "Handwritten" >}} diff --git a/docs/content/develop/add-resource.md b/docs/content/develop/add-resource.md index 4b7ce9702800..db6cd2c1993d 100644 --- a/docs/content/develop/add-resource.md +++ b/docs/content/develop/add-resource.md @@ -146,7 +146,7 @@ For more information about types of resources and the generation process overall 3. Modify the template as needed to match the API resource's documented behavior. 4. Delete all remaining comments in the resource configuration (including attribute descriptions) that were copied from the above template. -> **Note:** The template includes the most commonly-used fields. For a comprehensive reference, see [MMv1 resource reference ↗]({{}}). +> **Note:** The template includes the most commonly-used fields. For a comprehensive reference, see [MMv1 resource reference ↗]({{}}). {{< /tab >}} {{< tab "Handwritten" >}} > **Warning:** Handwritten resources are more difficult to develop and maintain. New handwritten resources will only be accepted if implementing the resource in MMv1 would require entirely overriding two or more CRUD methods. diff --git a/docs/content/develop/custom-code.md b/docs/content/develop/custom-code.md index 52a62cae5acd..220880172fd7 100644 --- a/docs/content/develop/custom-code.md +++ b/docs/content/develop/custom-code.md @@ -32,8 +32,8 @@ Use `custom_code.constants` to inject top-level code in a resource file. This is - Constants - Regexes compiled at build time -- Functions, such as [diff suppress functions]({{}}), - [validation functions]({{}}), +- Functions, such as [diff suppress functions]({{}}), + [validation functions]({{}}), CustomizeDiff functions, and so on. - Methods diff --git a/docs/content/develop/diffs.md b/docs/content/develop/diffs.md index 1248ab0baf64..f752b23208a9 100644 --- a/docs/content/develop/diffs.md +++ b/docs/content/develop/diffs.md @@ -176,7 +176,7 @@ See [SDKv2 Schema Behaviors - DiffSuppressFunc ↗](https://developer.hashicorp. ## API field that is never included in the response {#ignore_read} -This is common for fields that store credentials or similar information. Such fields should also be marked as [`sensitive`]({{< ref "/reference/field-reference#sensitive" >}}). +This is common for fields that store credentials or similar information. Such fields should also be marked as [`sensitive`]({{< ref "/reference/field#sensitive" >}}). In the flattener for the field, return the value of the field in the user's configuration. diff --git a/docs/content/reference/field-reference.md b/docs/content/reference/field.md similarity index 98% rename from docs/content/reference/field-reference.md rename to docs/content/reference/field.md index 36e61f3e243f..624917070c83 100644 --- a/docs/content/reference/field-reference.md +++ b/docs/content/reference/field.md @@ -281,7 +281,7 @@ This property has two mutually exclusive child properties: [`function: verify.ValidateRegexp(REGEX_STRING)`](https://github.com/hashicorp/terraform-provider-google-beta/blob/0ef51142a4dd1c1a4fc308c1eb09dce307ebe5f5/google-beta/verify/validation.go#L425). `validation` is not supported for Array fields (including sets); however, individual -elements in the array can be validated using [`item_validation`]({{}}). +elements in the array can be validated using [`item_validation`]({{}}). Example: Provider-specific function @@ -332,7 +332,7 @@ stating the current allowed values in the String field's description. Do not include UNSPECIFIED values in this list. Enums will validate that the provided field is in the allowed list unless a -custom [`validation`]({{}}) is provided. +custom [`validation`]({{}}) is provided. Example: @@ -381,7 +381,7 @@ item_type: ### `item_validation` Array only. Controls the [`ValidateFunc`](https://developer.hashicorp.com/terraform/plugin/sdkv2/schemas/schema-behaviors#validatefunc) -used to validate individual items in the array. Behaves like [`validation`]({{}}). +used to validate individual items in the array. Behaves like [`validation`]({{}}). For arrays of enums, this will override the default validation (that the provided value is one of the enum [`values`](#values)). If you need additional validation on top of an enum, ensure that the supplied validation func also verifies the enum diff --git a/docs/content/reference/resource-reference.md b/docs/content/reference/resource.md similarity index 98% rename from docs/content/reference/resource-reference.md rename to docs/content/reference/resource.md index 73aec50bd3d8..f42c687a9e7d 100644 --- a/docs/content/reference/resource-reference.md +++ b/docs/content/reference/resource.md @@ -335,12 +335,12 @@ the behavior of a Terraform resource such as `deletion_protection`. ### `parameters` -Contains a list of [fields]({{< ref "/reference/field-reference" >}}). By convention, +Contains a list of [fields]({{< ref "/reference/field" >}}). By convention, these should be the fields that are part URL parameters such as `location` and `name`. ### `properties` -Contains a list of [fields]({{< ref "/reference/field-reference" >}}). By convention, +Contains a list of [fields]({{< ref "/reference/field" >}}). By convention, these should be fields that aren't part of the URL parameters. Example: diff --git a/docs/content/test/test.md b/docs/content/test/test.md index 47a2ebe04273..4087d5e0031c 100644 --- a/docs/content/test/test.md +++ b/docs/content/test/test.md @@ -241,8 +241,8 @@ An update test is a test that creates the target resource and then makes updates ## Add unit tests A unit test verifies functionality that is not related to interactions with the API, such as -[diff suppress functions]({{}}), -[validation functions]({{}}), +[diff suppress functions]({{}}), +[validation functions]({{}}), CustomizeDiff functions, and so on. Unit tests should be added to the appropriate folder in [`magic-modules/mmv1/third_party/terraform/services`](https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services) in the file called `resource_PRODUCT_RESOURCE_test.go`. (You may need to create this file if it does not already exist. Replace PRODUCT with the product name and RESOURCE with the resource name; it should match the name of the generated resource file.)