diff --git a/mmv1/products/gemini/GeminiGcpEnablementSettingBinding.yaml b/mmv1/products/gemini/GeminiGcpEnablementSettingBinding.yaml new file mode 100644 index 000000000000..b25de1e3f108 --- /dev/null +++ b/mmv1/products/gemini/GeminiGcpEnablementSettingBinding.yaml @@ -0,0 +1,102 @@ +# 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: GeminiGcpEnablementSettingBinding +description: The resource for managing GeminiGcpEnablementSetting setting bindings for Admin Control. +min_version: 'beta' +base_url: projects/{{project}}/locations/{{location}}/geminiGcpEnablementSettings/{{gemini_gcp_enablement_setting_id}}/settingBindings +self_link: projects/{{project}}/locations/{{location}}/geminiGcpEnablementSettings/{{gemini_gcp_enablement_setting_id}}/settingBindings/{{setting_binding_id}} +create_url: projects/{{project}}/locations/{{location}}/geminiGcpEnablementSettings/{{gemini_gcp_enablement_setting_id}}/settingBindings?settingBindingId={{setting_binding_id}} +id_format: projects/{{project}}/locations/{{location}}/geminiGcpEnablementSettings/{{gemini_gcp_enablement_setting_id}}/settingBindings/{{setting_binding_id}} +update_verb: PATCH +update_mask: true +import_format: + - projects/{{project}}/locations/{{location}}/geminiGcpEnablementSettings/{{gemini_gcp_enablement_setting_id}}/settingBindings/{{setting_binding_id}} +mutex: projects/{{project}}/locations/{{location}}/geminiGcpEnablementSettings/{{gemini_gcp_enablement_setting_id}} +examples: + - name: gemini_gemini_gcp_enablement_setting_binding_basic + min_version: 'beta' + primary_resource_id: example + exclude_test: true + vars: + gemini_gcp_enablement_setting_id: ls-tf1 + setting_binding_id: ls-tf1b1 + target: projects/980109375338 +autogen_async: true +async: + operation: + timeouts: + insert_minutes: 90 + update_minutes: 90 + delete_minutes: 90 + base_url: '{{op_id}}' + actions: + - create + - delete + - update + type: OpAsync + result: + resource_inside_response: true + include_project: false +autogen_status: U2V0dGluZ0JpbmRpbmdCeVByb2plY3RBbmRMb2NhdGlvbkFuZEdlbWluaWdjcGVuYWJsZW1lbnRzZXR0aW5n +parameters: + - name: location + type: String + description: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + immutable: true + url_param_only: true + - name: geminiGcpEnablementSettingId + type: String + description: Resource ID segment making up resource `name`. It identifies the resource within its parent collection as described in https://google.aip.dev/122. + immutable: true + url_param_only: true + required: true + - name: settingBindingId + type: String + description: |- + Id of the requesting object. + If auto-generating Id server-side, remove this field and + setting_id from the method_signature of Create RPC. + immutable: true + url_param_only: true + required: true +properties: + - name: labels + type: KeyValueLabels + description: Labels as key value pairs. + - name: target + type: String + description: Target of the binding. + required: true + - name: product + type: Enum + description: |- + Product type of the setting binding. + enum_values: + - 'GEMINI_CLOUD_ASSIST' + - 'GEMINI_CODE_ASSIST' + - name: name + type: String + description: |- + Identifier. Name of the resource. + Format:projects/{project}/locations/{location}/{settingType}/{setting}/settingBindings/{setting_binding} + output: true + - name: createTime + type: String + description: Create time stamp. + output: true + - name: updateTime + type: String + description: Update time stamp. + output: true diff --git a/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_basic.tf.tmpl b/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_basic.tf.tmpl index 6da1c15e34f4..07cff6e8387e 100644 --- a/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_basic.tf.tmpl +++ b/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_basic.tf.tmpl @@ -2,5 +2,6 @@ resource "google_gemini_gemini_gcp_enablement_setting" "{{$.PrimaryResourceId}}" provider = google-beta gemini_gcp_enablement_setting_id = "{{index $.Vars "gemini_gcp_enablement_setting_id"}}" location = "global" + labels = {"my_key": "my_value"} enable_customer_data_sharing = true } diff --git a/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_binding_basic.tf.tmpl b/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_binding_basic.tf.tmpl new file mode 100644 index 000000000000..c30e9aef21c5 --- /dev/null +++ b/mmv1/templates/terraform/examples/gemini_gemini_gcp_enablement_setting_binding_basic.tf.tmpl @@ -0,0 +1,15 @@ +resource "google_gemini_gemini_gcp_enablement_setting" "basic" { + provider = google-beta + gemini_gcp_enablement_setting_id = "{{index $.Vars "gemini_gcp_enablement_setting_id"}}" + location = "global" + labels = {"my_key": "my_value"} + enable_customer_data_sharing = true +} + +resource "google_gemini_gemini_gcp_enablement_setting_binding" "{{$.PrimaryResourceId}}" { + provider = google-beta + gemini_gcp_enablement_setting_id = google_gemini_gemini_gcp_enablement_setting.basic.gemini_gcp_enablement_setting_id + setting_binding_id = "{{index $.Vars "setting_binding_id"}}" + location = "global" + target = "{{index $.Vars "target"}}" +} diff --git a/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_binding_test.go.tmpl b/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_binding_test.go.tmpl new file mode 100644 index 000000000000..d40ff6c3af7d --- /dev/null +++ b/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_binding_test.go.tmpl @@ -0,0 +1,102 @@ +package gemini_test +{{- if ne $.TargetVersionName "ga" }} + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + + "github.com/hashicorp/terraform-provider-google/google/acctest" +) + +func TestAccGeminiGeminiGcpEnablementSettingBinding_update(t *testing.T) { + t.Parallel() + + context := map[string]interface{}{ + "gemini_gcp_enablement_setting_id": fmt.Sprintf("tf-test-ls-%s", acctest.RandString(t, 10)), + "setting_binding_id": fmt.Sprintf("tf-test-lsb-%s", acctest.RandString(t, 10)), + } + + acctest.VcrTest(t, resource.TestCase{ + PreCheck: func() { acctest.AccTestPreCheck(t) }, + ProtoV5ProviderFactories: acctest.ProtoV5ProviderBetaFactories(t), + Steps: []resource.TestStep{ + { + Config: testAccGeminiGeminiGcpEnablementSettingBinding_basic(context), + }, + { + ResourceName: "google_gemini_gemini_gcp_enablement_setting_binding.basic_binding", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"labels", "location", "gemini_gcp_enablement_setting_id", "terraform_labels"}, + }, + { + Config: testAccGeminiGeminiGcpEnablementSettingBinding_update(context), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectResourceAction("google_gemini_gemini_gcp_enablement_setting_binding.basic_binding", plancheck.ResourceActionUpdate), + }, + }, + }, + { + ResourceName: "google_gemini_gemini_gcp_enablement_setting_binding.basic_binding", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"labels", "location", "gemini_gcp_enablement_setting_id", "terraform_labels"}, + }, + }, + }) +} + +func testAccGeminiGeminiGcpEnablementSettingBinding_basic(context map[string]interface{}) string { + return acctest.Nprintf(` +data "google_project" "project" { + provider = google-beta +} + +resource "google_gemini_gemini_gcp_enablement_setting" "basic" { + provider = google-beta + gemini_gcp_enablement_setting_id = "%{gemini_gcp_enablement_setting_id}" + location = "global" + labels = {"my_key": "my_value"} + enable_customer_data_sharing = true +} + +resource "google_gemini_gemini_gcp_enablement_setting_binding" "basic_binding" { + provider = google-beta + gemini_gcp_enablement_setting_id = google_gemini_gemini_gcp_enablement_setting.basic.gemini_gcp_enablement_setting_id + setting_binding_id = "%{setting_binding_id}" + location = "global" + target = "projects/${data.google_project.project.number}" +} +`, context) +} + +func testAccGeminiGeminiGcpEnablementSettingBinding_update(context map[string]interface{}) string { + return acctest.Nprintf(` +data "google_project" "project" { + provider = google-beta +} + +resource "google_gemini_gemini_gcp_enablement_setting" "basic" { + provider = google-beta + gemini_gcp_enablement_setting_id = "%{gemini_gcp_enablement_setting_id}" + location = "global" + labels = {"my_key" = "my_value"} + enable_customer_data_sharing = false +} + +resource "google_gemini_gemini_gcp_enablement_setting_binding" "basic_binding" { + provider = google-beta + gemini_gcp_enablement_setting_id = google_gemini_gemini_gcp_enablement_setting.basic.gemini_gcp_enablement_setting_id + setting_binding_id = "%{setting_binding_id}" + location = "global" + target = "projects/${data.google_project.project.number}" + labels = {"my_key" = "my_value"} + product = "GEMINI_CODE_ASSIST" +} +`, context) +} +{{ end }} diff --git a/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_test.go.tmpl b/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_test.go.tmpl index 1071f6f0add5..d8f778f25acd 100644 --- a/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_test.go.tmpl +++ b/mmv1/third_party/terraform/services/gemini/resource_gemini_gemini_gcp_enablement_setting_test.go.tmpl @@ -51,6 +51,7 @@ resource "google_gemini_gemini_gcp_enablement_setting" "example" { provider = google-beta gemini_gcp_enablement_setting_id = "%{setting_id}" location = "global" + labels = {"my_key" = "my_value"} enable_customer_data_sharing = true } `, context) @@ -61,6 +62,7 @@ resource "google_gemini_gemini_gcp_enablement_setting" "example" { provider = google-beta gemini_gcp_enablement_setting_id = "%{setting_id}" location = "global" + labels = {"my_key" = "my_value"} enable_customer_data_sharing = false } `, context)