diff --git a/mmv1/products/firestore/Database.yaml b/mmv1/products/firestore/Database.yaml index b078b61de145..5fa7e8ba5290 100644 --- a/mmv1/products/firestore/Database.yaml +++ b/mmv1/products/firestore/Database.yaml @@ -18,8 +18,7 @@ create_url: 'projects/{{project}}/databases?databaseId={{name}}' update_verb: :PATCH update_mask: true description: | - A Cloud Firestore Database. Currently only one database is allowed per - Cloud project; this database must have a `database_id` of '(default)'. + A Cloud Firestore Database. If you wish to use Firestore with App Engine, use the [`google_app_engine_application`](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/app_engine_application) @@ -54,19 +53,31 @@ import_format: - '{{project}}/{{name}}' - '{{name}}' examples: + - !ruby/object:Provider::Terraform::Examples + name: 'firestore_default_database' + primary_resource_id: 'database' + pull_external: true + test_env_vars: + org_id: :ORG_ID + ignore_read_extra: + - project + - etag + vars: + project_id: 'my-project' - !ruby/object:Provider::Terraform::Examples name: 'firestore_database' primary_resource_id: 'database' pull_external: true test_env_vars: org_id: :ORG_ID + billing_account: :BILLING_ACCT ignore_read_extra: - project - etag vars: project_id: 'my-project' - !ruby/object:Provider::Terraform::Examples - name: 'firestore_database_datastore_mode' + name: 'firestore_default_database_in_datastore_mode' primary_resource_id: 'datastore_mode_database' pull_external: true test_env_vars: @@ -76,6 +87,18 @@ examples: - etag vars: project_id: 'my-project' + - !ruby/object:Provider::Terraform::Examples + name: 'firestore_database_in_datastore_mode' + primary_resource_id: 'database' + pull_external: true + test_env_vars: + org_id: :ORG_ID + billing_account: :BILLING_ACCT + ignore_read_extra: + - project + - etag + vars: + project_id: 'my-project' properties: - !ruby/object:Api::Type::String name: name diff --git a/mmv1/templates/terraform/examples/firestore_database.tf.erb b/mmv1/templates/terraform/examples/firestore_database.tf.erb index 11ee1300d2bb..659e57bbf1fa 100644 --- a/mmv1/templates/terraform/examples/firestore_database.tf.erb +++ b/mmv1/templates/terraform/examples/firestore_database.tf.erb @@ -1,7 +1,8 @@ resource "google_project" "project" { - project_id = "<%= ctx[:vars]['project_id'] %>" - name = "<%= ctx[:vars]['project_id'] %>" - org_id = "<%= ctx[:test_env_vars]['org_id'] %>" + project_id = "<%= ctx[:vars]['project_id'] %>" + name = "<%= ctx[:vars]['project_id'] %>" + org_id = "<%= ctx[:test_env_vars]['org_id'] %>" + billing_account = "<%= ctx[:test_env_vars]['billing_account'] %>" } resource "time_sleep" "wait_60_seconds" { @@ -20,7 +21,7 @@ resource "google_project_service" "firestore" { resource "google_firestore_database" "<%= ctx[:primary_resource_id] %>" { project = google_project.project.project_id - name = "(default)" + name = "my-database" location_id = "nam5" type = "FIRESTORE_NATIVE" concurrency_mode = "OPTIMISTIC" diff --git a/mmv1/templates/terraform/examples/firestore_database_in_datastore_mode.tf.erb b/mmv1/templates/terraform/examples/firestore_database_in_datastore_mode.tf.erb new file mode 100644 index 000000000000..1f3b00af89b9 --- /dev/null +++ b/mmv1/templates/terraform/examples/firestore_database_in_datastore_mode.tf.erb @@ -0,0 +1,31 @@ +resource "google_project" "project" { + project_id = "<%= ctx[:vars]['project_id'] %>" + name = "<%= ctx[:vars]['project_id'] %>" + org_id = "<%= ctx[:test_env_vars]['org_id'] %>" + billing_account = "<%= ctx[:test_env_vars]['billing_account'] %>" +} + +resource "time_sleep" "wait_60_seconds" { + depends_on = [google_project.project] + create_duration = "60s" +} + +resource "google_project_service" "firestore" { + project = google_project.project.project_id + service = "firestore.googleapis.com" + + # Needed for CI tests for permissions to propagate, should not be needed for actual usage + depends_on = [time_sleep.wait_60_seconds] +} + +resource "google_firestore_database" "<%= ctx[:primary_resource_id] %>" { + project = google_project.project.project_id + name = "datastore-mode-database" + location_id = "nam5" + type = "DATASTORE_MODE" + concurrency_mode = "OPTIMISTIC" + app_engine_integration_mode = "DISABLED" + + depends_on = [google_project_service.firestore] +} + diff --git a/mmv1/templates/terraform/examples/firestore_database_datastore_mode.tf.erb b/mmv1/templates/terraform/examples/firestore_default_database.tf.erb similarity index 86% rename from mmv1/templates/terraform/examples/firestore_database_datastore_mode.tf.erb rename to mmv1/templates/terraform/examples/firestore_default_database.tf.erb index 72bd758da073..36bc28e2c752 100644 --- a/mmv1/templates/terraform/examples/firestore_database_datastore_mode.tf.erb +++ b/mmv1/templates/terraform/examples/firestore_default_database.tf.erb @@ -13,18 +13,15 @@ resource "time_sleep" "wait_60_seconds" { resource "google_project_service" "firestore" { project = google_project.project.project_id service = "firestore.googleapis.com" - # Needed for CI tests for permissions to propagate, should not be needed for actual usage depends_on = [time_sleep.wait_60_seconds] } resource "google_firestore_database" "<%= ctx[:primary_resource_id] %>" { - project = google_project.project.project_id - - name = "(default)" - + project = google_project.project.project_id + name = "(default)" location_id = "nam5" - type = "DATASTORE_MODE" + type = "FIRESTORE_NATIVE" depends_on = [google_project_service.firestore] } diff --git a/mmv1/templates/terraform/examples/firestore_default_database_in_datastore_mode.tf.erb b/mmv1/templates/terraform/examples/firestore_default_database_in_datastore_mode.tf.erb new file mode 100644 index 000000000000..afdd7aa4146e --- /dev/null +++ b/mmv1/templates/terraform/examples/firestore_default_database_in_datastore_mode.tf.erb @@ -0,0 +1,28 @@ +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "<%= ctx[:test_env_vars]['org_id'] %>" +} + +resource "time_sleep" "wait_60_seconds" { + depends_on = [google_project.project] + create_duration = "60s" +} + +resource "google_project_service" "firestore" { + project = google_project.project.project_id + service = "firestore.googleapis.com" + # Needed for CI tests for permissions to propagate, should not be needed for actual usage + depends_on = [time_sleep.wait_60_seconds] +} + +resource "google_firestore_database" "<%= ctx[:primary_resource_id] %>" { + project = google_project.project.project_id + + name = "(default)" + + location_id = "nam5" + type = "DATASTORE_MODE" + + depends_on = [google_project_service.firestore] +}