Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin' into fix/service-attachment-swp
Browse files Browse the repository at this point in the history
  • Loading branch information
Samir-Cit committed Dec 13, 2024
2 parents 44eb124 + ee02662 commit 1701610
Show file tree
Hide file tree
Showing 91 changed files with 675 additions and 244 deletions.
1 change: 1 addition & 0 deletions .ci/magician/cmd/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type ExecRunner interface {
RemoveAll(path string) error
PushDir(path string) error
PopDir() error
ReadFile(name string) (string, error)
WriteFile(name, data string) error
AppendFile(name, data string) error // Not used (yet).
Run(name string, args []string, env map[string]string) (string, error)
Expand Down
4 changes: 2 additions & 2 deletions .ci/magician/cmd/test_eap_vcr.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ func execTestEAPVCR(changeNumber, genPath, kokoroArtifactsDir, modifiedFilePath
return fmt.Errorf("error changing to gen path: %w", err)
}

changedFiles, err := rnr.Run("git", []string{"diff", "--name-only"}, nil)
changedFiles, err := rnr.ReadFile("diff.log")
if err != nil {
return fmt.Errorf("error diffing gen path: %w", err)
return fmt.Errorf("error reading diff log: %w", err)
}

services, runFullVCR := modifiedPackages(strings.Split(changedFiles, "\n"), provider.Private)
Expand Down
4 changes: 2 additions & 2 deletions .ci/magician/github/membership_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ var (
},
{
id: "melinath",
startDate: newDate(2024, 9, 18, pdtLoc),
endDate: newDate(2024, 9, 23, pdtLoc),
startDate: newDate(2024, 12, 19, pdtLoc),
endDate: newDate(2025, 1, 7, pdtLoc),
},
{
id: "slevenick",
Expand Down
1 change: 0 additions & 1 deletion .ruby-version

This file was deleted.

4 changes: 2 additions & 2 deletions docs/content/best-practices/common-resource-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 "/develop/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-reference/#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 "/develop/resource-reference/#create_url" >}}) at the top level of the resource.
1. If there is no delete endpoint, set [`exclude_delete: true`]({{< ref "/reference/resource-reference/#create_url" >}}) at the top level of the resource.
2 changes: 1 addition & 1 deletion docs/content/best-practices/deletion-behaviors.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 "/develop/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-reference#exclude_delete" >}}) on the resource.
2 changes: 1 addition & 1 deletion docs/content/breaking-changes/_index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
---
title: "Breaking changes"
weight: 45
weight: 46
---
2 changes: 1 addition & 1 deletion docs/content/breaking-changes/make-a-breaking-change.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ The deprecation message will automatically show up in the resource documentation
```
Replace the second sentence with an appropriate short description of the replacement path and/or the reason for
deprecation.
2. Update the [documentation for the field]({{< ref "/develop/add-documentation" >}}) to include the deprecation notice. For example:
2. Update the [documentation for the field]({{< ref "/document/add-documentation" >}}) to include the deprecation notice. For example:

```markdown
* `api_field_name` - (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html), Deprecated) FIELD_DESCRIPTION. `api_field_name` is deprecated and will be removed in a future major release. Use `other_field_name` instead.
Expand Down
4 changes: 2 additions & 2 deletions docs/content/develop/add-fields.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]({{<ref "/develop/field-reference" >}}). For information about modifying the values sent and received for a field, see [Modify the API request or response]({{<ref "/develop/custom-code#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]({{<ref "/reference/field-reference" >}}). For information about modifying the values sent and received for a field, see [Modify the API request or response]({{<ref "/develop/custom-code#modify-the-api-request-or-response" >}}).
{{< /tab >}}
{{< tab "Handwritten" >}}
1. Add the field to the handwritten resource's schema.
Expand All @@ -210,7 +210,7 @@ For `key_name` and `key_description`, provide a domain-appropriate name and desc
## What's next?

+ [Add IAM support]({{< ref "/develop/add-iam-support" >}})
+ [Add documentation]({{< ref "/develop/add-documentation" >}})
+ [Add documentation]({{< ref "/document/add-documentation" >}})
+ [Add custom resource code]({{< ref "/develop/custom-code" >}})
+ [Add tests]({{< ref "/test/test" >}})
+ [Run tests]({{< ref "/test/run-tests" >}})
2 changes: 1 addition & 1 deletion docs/content/develop/add-handwritten-datasource.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@ library, or the raw HTTP client used in MMV1 through `SendRequest`.

1. Open the data source documentation in [`magic-modules/third_party/terraform/website/docs/d/`](https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/website/docs/d) using an editor of your choice.
- The name of the file is the name of the data source without a `google_` prefix. For example, for `google_compute_instance`, the file is called `compute_instance.html.markdown`
2. Modify the documentation as needed according to [Handwritten documentation style guide]({{< ref "/develop/handwritten-docs-style-guide" >}}).
2. Modify the documentation as needed according to [Handwritten documentation style guide]({{< ref "/document/handwritten-docs-style-guide" >}}).
4. [Generate the providers]({{< ref "/develop/generate-providers" >}})
5. Copy and paste the generated documentation into the Hashicorp Registry's [Doc Preview Tool](https://registry.terraform.io/tools/doc-preview) to see how it is rendered.
8 changes: 4 additions & 4 deletions docs/content/develop/add-iam-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,15 @@ 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`]({{<ref "/develop/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`]({{<ref "/reference/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" >}}
> **Warning:** IAM support for handwritten resources should be implemented using MMv1. New handwritten IAM resources will only be accepted if they cannot be implemented using MMv1.
### Add support in MMv1

1. Follow the MMv1 directions in [Add a resource]({{<ref "#add-a-resource" >}}) to create a skeleton ResourceName.yaml file for the handwritten resource, but set only the following top-level fields:
1. Follow the MMv1 directions in [Add a resource]({{<ref "/develop/add-resource" >}}) to create a skeleton ResourceName.yaml file for the handwritten resource, but set only the following top-level fields:
- `name`
- `description` (required but unused)
- `base_url` (set to URL of IAM parent resource)
Expand Down Expand Up @@ -112,15 +112,15 @@ Documentation is autogenerated based on the resource and field configurations. T

1. Open the resource documentation in [`magic-modules/third_party/terraform/website/docs/r/`](https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/website/docs/r) using an editor of your choice.
- The name of the file is the name of the resource without a `google_` prefix. For example, for `google_compute_instance`, the file is called `compute_instance.html.markdown`
2. Modify the documentation as needed according to [Handwritten documentation style guide]({{< ref "/develop/handwritten-docs-style-guide" >}}).
2. Modify the documentation as needed according to [Handwritten documentation style guide]({{< ref "/document/handwritten-docs-style-guide" >}}).
3. [Generate the providers]({{< ref "/develop/generate-providers" >}})
4. Copy and paste the generated documentation into the Hashicorp Registry's [Doc Preview Tool](https://registry.terraform.io/tools/doc-preview) to see how it is rendered.
{{< /tab >}}
{{< /tabs >}}

## What's next?

+ [Add documentation]({{< ref "/develop/add-documentation" >}})
+ [Add documentation]({{< ref "/document/add-documentation" >}})
+ [Add custom resource code]({{< ref "/develop/custom-code" >}})
+ [Add tests]({{< ref "/test/test" >}})
+ [Run tests]({{< ref "/test/run-tests" >}})
4 changes: 2 additions & 2 deletions docs/content/develop/add-resource.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 ↗]({{<ref "/develop/resource-reference" >}}).
> **Note:** The template includes the most commonly-used fields. For a comprehensive reference, see [MMv1 resource reference ↗]({{<ref "/reference/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.
Expand Down Expand Up @@ -178,7 +178,7 @@ For more information about types of resources and the generation process overall

+ [Add a field to an existing resource]({{< ref "/develop/add-fields" >}})
+ [Add IAM support]({{< ref "/develop/add-iam-support" >}})
+ [Add documentation]({{< ref "/develop/add-documentation" >}})
+ [Add documentation]({{< ref "/document/add-documentation" >}})
+ [Add custom resource code]({{< ref "/develop/custom-code" >}})
+ [Add tests]({{< ref "/test/test" >}})
+ [Run tests]({{< ref "/test/run-tests" >}})
6 changes: 3 additions & 3 deletions docs/content/develop/custom-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]({{<ref "/develop/field-reference#diff_suppress_func" >}}),
[validation functions]({{<ref "/develop/field-reference#validation" >}}),
- Functions, such as [diff suppress functions]({{<ref "/reference/field-reference#diff_suppress_func" >}}),
[validation functions]({{<ref "/reference/field-reference#validation" >}}),
CustomizeDiff functions, and so on.
- Methods

Expand Down Expand Up @@ -264,7 +264,7 @@ docs:
* `FIELD_NAME` - (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) FIELD_DESCRIPTION
```

See [Add documentation (Handwritten)]({{< ref "/develop/add-documentation" >}}) for more information about what to include in the field documentation.
See [Add documentation (Handwritten)]({{< ref "/document/add-documentation" >}}) for more information about what to include in the field documentation.

## What's next?

Expand Down
2 changes: 1 addition & 1 deletion docs/content/develop/diffs.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 "/develop/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-reference#sensitive" >}}).

In the flattener for the field, return the value of the field in the user's configuration.

Expand Down
4 changes: 4 additions & 0 deletions docs/content/document/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Document"
weight: 45
---
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: "Add documentation"
weight: 50
weight: 10
aliases:
- /develop/add-documentation
---

# Add documentation
Expand Down Expand Up @@ -37,7 +39,7 @@ To preview the documentation:

1. Open the resource documentation in [`magic-modules/third_party/terraform/website/docs/r/`](https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/website/docs/r) using an editor of your choice.
- The name of the file is the name of the resource without a `google_` prefix. For example, for `google_compute_instance`, the file is called `compute_instance.html.markdown`
2. Modify the documentation as needed according to [Handwritten documentation style guide]({{< ref "/develop/handwritten-docs-style-guide" >}}).
2. Modify the documentation as needed according to [Handwritten documentation style guide]({{< ref "/document/handwritten-docs-style-guide" >}}).
3. [Generate the providers]({{< ref "/develop/generate-providers" >}})
4. Copy and paste the generated documentation into the Hashicorp Registry's [Doc Preview Tool](https://registry.terraform.io/tools/doc-preview) to see how it is rendered.
{{< /tab >}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: Handwritten docs style guide
weight: 140
weight: 20
aliases:
- /develop/handwritten-docs-style-guide
---

# Handwritten documentation style guide
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: "MMv1 field reference"
weight: 120
weight: 20
aliases:
- /reference/field-reference
- /develop/field-reference
---

# MMv1 field reference
Expand Down Expand Up @@ -280,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`]({{<ref "/develop/field-reference#item_validation" >}}).
elements in the array can be validated using [`item_validation`]({{<ref "/reference/field-reference#item_validation" >}}).

Example: Provider-specific function

Expand Down Expand Up @@ -331,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`]({{<ref "/develop/field-reference#validation" >}}) is provided.
custom [`validation`]({{<ref "/reference/field-reference#validation" >}}) is provided.

Example:

Expand Down Expand Up @@ -380,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`]({{<ref "/develop/field-reference#validation" >}}).
used to validate individual items in the array. Behaves like [`validation`]({{<ref "/reference/field-reference#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
Expand Down
2 changes: 1 addition & 1 deletion docs/content/reference/make-commands.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "make commands"
weight: 10
weight: 30
---
# `make` commands reference

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
title: "MMv1 resource reference"
weight: 130
weight: 10
aliases:
- /reference/resource-reference
- /reference/iam-policy-reference
- /develop/resource-reference
---

# MMv1 resource reference
Expand Down Expand Up @@ -334,12 +335,12 @@ the behavior of a Terraform resource such as `deletion_protection`.

### `parameters`

Contains a list of [fields]({{< ref "/develop/field-reference" >}}). By convention,
Contains a list of [fields]({{< ref "/reference/field-reference" >}}). By convention,
these should be the fields that are part URL parameters such as `location` and `name`.

### `properties`

Contains a list of [fields]({{< ref "/develop/field-reference" >}}). By convention,
Contains a list of [fields]({{< ref "/reference/field-reference" >}}). By convention,
these should be fields that aren't part of the URL parameters.

Example:
Expand Down
2 changes: 1 addition & 1 deletion docs/content/reference/ruby-go-changes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Ruby to Go Migration"
weight: 10
weight: 40
---
# What has changed in the MMv1 Go migration

Expand Down
4 changes: 2 additions & 2 deletions docs/content/test/test.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]({{<ref "/develop/field-reference#diff_suppress_func" >}}),
[validation functions]({{<ref "/develop/field-reference#validation" >}}),
[diff suppress functions]({{<ref "/reference/field-reference#diff_suppress_func" >}}),
[validation functions]({{<ref "/reference/field-reference#validation" >}}),
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.)
Expand Down
2 changes: 1 addition & 1 deletion mmv1/products/accesscontextmanager/AccessLevel.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ properties:
required: true
- name: 'vpcIpSubnetworks'
type: Array
description: 'CIDR block IP subnetwork specification. Must be IPv4.'
description: 'A list of CIDR block IP subnetwork specification. Must be IPv4.'
item_type:
type: String
min_size: 1
Expand Down
8 changes: 0 additions & 8 deletions mmv1/products/accesscontextmanager/ServicePerimeter.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ async:
custom_code:
constants: 'templates/terraform/constants/access_context_manager.go.tmpl'
encoder: 'templates/terraform/encoders/access_level_never_send_parent.go.tmpl'
pre_update: 'templates/terraform/pre_update/access_context_manager_service_perimeter.go.tmpl'
custom_import: 'templates/terraform/custom_import/set_access_policy_parent_from_self_link.go.tmpl'
# Skipping the sweeper due to the non-standard base_url
exclude_sweeper: true
Expand Down Expand Up @@ -783,10 +782,3 @@ properties:
actually enforcing them. This testing is done through analyzing the differences
between currently enforced and suggested restrictions. useExplicitDryRunSpec must
bet set to True if any of the fields in the spec are set to non-default values.
- name: 'etag'
type: Fingerprint
description: |
An opaque identifier for the current version of the ServicePerimeter. This
identifier does not follow any specific format. If an etag is not provided, the
operation will be performed as if a valid etag is provided.
output: true
Loading

0 comments on commit 1701610

Please sign in to comment.