From d3657d8aff6affa22e37caea9faf52f3368cf133 Mon Sep 17 00:00:00 2001 From: Cameron Moberg Date: Tue, 11 Mar 2025 15:32:59 -0700 Subject: [PATCH] Add Dataproc Metastore Database Resource for IAM support Fixes https://github.com/hashicorp/terraform-provider-google/issues/21822 --- mmv1/products/metastore/Database.yaml | 50 +++++++++++++++++++ ...roc_metastore_service_database_iam.tf.tmpl | 6 +++ ...taproc_metastore_database_template.tf.tmpl | 5 ++ 3 files changed, 61 insertions(+) create mode 100644 mmv1/products/metastore/Database.yaml create mode 100644 mmv1/templates/terraform/examples/dataproc_metastore_service_database_iam.tf.tmpl create mode 100644 mmv1/templates/terraform/iam/example_config_body/dataproc_metastore_database_template.tf.tmpl diff --git a/mmv1/products/metastore/Database.yaml b/mmv1/products/metastore/Database.yaml new file mode 100644 index 000000000000..e8af916dac33 --- /dev/null +++ b/mmv1/products/metastore/Database.yaml @@ -0,0 +1,50 @@ +# Copyright 2025 Google Inc. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +name: 'Database' +description: | + Only used to generate IAM resources +# This resource is only used to generate IAM resources. They do not correspond to real +# GCP resources, and should not be used to generate anything other than IAM support. +docs: +base_url: 'projects/{{project}}/locations/{{location}}/services/{{serviceId}}/databases/{{name}}' +self_link: 'projects/{{project}}/locations/{{location}}/services/{{serviceId}}/databases/{{name}}' +exclude_resource: true +timeouts: + insert_minutes: 2 + update_minutes: 2 + delete_minutes: 2 +iam_policy: + method_name_separator: ':' + parent_resource_attribute: 'database' + parent_resource_type: "google_dataproc_metastore_service" + example_config_body: "templates/terraform/iam/example_config_body/dataproc_metastore_database_template.tf.tmpl" + import_format: + - '{{name}}' + - 'projects/{{project}}/locations/{{location}}/services/{{serviceId}}/databases/{{name}}' +custom_code: +examples: + - name: 'dataproc_metastore_service_basic' + primary_resource_id: 'service' + primary_resource_name: 'fmt.Sprintf("tf-test-metastore-srv%s", context["random_suffix"])' + test_vars_overrides: + database: '"default"' + service_resource: '"service"' + vars: + metastore_service_name: 'service-id' +parameters: +properties: + - name: 'name' + type: String + description: Dummy property. + required: true diff --git a/mmv1/templates/terraform/examples/dataproc_metastore_service_database_iam.tf.tmpl b/mmv1/templates/terraform/examples/dataproc_metastore_service_database_iam.tf.tmpl new file mode 100644 index 000000000000..922ca918701d --- /dev/null +++ b/mmv1/templates/terraform/examples/dataproc_metastore_service_database_iam.tf.tmpl @@ -0,0 +1,6 @@ +resource "google_dataproc_metastore_service" "{{$.PrimaryResourceId}}" { + service_id = "{{index $.Vars "metastore_service_name"}}" + location = "us-central1" + tier = "DEVELOPER" +} + diff --git a/mmv1/templates/terraform/iam/example_config_body/dataproc_metastore_database_template.tf.tmpl b/mmv1/templates/terraform/iam/example_config_body/dataproc_metastore_database_template.tf.tmpl new file mode 100644 index 000000000000..a4493577fb73 --- /dev/null +++ b/mmv1/templates/terraform/iam/example_config_body/dataproc_metastore_database_template.tf.tmpl @@ -0,0 +1,5 @@ + + project = google_dataproc_metastore_service.%{service_resource}.project + location = google_dataproc_metastore_service.%{service_resource}.location + service_id = google_dataproc_metastore_service.%{service_resource}.service_id + database = "%{database}"