-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce google_firestore_field resource. #7853
Conversation
Hello! I am a robot who works on Magic Modules PRs. I've detected that you're a community contributor. @SarahFrench, a repository maintainer, has been assigned to assist you and help review your changes. ❓ First time contributing? Click here for more detailsYour assigned reviewer will help review your code by:
You can help make sure that review is quick by running local tests and ensuring they're passing in between each push you make to your PR's branch. Also, try to leave a comment with each push you make, as pushes generally don't generate emails. If your reviewer doesn't get back to you within a week after your most recent change, please feel free to leave a comment on the issue asking them to take a look! In the absence of a dedicated review dashboard most maintainers manage their pending reviews through email, and those will sometimes get lost in their inbox. |
Hi there, I'm the Modular magician. I've detected the following information about your changes: Diff reportYour PR generated some diffs in downstreams - here they are. Terraform GA: Diff ( 5 files changed, 1130 insertions(+), 2 deletions(-)) |
Tests analyticsTotal tests: Action takenFound 18 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected testsTestAccFirestoreField_firestoreFieldUpdateAddTTLExample|TestAccFirestoreField_firestoreFieldUpdateAddIndexExample|TestAccFirestoreField_firestoreFieldTimestampExample|TestAccFirestoreField_firestoreFieldBasicExample|TestAccFirestoreField_firestoreFieldMatchOverrideExample|TestAccCloudRunV2JobIamPolicyGenerated|TestAccCloudRunV2JobIamMemberGenerated|TestAccCloudRunV2JobIamBindingGenerated|TestAccDataSourceGoogleFirebaseAndroidAppConfig|TestAccCloudRunV2Job_cloudrunv2JobBasicExample|TestAccCloudRunV2Job_cloudrunv2JobFullUpdate|TestAccCloudRunV2Job_cloudrunv2JobVpcaccessExample|TestAccCloudRunV2Job_cloudrunv2JobSqlExample|TestAccAlloydbCluster_missingLocation|TestAccAlloydbBackup_missingLocation|TestAccApigeeKeystoresAliasesKeyCertFile_apigeeKeystoresAliasesKeyCertFileTestExample|TestAccApigeeKeystoresAliasesPkcs12_ApigeeKeystoresAliasesPkcs12Example|TestAccDataSourceAlloydbLocations_basic |
Tests passed during RECORDING mode: Tests failed during RECORDING mode: Please fix these to complete your PR |
Hi there, I'm the Modular magician. I've detected the following information about your changes: Diff reportYour PR generated some diffs in downstreams - here they are. Terraform GA: Diff ( 5 files changed, 1133 insertions(+), 2 deletions(-)) |
Tests analyticsTotal tests: Action takenFound 7 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected testsTestAccFirebaserulesRelease_BasicRelease|TestAccDataSourceGoogleFirebaseAndroidAppConfig|TestAccApigeeKeystoresAliasesKeyCertFile_apigeeKeystoresAliasesKeyCertFileTestExample|TestAccAlloydbCluster_missingLocation|TestAccApigeeKeystoresAliasesPkcs12_ApigeeKeystoresAliasesPkcs12Example|TestAccAlloydbBackup_missingLocation|TestAccDataSourceAlloydbLocations_basic |
Tests passed during RECORDING mode: All tests passed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR looks good to me in terms of how the downstream code generation works, how the tests are comprehensive, and that the tests pass.
I'm not super familiar with Firestore (I reviewed while referring to the docs) so I'm glad you've tagged others for a Firestore-specific review. Once you've responded to any feedback from them and are satisfied give me an @-mention and I can merge the PR
mmv1/third_party/terraform/tests/resource_firestore_field_test.go
Outdated
Show resolved
Hide resolved
properties: | ||
- !ruby/object:Api::Type::String | ||
name: 'database' | ||
default_value: '(default)' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was going to ask about this default value, and whether there should be an acceptance tests that sets database
to another value, but then I saw this in the docs:
A Cloud Firestore Database. Currently only one database is allowed per cloud project; this database must have a databaseId of '(default)'.
Noting this on the PR partly for myself as I'm unfamiliar with Firestore, partly for the benefit of anyone looking at the PR in future!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Once this restriction changes, I expect we should use generative ones for testing.
mmv1/templates/terraform/custom_check_destroy/firestore_field.go.erb
Outdated
Show resolved
Hide resolved
mmv1/templates/terraform/custom_flatten/firestore_field_index_config.go.erb
Outdated
Show resolved
Hide resolved
// Re-populate split fields from the name. | ||
re := regexp.MustCompile("^projects/([^/]+)/databases/([^/]+)/collectionGroups/([^/]+)/fields/(.+)$") | ||
match := re.FindStringSubmatch(d.Get("name").(string)) | ||
if len(match) > 0{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: please add a space after the 0
collection = "chatrooms_%{random_suffix}" | ||
field = "basic" | ||
|
||
index_config { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏻 on all of the examples included. If possible, could we also add one that explicitly shows how to create an SFI exclusion?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note these are all technically exclusions (they do not inherit from the ancestor configuration). The timestamp example covers the case where a user wants to completely disable their single field indexes. I added a comment there (and updated the description in the yaml) to make this more obvious.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work!!! Left some largely-nitpicky comments.
Thank you both for the review! Comments should be addressed, PTAL |
Hi there, I'm the Modular magician. I've detected the following information about your changes: Diff reportYour PR generated some diffs in downstreams - here they are. Terraform GA: Diff ( 5 files changed, 1141 insertions(+), 2 deletions(-)) Missing test reportYour PR includes resource fields which are not covered by any test. Resource: Please add acceptance tests which include these fields. |
Tests analyticsTotal tests: Action takenFound 8 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected testsTestAccFirebaserulesRelease_BasicRelease|TestAccDataSourceGoogleFirebaseAndroidAppConfig|TestAccComputeFirewallPolicyRule_multipleRules|TestAccAlloydbCluster_missingLocation|TestAccApigeeKeystoresAliasesPkcs12_ApigeeKeystoresAliasesPkcs12Example|TestAccAlloydbBackup_missingLocation|TestAccApigeeKeystoresAliasesKeyCertFile_apigeeKeystoresAliasesKeyCertFileTestExample|TestAccDataSourceAlloydbLocations_basic |
Tests passed during RECORDING mode: Tests failed during RECORDING mode: Please fix these to complete your PR |
@SarahFrench I think this is ready for merge if you're happy with it. |
Introduces a single resource for managing Firestore fields, matching the REST API. Introduces 2 primary divergences from the proto/REST API: 1) Firestore fields do not support deletion (this is because all fields implicitly can exist in a schemaless system). Deletion of a terraform resource will clear any "overrides" for this field (TTL or indexing). 2) Single field indexes in the proto API were overly nested to allow reusing the same resource for composite indexes. The terraform resource unnests the 1-length field in the indexes list. fixes hashicorp/terraform-provider-google#12151 fixes hashicorp/terraform-provider-google#11419
Hi there, I'm the Modular magician. I've detected the following information about your changes: Diff reportYour PR generated some diffs in downstreams - here they are. Terraform GA: Diff ( 5 files changed, 1144 insertions(+), 2 deletions(-)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM - I'll let the tests run and will merge after assuming all is ok
Tests analyticsTotal tests: Action takenFound 8 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected testsTestAccFirebaserulesRelease_BasicRelease|TestAccComputeFirewallPolicyRule_multipleRules|TestAccAlloydbCluster_missingLocation|TestAccApigeeKeystoresAliasesKeyCertFile_apigeeKeystoresAliasesKeyCertFileTestExample|TestAccApigeeKeystoresAliasesPkcs12_ApigeeKeystoresAliasesPkcs12Example|TestAccAlloydbBackup_missingLocation|TestAccDataSourceAlloydbLocations_basic|TestAccDataSourceGoogleFirebaseAndroidAppConfig |
Tests passed during RECORDING mode: Tests failed during RECORDING mode: Please fix these to complete your PR |
Failed test is unrelated, merging |
* Introduce google_firestore_field resource. Introduces a single resource for managing Firestore fields, matching the REST API. Introduces 2 primary divergences from the proto/REST API: 1) Firestore fields do not support deletion (this is because all fields implicitly can exist in a schemaless system). Deletion of a terraform resource will clear any "overrides" for this field (TTL or indexing). 2) Single field indexes in the proto API were overly nested to allow reusing the same resource for composite indexes. The terraform resource unnests the 1-length field in the indexes list. fixes hashicorp/terraform-provider-google#12151 fixes hashicorp/terraform-provider-google#11419 * Address feedback in review (mostly minor cleanups). * Fix whitespace and add database to basic example.
Introduces a single resource for managing Firestore fields, matching the REST API.
Introduces 2 primary divergences from the proto/REST API:
implicitly can exist in a schemaless system). Deletion of a terraform
resource will clear any "overrides" for this field (TTL or indexing).
reusing the same resource for composite indexes. The terraform
resource unnests the 1-length field in the indexes list.
fixes hashicorp/terraform-provider-google#12151
fixes hashicorp/terraform-provider-google#11419
fixes hashicorp/terraform-provider-google#7593
Tested with
make testacc TEST=./google TESTARGS='-run=TestAccFirestoreField'
If this PR is for Terraform, I acknowledge that I have:
make test
andmake lint
in the generated providers to ensure it passes unit and linter tests.Release Note Template for Downstream PRs (will be copied)