From 55ef15324d18b3fdbc5f2afc7091a2d5f9707b6b Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 24 Oct 2023 05:59:20 +0000 Subject: [PATCH 01/43] Create a configuration file product.yaml for product discoveryengine --- mmv1/products/discoveryengine/product.yaml | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 mmv1/products/discoveryengine/product.yaml diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml new file mode 100644 index 000000000000..f6ac2e926e5b --- /dev/null +++ b/mmv1/products/discoveryengine/product.yaml @@ -0,0 +1,26 @@ +# Copyright 2023 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. + +--- !ruby/object:Api::Product +name: DiscoveryEngine +display_name: Cloud Discovery Engine +versions: + - !ruby/object:Api::Product::Version + name: ga + base_url: https://discoveryengine.googleapis.com/v1/ +scopes: + - https://www.googleapis.com/auth/cloud-platform +apis_required: + - !ruby/object:Api::Product::ApiReference + name: Google Cloud Discovery Engine API + url: https://console.cloud.google.com/apis/library/discoveryengine.googleapis.com/ From c9928b9d2558de4b8fbfcf420a81f2ac347b753a Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 24 Oct 2023 20:11:51 +0000 Subject: [PATCH 02/43] Create resource DataStore configuration file template DataStore.yaml --- mmv1/products/discoveryengine/DataStore.yaml | 131 +++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 mmv1/products/discoveryengine/DataStore.yaml diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml new file mode 100644 index 000000000000..2a0fa1ecdfad --- /dev/null +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -0,0 +1,131 @@ +# Copyright 2023 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. + +--- !ruby/object:Api::Resource +# API resource name +name: 'ResourceName' +# Resource description for the provider documentation. +description: | + RESOURCE_DESCRIPTION +references: !ruby/object:Api::Resource::ReferenceLinks + guides: + # Link to quickstart in the API's Guides section. For example: + # 'Create and connect to a database': 'https://cloud.google.com/alloydb/docs/quickstart/create-and-connect' + 'QUICKSTART_TITLE': 'QUICKSTART_URL' + # Link to the REST API reference for the resource. For example, + # https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations.backups + api: 'API_REFERENCE_URL' +# Marks the resource as beta-only. Ensure a beta version block is present in +# provider.yaml. +# min_version: beta + +# Inserts styled markdown into the header of the resource's page in the +# provider documentation. +# docs: !ruby/object:Provider::Terraform::Docs +# warning: | +# MULTILINE_WARNING_MARKDOWN +# note: | +# MULTILINE_NOTE_MARKDOWN + +# URL for the resource's standard List method. https://google.aip.dev/132 +# Terraform field names enclosed in double curly braces are replaced with +# the field values from the resource at runtime. +base_url: 'projects/{{project}}/locations/{{location}}/resourcenames' +# URL for the resource's standard Get method. https://google.aip.dev/131 +# Terraform field names enclosed in double curly braces are replaced with +# the field values from the resource at runtime. +self_link: 'projects/{{project}}/locations/{{location}}/resourcenames/{{name}}' + +# If true, the resource and all its fields are considered immutable - that is, +# only creatable, not updatable. Individual fields can override this if they +# have a custom update method in the API. +# immutable: true + +# Overrides one or more timeouts, in minutes. All timeouts default to 20. +# timeouts: !ruby/object:Api::Timeouts +# insert_minutes: 20 +# update_minutes: 20 +# delete_minutes: 20 + +# URL for the resource's standard Create method, including query parameters. +# https://google.aip.dev/133 +# Terraform field names enclosed in double curly braces are replaced with +# the field values from the resource at runtime. +create_url: 'projects/{{project}}/locations/{{location}}/resourcenames?resourceId={{name}}' +# Overrides the HTTP verb used to create a new resource. +# Allowed values: :POST, :PUT, :PATCH. Default: :POST +# create_verb: :POST + +# Overrides the URL for the resource's standard Update method. (If unset, the +# self_link URL is used by default.) https://google.aip.dev/134 +# Terraform field names enclosed in double curly braces are replaced with +# the field values from the resource at runtime. +# update_url: 'projects/{{project}}/locations/{{location}}/resourcenames/{{name}}' +# The HTTP verb used to update a resource. Allowed values: :POST, :PUT, :PATCH. Default: :PUT. +update_verb: :PATCH +# If true, the resource sets an `updateMask` query parameter listing modified +# fields when updating the resource. If false, it does not. +update_mask: true + +# Overrides the URL for the resource's standard Delete method. (If unset, the +# self_link URL is used by default.) https://google.aip.dev/135 +# Terraform field names enclosed in double curly braces are replaced with +# the field values from the resource at runtime. +# delete_url: 'projects/{{project}}/locations/{{location}}/resourcenames/{{name}}' +# Overrides the HTTP verb used to delete a resource. +# Allowed values: :POST, :PUT, :PATCH, :DELETE. Default: :DELETE +# delete_verb: :DELETE + +# If true, code for handling long-running operations is generated along with +# the resource. If false, that code is not generated. +autogen_async: true +# Sets parameters for handling operations returned by the API. +async: !ruby/object:Api::OpAsync + # Overrides which API calls return operations. Default: ['create', + # 'update', 'delete'] + # actions: ['create', 'update', 'delete'] + operation: !ruby/object:Api::OpAsync::Operation + base_url: '{{op_id}}' + + # If true, the provider sets the resource's Terraform ID after the resource is created, + # taking into account values that are set by the API at create time. This is only possible + # when the completed operation's JSON includes the created resource in the "response" field. + # If false (or unset), the provider sets the resource's Terraform ID before the resource is + # created, based only on the resource configuration. + # result: !ruby/object:Api::OpAsync::Result + # resource_inside_response: true + +# All resources (of all kinds) that share a mutex value block rather than +# executing concurrent API requests. +# Terraform field names enclosed in double curly braces are replaced with +# the field values from the resource at runtime. +# mutex: RESOURCE_NAME/{{name}} + +parameters: +- !ruby/object:Api::Type::String + name: 'location' + required: true + immutable: true + url_param_only: true + description: | + LOCATION_DESCRIPTION +- !ruby/object:Api::Type::String + name: 'name' + required: true + immutable: true + url_param_only: true + description: | + NAME_DESCRIPTION + +properties: +# Fields go here \ No newline at end of file From d09027252d1d1d6ed8d5e1f442d968769d642a6d Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 24 Oct 2023 22:50:42 +0000 Subject: [PATCH 03/43] Modify resource DataStore configuration file template to match the API resource's documented behavior --- mmv1/products/discoveryengine/DataStore.yaml | 152 ++++++------------- 1 file changed, 46 insertions(+), 106 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 2a0fa1ecdfad..9b85fec21a0f 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -12,120 +12,60 @@ # limitations under the License. --- !ruby/object:Api::Resource -# API resource name -name: 'ResourceName' -# Resource description for the provider documentation. +name: 'DataStore' +kind: 'discoveryEngine#dataStore' description: | - RESOURCE_DESCRIPTION + The DataStore resource is the Vertex AI Search and Conversation data store + that are used to find answers for end-user's questions. It is a collection of + websites and documents, each of which reference end-user's data. + + A data store can consist of different types of sources: + Web data collected from google search index; + Unstructured data uploaded through Cloud Storage bucket or BigQuery; + Structured data uploaded through Cloud Storage bucket or BigQuery. + + For more information, please see + https://cloud.google.com/generative-ai-app-builder/docs/agent-data-store references: !ruby/object:Api::Resource::ReferenceLinks guides: - # Link to quickstart in the API's Guides section. For example: - # 'Create and connect to a database': 'https://cloud.google.com/alloydb/docs/quickstart/create-and-connect' - 'QUICKSTART_TITLE': 'QUICKSTART_URL' - # Link to the REST API reference for the resource. For example, - # https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations.backups - api: 'API_REFERENCE_URL' -# Marks the resource as beta-only. Ensure a beta version block is present in -# provider.yaml. -# min_version: beta - -# Inserts styled markdown into the header of the resource's page in the -# provider documentation. -# docs: !ruby/object:Provider::Terraform::Docs -# warning: | -# MULTILINE_WARNING_MARKDOWN -# note: | -# MULTILINE_NOTE_MARKDOWN - -# URL for the resource's standard List method. https://google.aip.dev/132 -# Terraform field names enclosed in double curly braces are replaced with -# the field values from the resource at runtime. -base_url: 'projects/{{project}}/locations/{{location}}/resourcenames' -# URL for the resource's standard Get method. https://google.aip.dev/131 -# Terraform field names enclosed in double curly braces are replaced with -# the field values from the resource at runtime. -self_link: 'projects/{{project}}/locations/{{location}}/resourcenames/{{name}}' - -# If true, the resource and all its fields are considered immutable - that is, -# only creatable, not updatable. Individual fields can override this if they -# have a custom update method in the API. -# immutable: true - -# Overrides one or more timeouts, in minutes. All timeouts default to 20. -# timeouts: !ruby/object:Api::Timeouts -# insert_minutes: 20 -# update_minutes: 20 -# delete_minutes: 20 + 'Create a search data store': 'https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es' + api: 'https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/projects.locations.collections.dataStores' -# URL for the resource's standard Create method, including query parameters. -# https://google.aip.dev/133 -# Terraform field names enclosed in double curly braces are replaced with -# the field values from the resource at runtime. -create_url: 'projects/{{project}}/locations/{{location}}/resourcenames?resourceId={{name}}' -# Overrides the HTTP verb used to create a new resource. -# Allowed values: :POST, :PUT, :PATCH. Default: :POST -# create_verb: :POST - -# Overrides the URL for the resource's standard Update method. (If unset, the -# self_link URL is used by default.) https://google.aip.dev/134 -# Terraform field names enclosed in double curly braces are replaced with -# the field values from the resource at runtime. -# update_url: 'projects/{{project}}/locations/{{location}}/resourcenames/{{name}}' -# The HTTP verb used to update a resource. Allowed values: :POST, :PUT, :PATCH. Default: :PUT. +base_url: 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores' +self_link: 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}' +create_url: 'projects/{{project}}/locations/{{location}}/collections/{{collectionId}}/dataStores?dataStoreId={{data_store_id}}' update_verb: :PATCH -# If true, the resource sets an `updateMask` query parameter listing modified -# fields when updating the resource. If false, it does not. -update_mask: true - -# Overrides the URL for the resource's standard Delete method. (If unset, the -# self_link URL is used by default.) https://google.aip.dev/135 -# Terraform field names enclosed in double curly braces are replaced with -# the field values from the resource at runtime. -# delete_url: 'projects/{{project}}/locations/{{location}}/resourcenames/{{name}}' -# Overrides the HTTP verb used to delete a resource. -# Allowed values: :POST, :PUT, :PATCH, :DELETE. Default: :DELETE -# delete_verb: :DELETE - -# If true, code for handling long-running operations is generated along with -# the resource. If false, that code is not generated. autogen_async: true -# Sets parameters for handling operations returned by the API. -async: !ruby/object:Api::OpAsync - # Overrides which API calls return operations. Default: ['create', - # 'update', 'delete'] - # actions: ['create', 'update', 'delete'] - operation: !ruby/object:Api::OpAsync::Operation - base_url: '{{op_id}}' - - # If true, the provider sets the resource's Terraform ID after the resource is created, - # taking into account values that are set by the API at create time. This is only possible - # when the completed operation's JSON includes the created resource in the "response" field. - # If false (or unset), the provider sets the resource's Terraform ID before the resource is - # created, based only on the resource configuration. - # result: !ruby/object:Api::OpAsync::Result - # resource_inside_response: true - -# All resources (of all kinds) that share a mutex value block rather than -# executing concurrent API requests. -# Terraform field names enclosed in double curly braces are replaced with -# the field values from the resource at runtime. -# mutex: RESOURCE_NAME/{{name}} parameters: -- !ruby/object:Api::Type::String - name: 'location' - required: true - immutable: true - url_param_only: true - description: | - LOCATION_DESCRIPTION -- !ruby/object:Api::Type::String - name: 'name' - required: true - immutable: true - url_param_only: true - description: | - NAME_DESCRIPTION + - !ruby/object:Api::Type::String + name: 'project' + required: true + immutable: true + url_param_only: true + description: | + A valid project identifier. + - !ruby/object:Api::Type::String + name: 'location' + required: true + immutable: true + url_param_only: true + description: | + The geographic location where the data store reside. + - !ruby/object:Api::Type::String + name: 'collectionId' + required: true + immutable: true + url_param_only: true + description: | + The collection id of the document. + - !ruby/object:Api::Type::String + name: 'dataStoreId' + required: true + immutable: true + url_param_only: true + description: | + The unique id of the data store. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. properties: # Fields go here \ No newline at end of file From 6e0aeff36f7dea9d57000b4f3e2f3ed77317e6d3 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 25 Oct 2023 03:39:16 +0000 Subject: [PATCH 04/43] Add each API resource field to configuration file properties attribute --- mmv1/products/discoveryengine/DataStore.yaml | 82 +++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 9b85fec21a0f..49164ff5cacb 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -68,4 +68,84 @@ parameters: The unique id of the data store. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. properties: -# Fields go here \ No newline at end of file + - !ruby/object:Api::Type::String + name: 'name' + description: | + The unique full resource name of the data store. Values are of the format + `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. + This field must be a UTF-8 encoded string with a length limit of 1024 + characters. + immutable: true + output: true + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + The display name of the data store. This field must be a UTF-8 encoded + string with a length limit of 128 characters. + - !ruby/object:Api::Type::Enum + name: 'industryVertical' + description: | + The industry vertical that the data store registers. + values: + - :INDUSTRY_VERTICAL_UNSPECIFIED + - :GENERIC + - :MEDIA + - :HEALTHCARE_GUIDELINE + - :HEALTHCARE_FHIR + - :CCAI_SEARCH + - !ruby/object:Api::Type::Array + name: 'solutionTypes' + description: | + The solutions that the data store enrolls. Available solutions for each + [industry_vertical][]: + `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. + `SITE_SEARCH`: `SOLUTION_TYPE_SEARCH` is automatically enrolled. Other + solutions cannot be enrolled. + item_type: !ruby/object:Api::Type::Enum + name: 'solutionType' + description: | + The type of solution. + values: + - :SOLUTION_TYPE_UNSPECIFIED + - :SOLUTION_TYPE_RECOMMENDATION + - :SOLUTION_TYPE_SEARCH + - :SOLUTION_TYPE_CHAT + - !ruby/object:Api::Type::Enum + name: 'contentConfig' + description: | + The content config of the data store. If this field is unset, the server + behavior defaults to [ContentConfig.NO_CONTENT][] + values: + - :CONTENT_CONFIG_UNSPECIFIED + - :NO_CONTENT + - :CONTENT_REQUIRED + - :PUBLIC_WEBSITE + - !ruby/object:Api::Type::Enum + name: 'searchTier' + description: | + Search tier on the DataStore level. Different tiers might have different + pricing. To learn more, please check the pricing documentation. + values: + - :SEARCH_TIER_UNSPECIFIED + - :STANDARD + - :ENTERPRISE + - !ruby/object:Api::Type::Array + name: 'searchAddOns' + description: | + Add-on feature for search. + item_type: !ruby/object:Api::Type::Enum + name: 'searchAddOn' + description: | + Search add-on on the DataStore level + values: + - :SEARCH_ADD_ON_UNSPECIFIED + - :LLM + - !ruby/object:Api::Type::NestedObject + name: 'companyInfo' + description: | + Company related information for the DataStore. + properties: + - !ruby/object:Api::Type::String + name: 'displayName' + description: | + The company name associated with the DataStore. \ No newline at end of file From 58ae514283da94a853e299b292c1ea5b12a843da Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 25 Oct 2023 04:11:53 +0000 Subject: [PATCH 05/43] Add IAM support in Terraform to match DataStore API resource IAM support --- mmv1/products/discoveryengine/DataStore.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 49164ff5cacb..8d83e27e28cf 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -37,6 +37,14 @@ create_url: 'projects/{{project}}/locations/{{location}}/collections/{{collectio update_verb: :PATCH autogen_async: true +iam_policy: !ruby/object:Api::Resource::IamPolicy + parent_resource_attribute: 'data_store_id' + method_name_separator: ':' + fetch_iam_policy_verb: :POST + import_format: [ + 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}', + ] + parameters: - !ruby/object:Api::Type::String name: 'project' From 45b5215df66baeaf26b6bf939b901e928b475812 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Mon, 27 Nov 2023 23:37:14 +0000 Subject: [PATCH 06/43] Polish field contents in product configuration file. --- mmv1/products/discoveryengine/product.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index f6ac2e926e5b..a59613e3e37c 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -13,7 +13,7 @@ --- !ruby/object:Api::Product name: DiscoveryEngine -display_name: Cloud Discovery Engine +display_name: Discovery Engine versions: - !ruby/object:Api::Product::Version name: ga @@ -22,5 +22,5 @@ scopes: - https://www.googleapis.com/auth/cloud-platform apis_required: - !ruby/object:Api::Product::ApiReference - name: Google Cloud Discovery Engine API + name: Discovery Engine API url: https://console.cloud.google.com/apis/library/discoveryengine.googleapis.com/ From 0741fa404124452e23704f4278243f731b1aacc3 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 28 Nov 2023 22:15:09 +0000 Subject: [PATCH 07/43] Modify DataStore.yaml for LRO handling, parameters matching and readability improvement. --- mmv1/products/discoveryengine/DataStore.yaml | 101 +++++++++---------- 1 file changed, 45 insertions(+), 56 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 8d83e27e28cf..152353185ca6 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -13,67 +13,73 @@ --- !ruby/object:Api::Resource name: 'DataStore' -kind: 'discoveryEngine#dataStore' description: | - The DataStore resource is the Vertex AI Search and Conversation data store - that are used to find answers for end-user's questions. It is a collection of - websites and documents, each of which reference end-user's data. - - A data store can consist of different types of sources: - Web data collected from google search index; - Unstructured data uploaded through Cloud Storage bucket or BigQuery; - Structured data uploaded through Cloud Storage bucket or BigQuery. - - For more information, please see - https://cloud.google.com/generative-ai-app-builder/docs/agent-data-store + Vertex AI Search and Conversation data store is a collection of websites and + documents used to find answers for end-user's questions. references: !ruby/object:Api::Resource::ReferenceLinks guides: 'Create a search data store': 'https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es' + # TODO: Update the link to the REST API reference for the resource from v1alpha to v1. api: 'https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/projects.locations.collections.dataStores' base_url: 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores' self_link: 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}' create_url: 'projects/{{project}}/locations/{{location}}/collections/{{collectionId}}/dataStores?dataStoreId={{data_store_id}}' update_verb: :PATCH -autogen_async: true +update_mask: true +autogen_async: true +async: !ruby/object:Api::OpAsync + operation: !ruby/object:Api::OpAsync::Operation + path: "name" + base_url: "{{op_id}}" + wait_ms: 1000 + timeouts: !ruby/object:Api::Timeouts + insert_minutes: 60 + update_minutes: 60 + delete_minutes: 60 + result: !ruby/object:Api::OpAsync::Result + path: "response" + status: !ruby/object:Api::OpAsync::Status + path: "done" + complete: true + allowed: + - true + - false + error: !ruby/object:Api::OpAsync::Error + path: "error" + message: "message" iam_policy: !ruby/object:Api::Resource::IamPolicy - parent_resource_attribute: 'data_store_id' + parent_resource_attribute: 'data_store' method_name_separator: ':' fetch_iam_policy_verb: :POST - import_format: [ - 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}', - ] + import_format: + [ + 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}', + ] parameters: - - !ruby/object:Api::Type::String - name: 'project' - required: true - immutable: true - url_param_only: true - description: | - A valid project identifier. - !ruby/object:Api::Type::String name: 'location' required: true immutable: true url_param_only: true description: | - The geographic location where the data store reside. + The geographic location where the data store should reside. - !ruby/object:Api::Type::String name: 'collectionId' required: true immutable: true url_param_only: true description: | - The collection id of the document. + The unique id of the collection for configuring resources and access to a set of data stores. - !ruby/object:Api::Type::String name: 'dataStoreId' required: true immutable: true url_param_only: true description: | - The unique id of the data store. This field must conform to [RFC-1034](https://tools.ietf.org/html/rfc1034) standard with a length limit of 63 characters. + The unique id of the data store. properties: - !ruby/object:Api::Type::String @@ -90,6 +96,7 @@ properties: description: | The display name of the data store. This field must be a UTF-8 encoded string with a length limit of 128 characters. + required: true - !ruby/object:Api::Type::Enum name: 'industryVertical' description: | @@ -98,9 +105,9 @@ properties: - :INDUSTRY_VERTICAL_UNSPECIFIED - :GENERIC - :MEDIA - - :HEALTHCARE_GUIDELINE - :HEALTHCARE_FHIR - :CCAI_SEARCH + immutable: true - !ruby/object:Api::Type::Array name: 'solutionTypes' description: | @@ -118,6 +125,11 @@ properties: - :SOLUTION_TYPE_RECOMMENDATION - :SOLUTION_TYPE_SEARCH - :SOLUTION_TYPE_CHAT + - !ruby/object:Api::Type::String + name: 'defaultSchemaId' + description: | + The id of the default [Schema][] associated with this data store. + output: true - !ruby/object:Api::Type::Enum name: 'contentConfig' description: | @@ -128,32 +140,9 @@ properties: - :NO_CONTENT - :CONTENT_REQUIRED - :PUBLIC_WEBSITE - - !ruby/object:Api::Type::Enum - name: 'searchTier' - description: | - Search tier on the DataStore level. Different tiers might have different - pricing. To learn more, please check the pricing documentation. - values: - - :SEARCH_TIER_UNSPECIFIED - - :STANDARD - - :ENTERPRISE - - !ruby/object:Api::Type::Array - name: 'searchAddOns' - description: | - Add-on feature for search. - item_type: !ruby/object:Api::Type::Enum - name: 'searchAddOn' - description: | - Search add-on on the DataStore level - values: - - :SEARCH_ADD_ON_UNSPECIFIED - - :LLM - - !ruby/object:Api::Type::NestedObject - name: 'companyInfo' + immutable: true + - !ruby/object:Api::Type::Time + name: "createTime" description: | - Company related information for the DataStore. - properties: - - !ruby/object:Api::Type::String - name: 'displayName' - description: | - The company name associated with the DataStore. \ No newline at end of file + Timestamp when the [DataStore][] was created. + output: true From db93751c76334eb5cd28b0ee818383d62dc1ef5d Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 28 Nov 2023 22:50:42 +0000 Subject: [PATCH 08/43] Add a DataStore create test. --- mmv1/products/discoveryengine/DataStore.yaml | 7 +++++++ .../examples/discoveryengine_datastore_basic.tf.erb | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 152353185ca6..a54cff94ec74 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -58,6 +58,13 @@ iam_policy: !ruby/object:Api::Resource::IamPolicy 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}', ] +examples: +- !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_basic" + primary_resource_id: "default" + vars: + data_store_id: "default_data_store_id" + parameters: - !ruby/object:Api::Type::String name: 'location' diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb new file mode 100644 index 000000000000..5d7f6ea87f95 --- /dev/null +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -0,0 +1,6 @@ +resource "google_discoveryengine_data_store" "primary" { + project = "codelab-terraform-jialei" + location = "us-central1" + collection_id = "default_collection" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" +} \ No newline at end of file From 3aa31ee60402212272382df872327701d1b90f66 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 29 Nov 2023 06:11:00 +0000 Subject: [PATCH 09/43] Modify product name from DiscoveryEngine to Discoveryengine so that generated resource name would be google_discoveryengine_data_store --- mmv1/products/discoveryengine/product.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index a59613e3e37c..82a2eeaf8b65 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -12,7 +12,7 @@ # limitations under the License. --- !ruby/object:Api::Product -name: DiscoveryEngine +name: Discoveryengine display_name: Discovery Engine versions: - !ruby/object:Api::Product::Version From 005dd1d42a6c510a15367c124402b90dcae3355a Mon Sep 17 00:00:00 2001 From: Edward Sun <42220489+edwardmedia@users.noreply.github.com> Date: Mon, 27 Nov 2023 08:41:56 -0800 Subject: [PATCH 10/43] change to GA in doc (#9491) Co-authored-by: Edward Sun From 451b7a14a749a81595fb8c04efb34d885e2d802a Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 29 Nov 2023 23:38:27 +0000 Subject: [PATCH 11/43] Add value of to template into the generated tests to fix error 'fmt.Sprintf format %s reads arg #3, but call has 2 args'. --- mmv1/products/discoveryengine/DataStore.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index a54cff94ec74..1ffefaf76942 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -62,6 +62,8 @@ examples: - !ruby/object:Provider::Terraform::Examples name: "discoveryengine_datastore_basic" primary_resource_id: "default" + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: data_store_id: "default_data_store_id" From 55c3d08e4d6a073371b006c75050bd823896a3a3 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 19 Dec 2023 02:06:19 +0000 Subject: [PATCH 12/43] Remove Api::Product::ApiReference to match the change https://github.com/GoogleCloudPlatform/magic-modules/pull/9536 --- mmv1/products/discoveryengine/product.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index 82a2eeaf8b65..cf4e861323f6 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -18,9 +18,8 @@ versions: - !ruby/object:Api::Product::Version name: ga base_url: https://discoveryengine.googleapis.com/v1/ + - !ruby/object:Api::Product::Version + name: beta + base_url: https://discoveryengine.googleapis.com/v1/ scopes: - https://www.googleapis.com/auth/cloud-platform -apis_required: - - !ruby/object:Api::Product::ApiReference - name: Discovery Engine API - url: https://console.cloud.google.com/apis/library/discoveryengine.googleapis.com/ From 4c594464f9bd2e736a6ee208e4bc6bcba45ba951 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 19 Dec 2023 04:29:52 +0000 Subject: [PATCH 13/43] Add var collection_id to unit test examples in resource config. --- mmv1/products/discoveryengine/DataStore.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 1ffefaf76942..e32c5e4c5f46 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -65,6 +65,7 @@ examples: primary_resource_name: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: + collection_id: "default_collection" data_store_id: "default_data_store_id" parameters: From f400ae3040491a1a2f54f3b0109c9cbf692b92c9 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 19 Dec 2023 05:22:39 +0000 Subject: [PATCH 14/43] Fix argument missing error in unit tests. --- mmv1/products/discoveryengine/DataStore.yaml | 4 ++-- .../terraform/examples/discoveryengine_datastore_basic.tf.erb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index e32c5e4c5f46..f69d1fab0fdf 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -61,9 +61,9 @@ iam_policy: !ruby/object:Api::Resource::IamPolicy examples: - !ruby/object:Provider::Terraform::Examples name: "discoveryengine_datastore_basic" - primary_resource_id: "default" primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + 'fmt.Sprintf("default_collection"), + fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: collection_id: "default_collection" data_store_id: "default_data_store_id" diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb index 5d7f6ea87f95..5768b3260b06 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -1,6 +1,6 @@ resource "google_discoveryengine_data_store" "primary" { project = "codelab-terraform-jialei" location = "us-central1" - collection_id = "default_collection" + collection_id = "<%= ctx[:vars]['collection_id'] %>" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" } \ No newline at end of file From e629831f6eb427c77f09c2893370dfe9da5f43fd Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 19 Dec 2023 05:35:46 +0000 Subject: [PATCH 15/43] Update resource create unit test case fields to contain display_name, industry_vertical, content_config. --- mmv1/products/discoveryengine/DataStore.yaml | 5 +++-- .../examples/discoveryengine_datastore_basic.tf.erb | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index f69d1fab0fdf..61a1a495cfcb 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -65,8 +65,9 @@ examples: 'fmt.Sprintf("default_collection"), fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: - collection_id: "default_collection" - data_store_id: "default_data_store_id" + display_name: "tf-test-structured-datastore" + industry_vertical: "GENERIC" + content_config: "NO_CONTENT" parameters: - !ruby/object:Api::Type::String diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb index 5768b3260b06..f29a7c3a44f4 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -1,6 +1,7 @@ resource "google_discoveryengine_data_store" "primary" { project = "codelab-terraform-jialei" location = "us-central1" - collection_id = "<%= ctx[:vars]['collection_id'] %>" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "<%= ctx[:vars]['display_name'] %>" + industry_vertical = "<%= ctx[:vars]['industry_vertical'] %>" + content_config = "<%= ctx[:vars]['content_config'] %>" } \ No newline at end of file From 3a732496a815bd2d41c3193923cd651e0592707d Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 20 Dec 2023 01:19:16 +0000 Subject: [PATCH 16/43] Fix errors in acceptance tests: now acc test fails at invalid parent field of CreateDataStoreRequest. --- mmv1/products/discoveryengine/DataStore.yaml | 9 ++++++--- mmv1/products/discoveryengine/product.yaml | 2 +- .../examples/discoveryengine_datastore_basic.tf.erb | 10 ++++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 61a1a495cfcb..e3154923f7a0 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -50,7 +50,7 @@ async: !ruby/object:Api::OpAsync path: "error" message: "message" iam_policy: !ruby/object:Api::Resource::IamPolicy - parent_resource_attribute: 'data_store' + parent_resource_attribute: 'data_store_id' method_name_separator: ':' fetch_iam_policy_verb: :POST import_format: @@ -61,13 +61,16 @@ iam_policy: !ruby/object:Api::Resource::IamPolicy examples: - !ruby/object:Provider::Terraform::Examples name: "discoveryengine_datastore_basic" + primary_resource_id: 'primary' primary_resource_name: 'fmt.Sprintf("default_collection"), fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: + collection_id: "default_collection" + data_store_id: "tf-test-structured-datastore-id" display_name: "tf-test-structured-datastore" - industry_vertical: "GENERIC" - content_config: "NO_CONTENT" + industry_vertical: GENERIC + content_config: NO_CONTENT parameters: - !ruby/object:Api::Type::String diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index cf4e861323f6..49ff19a17390 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -17,7 +17,7 @@ display_name: Discovery Engine versions: - !ruby/object:Api::Product::Version name: ga - base_url: https://discoveryengine.googleapis.com/v1/ + base_url: https://discoveryengine.googleapis.com/v1alpha/ - !ruby/object:Api::Product::Version name: beta base_url: https://discoveryengine.googleapis.com/v1/ diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb index f29a7c3a44f4..7e3e23b791de 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -1,7 +1,9 @@ resource "google_discoveryengine_data_store" "primary" { project = "codelab-terraform-jialei" - location = "us-central1" - display_name = "<%= ctx[:vars]['display_name'] %>" - industry_vertical = "<%= ctx[:vars]['industry_vertical'] %>" - content_config = "<%= ctx[:vars]['content_config'] %>" + location = "global" + collection_id = "default_collection" + data_store_id = "tf-test-structured-datastore-id" + display_name = "tf-test-structured-datastore" + industry_vertical = "GENERIC" + content_config = "NO_CONTENT" } \ No newline at end of file From c6ec24b7d1d8cfebaed57603c375cfdfc92e9085 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 20 Dec 2023 04:18:01 +0000 Subject: [PATCH 17/43] Set collection_id as default_collection. --- mmv1/products/discoveryengine/DataStore.yaml | 18 +++++------------- .../discoveryengine_datastore_basic.tf.erb | 1 - 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index e3154923f7a0..2dc45fb4f261 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -22,9 +22,9 @@ references: !ruby/object:Api::Resource::ReferenceLinks # TODO: Update the link to the REST API reference for the resource from v1alpha to v1. api: 'https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/projects.locations.collections.dataStores' -base_url: 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores' -self_link: 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}' -create_url: 'projects/{{project}}/locations/{{location}}/collections/{{collectionId}}/dataStores?dataStoreId={{data_store_id}}' +base_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores' +self_link: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}' +create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}' update_verb: :PATCH update_mask: true @@ -55,7 +55,7 @@ iam_policy: !ruby/object:Api::Resource::IamPolicy fetch_iam_policy_verb: :POST import_format: [ - 'projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/dataStores/{{data_store_id}}', + 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', ] examples: @@ -63,8 +63,7 @@ examples: name: "discoveryengine_datastore_basic" primary_resource_id: 'primary' primary_resource_name: - 'fmt.Sprintf("default_collection"), - fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: collection_id: "default_collection" data_store_id: "tf-test-structured-datastore-id" @@ -80,13 +79,6 @@ parameters: url_param_only: true description: | The geographic location where the data store should reside. - - !ruby/object:Api::Type::String - name: 'collectionId' - required: true - immutable: true - url_param_only: true - description: | - The unique id of the collection for configuring resources and access to a set of data stores. - !ruby/object:Api::Type::String name: 'dataStoreId' required: true diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb index 7e3e23b791de..019662cd1bd2 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -1,7 +1,6 @@ resource "google_discoveryengine_data_store" "primary" { project = "codelab-terraform-jialei" location = "global" - collection_id = "default_collection" data_store_id = "tf-test-structured-datastore-id" display_name = "tf-test-structured-datastore" industry_vertical = "GENERIC" From e3b0ac8abebaedb60c0263c319b1cf5aa5673112 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 20 Dec 2023 07:58:01 +0000 Subject: [PATCH 18/43] Remove uncessary variables under unit test example. --- mmv1/products/discoveryengine/DataStore.yaml | 11 +---------- .../examples/discoveryengine_datastore_basic.tf.erb | 2 +- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 2dc45fb4f261..34979081708f 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -53,10 +53,6 @@ iam_policy: !ruby/object:Api::Resource::IamPolicy parent_resource_attribute: 'data_store_id' method_name_separator: ':' fetch_iam_policy_verb: :POST - import_format: - [ - 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', - ] examples: - !ruby/object:Provider::Terraform::Examples @@ -65,12 +61,7 @@ examples: primary_resource_name: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: - collection_id: "default_collection" - data_store_id: "tf-test-structured-datastore-id" - display_name: "tf-test-structured-datastore" - industry_vertical: GENERIC - content_config: NO_CONTENT - + data_store_id: "data-store-id" parameters: - !ruby/object:Api::Type::String name: 'location' diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb index 019662cd1bd2..ec56c270c4a0 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -1,7 +1,7 @@ resource "google_discoveryengine_data_store" "primary" { project = "codelab-terraform-jialei" location = "global" - data_store_id = "tf-test-structured-datastore-id" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" display_name = "tf-test-structured-datastore" industry_vertical = "GENERIC" content_config = "NO_CONTENT" From a7e591f6829ec3899fd21ae840e6e5378156ea4e Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 27 Dec 2023 02:58:58 +0000 Subject: [PATCH 19/43] Fix acceptance tests issues by (1) removing iam_policy and (2) adding import_format. --- mmv1/products/discoveryengine/DataStore.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 34979081708f..27de3f1f57b8 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -27,6 +27,10 @@ self_link: 'projects/{{project}}/locations/{{location}}/collections/default_coll create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}' update_verb: :PATCH update_mask: true +import_format: + [ + 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', + ] autogen_async: true async: !ruby/object:Api::OpAsync @@ -49,10 +53,6 @@ async: !ruby/object:Api::OpAsync error: !ruby/object:Api::OpAsync::Error path: "error" message: "message" -iam_policy: !ruby/object:Api::Resource::IamPolicy - parent_resource_attribute: 'data_store_id' - method_name_separator: ':' - fetch_iam_policy_verb: :POST examples: - !ruby/object:Provider::Terraform::Examples From a6f6f171dfe98b3300758e98e3756689630c98cf Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 27 Dec 2023 05:30:06 +0000 Subject: [PATCH 20/43] Clean up configs: (1) update api version for tpg-beta to v1alpha; (2) remove fields for std Update method; (3) rename structured datastore example. --- mmv1/products/discoveryengine/DataStore.yaml | 7 ++----- mmv1/products/discoveryengine/product.yaml | 2 +- ...b => discoveryengine_datastore_structured_basic.tf.erb} | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) rename mmv1/templates/terraform/examples/{discoveryengine_datastore_basic.tf.erb => discoveryengine_datastore_structured_basic.tf.erb} (78%) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 27de3f1f57b8..51ae64518740 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -19,14 +19,11 @@ description: | references: !ruby/object:Api::Resource::ReferenceLinks guides: 'Create a search data store': 'https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es' - # TODO: Update the link to the REST API reference for the resource from v1alpha to v1. api: 'https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/projects.locations.collections.dataStores' base_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores' self_link: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}' create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}' -update_verb: :PATCH -update_mask: true import_format: [ 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', @@ -56,8 +53,8 @@ async: !ruby/object:Api::OpAsync examples: - !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_basic" - primary_resource_id: 'primary' + name: "discoveryengine_datastore_structured_basic" + primary_resource_id: 'structured_basic' primary_resource_name: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index 49ff19a17390..451c1c8c784d 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -20,6 +20,6 @@ versions: base_url: https://discoveryengine.googleapis.com/v1alpha/ - !ruby/object:Api::Product::Version name: beta - base_url: https://discoveryengine.googleapis.com/v1/ + base_url: https://discoveryengine.googleapis.com/v1alpha/ scopes: - https://www.googleapis.com/auth/cloud-platform diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb similarity index 78% rename from mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb rename to mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb index ec56c270c4a0..6e1ffdd23d0b 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb @@ -1,4 +1,4 @@ -resource "google_discoveryengine_data_store" "primary" { +resource "google_discoveryengine_data_store" "structured_basic" { project = "codelab-terraform-jialei" location = "global" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" From fb879e9b719da71f900f91dd47c50000d08cf2a7 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 27 Dec 2023 05:45:04 +0000 Subject: [PATCH 21/43] Add examples and tests for all types of DataStore. --- mmv1/products/discoveryengine/DataStore.yaml | 14 ++++++++++++++ ...overyengine_datastore_unstructured_basic.tf.erb | 8 ++++++++ .../discoveryengine_datastore_website_basic.tf.erb | 8 ++++++++ 3 files changed, 30 insertions(+) create mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb create mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 51ae64518740..eb8c2fd35f1b 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -59,6 +59,20 @@ examples: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: data_store_id: "data-store-id" +- !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_unstructured_basic" + primary_resource_id: 'unstructured_basic' + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + vars: + data_store_id: "data-store-id" +- !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_website_basic" + primary_resource_id: 'website_basic' + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + vars: + data_store_id: "data-store-id" parameters: - !ruby/object:Api::Type::String name: 'location' diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb new file mode 100644 index 000000000000..6e1f32062f10 --- /dev/null +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb @@ -0,0 +1,8 @@ +resource "google_discoveryengine_data_store" "unstructured_basic" { + project = "codelab-terraform-jialei" + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-unstructured-datastore" + industry_vertical = "GENERIC" + content_config = "CONTENT_REQUIRED" +} \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb new file mode 100644 index 000000000000..5f4e6a23c914 --- /dev/null +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb @@ -0,0 +1,8 @@ +resource "google_discoveryengine_data_store" "website_basic" { + project = "codelab-terraform-jialei" + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-website-datastore" + industry_vertical = "GENERIC" + content_config = "PUBLIC_WEBSITE" +} \ No newline at end of file From 0ecd750a025a9099ac4d6aca13c62daef335d0d3 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 27 Dec 2023 05:57:26 +0000 Subject: [PATCH 22/43] Remove redundant field project from create test examples. --- .../discoveryengine_datastore_structured_basic.tf.erb | 9 ++++----- .../discoveryengine_datastore_unstructured_basic.tf.erb | 9 ++++----- .../discoveryengine_datastore_website_basic.tf.erb | 9 ++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb index 6e1ffdd23d0b..4c75f5953620 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb @@ -1,8 +1,7 @@ resource "google_discoveryengine_data_store" "structured_basic" { - project = "codelab-terraform-jialei" - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-structured-datastore" + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-structured-datastore" industry_vertical = "GENERIC" - content_config = "NO_CONTENT" + content_config = "NO_CONTENT" } \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb index 6e1f32062f10..1273b92af4ce 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb @@ -1,8 +1,7 @@ resource "google_discoveryengine_data_store" "unstructured_basic" { - project = "codelab-terraform-jialei" - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-unstructured-datastore" + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-unstructured-datastore" industry_vertical = "GENERIC" - content_config = "CONTENT_REQUIRED" + content_config = "CONTENT_REQUIRED" } \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb index 5f4e6a23c914..61a822b10ca6 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb @@ -1,8 +1,7 @@ resource "google_discoveryengine_data_store" "website_basic" { - project = "codelab-terraform-jialei" - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-website-datastore" + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-website-datastore" industry_vertical = "GENERIC" - content_config = "PUBLIC_WEBSITE" + content_config = "PUBLIC_WEBSITE" } \ No newline at end of file From 7ac2058e30946e7fcb2c9a63e6b766e5df3f9335 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 27 Dec 2023 19:22:41 +0000 Subject: [PATCH 23/43] Fix lint-yaml check failure. --- mmv1/products/discoveryengine/DataStore.yaml | 64 ++++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index eb8c2fd35f1b..3d5d26e8845b 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -45,34 +45,34 @@ async: !ruby/object:Api::OpAsync path: "done" complete: true allowed: - - true - - false + - true + - false error: !ruby/object:Api::OpAsync::Error path: "error" message: "message" examples: -- !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_structured_basic" - primary_resource_id: 'structured_basic' - primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' - vars: - data_store_id: "data-store-id" -- !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_unstructured_basic" - primary_resource_id: 'unstructured_basic' - primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' - vars: - data_store_id: "data-store-id" -- !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_website_basic" - primary_resource_id: 'website_basic' - primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' - vars: - data_store_id: "data-store-id" + - !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_structured_basic" + primary_resource_id: 'structured_basic' + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + vars: + data_store_id: "data-store-id" + - !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_unstructured_basic" + primary_resource_id: 'unstructured_basic' + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + vars: + data_store_id: "data-store-id" + - !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_website_basic" + primary_resource_id: 'website_basic' + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + vars: + data_store_id: "data-store-id" parameters: - !ruby/object:Api::Type::String name: 'location' @@ -121,7 +121,7 @@ properties: description: | The solutions that the data store enrolls. Available solutions for each [industry_vertical][]: - `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. + `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. `SITE_SEARCH`: `SOLUTION_TYPE_SEARCH` is automatically enrolled. Other solutions cannot be enrolled. item_type: !ruby/object:Api::Type::Enum @@ -129,10 +129,10 @@ properties: description: | The type of solution. values: - - :SOLUTION_TYPE_UNSPECIFIED - - :SOLUTION_TYPE_RECOMMENDATION - - :SOLUTION_TYPE_SEARCH - - :SOLUTION_TYPE_CHAT + - :SOLUTION_TYPE_UNSPECIFIED + - :SOLUTION_TYPE_RECOMMENDATION + - :SOLUTION_TYPE_SEARCH + - :SOLUTION_TYPE_CHAT - !ruby/object:Api::Type::String name: 'defaultSchemaId' description: | @@ -144,10 +144,10 @@ properties: The content config of the data store. If this field is unset, the server behavior defaults to [ContentConfig.NO_CONTENT][] values: - - :CONTENT_CONFIG_UNSPECIFIED - - :NO_CONTENT - - :CONTENT_REQUIRED - - :PUBLIC_WEBSITE + - :CONTENT_CONFIG_UNSPECIFIED + - :NO_CONTENT + - :CONTENT_REQUIRED + - :PUBLIC_WEBSITE immutable: true - !ruby/object:Api::Type::Time name: "createTime" From e28ad41e8e5362b4f6ea2f66ec156d286ce7f5ff Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 27 Dec 2023 20:24:37 +0000 Subject: [PATCH 24/43] Add field solution_types to acceptance tests to satisfy coverage requirements. --- .../examples/discoveryengine_datastore_structured_basic.tf.erb | 1 + .../examples/discoveryengine_datastore_unstructured_basic.tf.erb | 1 + .../examples/discoveryengine_datastore_website_basic.tf.erb | 1 + 3 files changed, 3 insertions(+) diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb index 4c75f5953620..bf41bc7ed91b 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb @@ -4,4 +4,5 @@ resource "google_discoveryengine_data_store" "structured_basic" { display_name = "tf-test-structured-datastore" industry_vertical = "GENERIC" content_config = "NO_CONTENT" + solution_types = ["SOLUTION_TYPE_SEARCH"] } \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb index 1273b92af4ce..64ffd4fb4095 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb @@ -4,4 +4,5 @@ resource "google_discoveryengine_data_store" "unstructured_basic" { display_name = "tf-test-unstructured-datastore" industry_vertical = "GENERIC" content_config = "CONTENT_REQUIRED" + solution_types = ["SOLUTION_TYPE_SEARCH"] } \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb index 61a822b10ca6..b4a90b5ec12d 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb @@ -4,4 +4,5 @@ resource "google_discoveryengine_data_store" "website_basic" { display_name = "tf-test-website-datastore" industry_vertical = "GENERIC" content_config = "PUBLIC_WEBSITE" + solution_types = ["SOLUTION_TYPE_SEARCH"] } \ No newline at end of file From 14535d0b6177595d7d9745fc99fd169d1454c09a Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 2 Jan 2024 23:14:32 +0000 Subject: [PATCH 25/43] Clean up industry_vertical enum values. --- mmv1/products/discoveryengine/DataStore.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 3d5d26e8845b..ccd0f56aa804 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -110,11 +110,8 @@ properties: description: | The industry vertical that the data store registers. values: - - :INDUSTRY_VERTICAL_UNSPECIFIED - :GENERIC - :MEDIA - - :HEALTHCARE_FHIR - - :CCAI_SEARCH immutable: true - !ruby/object:Api::Type::Array name: 'solutionTypes' From 5196ef6737b1f17ad70c0a0f8a615405f7cd2163 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 2 Jan 2024 23:43:16 +0000 Subject: [PATCH 26/43] Add a new query parameter createAdvancedSiteSearch to create_url. --- mmv1/products/discoveryengine/DataStore.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index ccd0f56aa804..ea14ee69b86a 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -23,7 +23,7 @@ references: !ruby/object:Api::Resource::ReferenceLinks base_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores' self_link: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}' -create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}' +create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}&createAdvancedSiteSearch={{create_advanced_site_search}}' import_format: [ 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', @@ -88,6 +88,14 @@ parameters: url_param_only: true description: | The unique id of the data store. + - !ruby/object:Api::Type::Boolean + name: 'createAdvancedSiteSearch' + default_value: false + url_param_only: true + description: | + If true, an advanced data store for site search will be created. If the + data store is not configured as site search (GENERIC vertical and + PUBLIC_WEBSITE contentConfig), this flag will be ignored. properties: - !ruby/object:Api::Type::String From d854bbb4b76ee6ae69b664d74487aa9c6b4aa78c Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Wed, 3 Jan 2024 00:07:56 +0000 Subject: [PATCH 27/43] Add a create test for advanced site search data store. --- mmv1/products/discoveryengine/DataStore.yaml | 7 +++++++ ...gine_datastore_advanced_site_search_basic.tf.erb | 9 +++++++++ ...iscoveryengine_datastore_structured_basic.tf.erb | 13 +++++++------ ...coveryengine_datastore_unstructured_basic.tf.erb | 13 +++++++------ .../discoveryengine_datastore_website_basic.tf.erb | 13 +++++++------ 5 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index ea14ee69b86a..c6337957d301 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -73,6 +73,13 @@ examples: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: data_store_id: "data-store-id" + - !ruby/object:Provider::Terraform::Examples + name: "discoveryengine_datastore_advanced_site_search_basic" + primary_resource_id: 'advanced_site_search_basic' + primary_resource_name: + 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' + vars: + data_store_id: "data-store-id" parameters: - !ruby/object:Api::Type::String name: 'location' diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb new file mode 100644 index 000000000000..fc2c081d543f --- /dev/null +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb @@ -0,0 +1,9 @@ +resource "google_discoveryengine_data_store" "advanced_site_search_basic" { + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-advanced-site-search-datastore" + industry_vertical = "GENERIC" + content_config = "PUBLIC_WEBSITE" + solution_types = ["SOLUTION_TYPE_SEARCH"] + create_advanced_site_search = true +} \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb index bf41bc7ed91b..efe9c7e8a75b 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb @@ -1,8 +1,9 @@ resource "google_discoveryengine_data_store" "structured_basic" { - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-structured-datastore" - industry_vertical = "GENERIC" - content_config = "NO_CONTENT" - solution_types = ["SOLUTION_TYPE_SEARCH"] + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-structured-datastore" + industry_vertical = "GENERIC" + content_config = "NO_CONTENT" + solution_types = ["SOLUTION_TYPE_SEARCH"] + create_advanced_site_search = false } \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb index 64ffd4fb4095..52530924752c 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb @@ -1,8 +1,9 @@ resource "google_discoveryengine_data_store" "unstructured_basic" { - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-unstructured-datastore" - industry_vertical = "GENERIC" - content_config = "CONTENT_REQUIRED" - solution_types = ["SOLUTION_TYPE_SEARCH"] + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-unstructured-datastore" + industry_vertical = "GENERIC" + content_config = "CONTENT_REQUIRED" + solution_types = ["SOLUTION_TYPE_SEARCH"] + create_advanced_site_search = false } \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb index b4a90b5ec12d..ae7eaa1d9aa8 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb @@ -1,8 +1,9 @@ resource "google_discoveryengine_data_store" "website_basic" { - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-website-datastore" - industry_vertical = "GENERIC" - content_config = "PUBLIC_WEBSITE" - solution_types = ["SOLUTION_TYPE_SEARCH"] + location = "global" + data_store_id = "<%= ctx[:vars]['data_store_id'] %>" + display_name = "tf-test-website-datastore" + industry_vertical = "GENERIC" + content_config = "PUBLIC_WEBSITE" + solution_types = ["SOLUTION_TYPE_SEARCH"] + create_advanced_site_search = false } \ No newline at end of file From 8158dd2dd83d024e637240061918b820fdffe52a Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Mon, 8 Jan 2024 18:14:00 +0000 Subject: [PATCH 28/43] Add IAM roles/discoveryengine.admin. --- .ci/infra/terraform/main.tf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.ci/infra/terraform/main.tf b/.ci/infra/terraform/main.tf index 49ecc649a20d..658c7ff98720 100644 --- a/.ci/infra/terraform/main.tf +++ b/.ci/infra/terraform/main.tf @@ -69,6 +69,12 @@ resource "google_organization_iam_member" "sa_deny_admin" { member = google_service_account.sa.member } +resource "google_organization_iam_member" "sa_discovery_engine_admin" { + org_id = data.google_organization.org.org_id + role = "roles/discoveryengine.admin" + member = google_service_account.sa.member +} + resource "google_organization_iam_member" "sa_folder_admin" { org_id = data.google_organization.org.org_id role = "roles/resourcemanager.folderAdmin" From 7bf6eb0dee39b5480232da8fa8af29c0a8f2fa6f Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 9 Jan 2024 19:10:41 +0000 Subject: [PATCH 29/43] Remove role config from .ci/infra/terraform/main.tf --- .ci/infra/terraform/main.tf | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.ci/infra/terraform/main.tf b/.ci/infra/terraform/main.tf index 658c7ff98720..49ecc649a20d 100644 --- a/.ci/infra/terraform/main.tf +++ b/.ci/infra/terraform/main.tf @@ -69,12 +69,6 @@ resource "google_organization_iam_member" "sa_deny_admin" { member = google_service_account.sa.member } -resource "google_organization_iam_member" "sa_discovery_engine_admin" { - org_id = data.google_organization.org.org_id - role = "roles/discoveryengine.admin" - member = google_service_account.sa.member -} - resource "google_organization_iam_member" "sa_folder_admin" { org_id = data.google_organization.org.org_id role = "roles/resourcemanager.folderAdmin" From dae1f9e3c8d51b02a4f50d44fdfdf29b93881287 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 00:39:09 +0000 Subject: [PATCH 30/43] Remove beta version in product.yaml because both ga and beta versions have the same base_url. --- mmv1/products/discoveryengine/product.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index 451c1c8c784d..31fbd2c6b385 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -18,8 +18,5 @@ versions: - !ruby/object:Api::Product::Version name: ga base_url: https://discoveryengine.googleapis.com/v1alpha/ - - !ruby/object:Api::Product::Version - name: beta - base_url: https://discoveryengine.googleapis.com/v1alpha/ scopes: - https://www.googleapis.com/auth/cloud-platform From fb5c29203f0afe0ad0fcb9a6e6949b402abadd72 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 00:56:46 +0000 Subject: [PATCH 31/43] Rename product from Discoveryengine to DiscoveryEngine. --- mmv1/products/discoveryengine/product.yaml | 2 +- .../discoveryengine_datastore_advanced_site_search_basic.tf.erb | 2 +- .../examples/discoveryengine_datastore_structured_basic.tf.erb | 2 +- .../discoveryengine_datastore_unstructured_basic.tf.erb | 2 +- .../examples/discoveryengine_datastore_website_basic.tf.erb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index 31fbd2c6b385..d3bd3cc11270 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -12,7 +12,7 @@ # limitations under the License. --- !ruby/object:Api::Product -name: Discoveryengine +name: DiscoveryEngine display_name: Discovery Engine versions: - !ruby/object:Api::Product::Version diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb index fc2c081d543f..173b35b10b52 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb @@ -1,4 +1,4 @@ -resource "google_discoveryengine_data_store" "advanced_site_search_basic" { +resource "google_discovery_engine_data_store" "advanced_site_search_basic" { location = "global" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" display_name = "tf-test-advanced-site-search-datastore" diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb index efe9c7e8a75b..c9de89b64b64 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb @@ -1,4 +1,4 @@ -resource "google_discoveryengine_data_store" "structured_basic" { +resource "google_discovery_engine_data_store" "structured_basic" { location = "global" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" display_name = "tf-test-structured-datastore" diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb index 52530924752c..b1c4ce259199 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb @@ -1,4 +1,4 @@ -resource "google_discoveryengine_data_store" "unstructured_basic" { +resource "google_discovery_engine_data_store" "unstructured_basic" { location = "global" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" display_name = "tf-test-unstructured-datastore" diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb index ae7eaa1d9aa8..6bf630795746 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb @@ -1,4 +1,4 @@ -resource "google_discoveryengine_data_store" "website_basic" { +resource "google_discovery_engine_data_store" "website_basic" { location = "global" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" display_name = "tf-test-website-datastore" From 24dd57c96d18832812cd1e0e5d385f592e025482 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 01:29:56 +0000 Subject: [PATCH 32/43] Remove unnecessary configs and improve description readability. --- mmv1/products/discoveryengine/DataStore.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index c6337957d301..9578bfccc446 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -14,8 +14,9 @@ --- !ruby/object:Api::Resource name: 'DataStore' description: | - Vertex AI Search and Conversation data store is a collection of websites and - documents used to find answers for end-user's questions. + Data store is a collection of websites and documents used to find answers for + end-user's questions in Discovery Engine (a.k.a. Vertex AI Search and + Conversation). references: !ruby/object:Api::Resource::ReferenceLinks guides: 'Create a search data store': 'https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es' @@ -112,7 +113,6 @@ properties: `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`. This field must be a UTF-8 encoded string with a length limit of 1024 characters. - immutable: true output: true - !ruby/object:Api::Type::String name: 'displayName' @@ -141,7 +141,6 @@ properties: description: | The type of solution. values: - - :SOLUTION_TYPE_UNSPECIFIED - :SOLUTION_TYPE_RECOMMENDATION - :SOLUTION_TYPE_SEARCH - :SOLUTION_TYPE_CHAT @@ -156,7 +155,6 @@ properties: The content config of the data store. If this field is unset, the server behavior defaults to [ContentConfig.NO_CONTENT][] values: - - :CONTENT_CONFIG_UNSPECIFIED - :NO_CONTENT - :CONTENT_REQUIRED - :PUBLIC_WEBSITE From c0b90d715680a833e800f22491d3d4b9dc92b6db Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 02:50:26 +0000 Subject: [PATCH 33/43] Mark property solution_types as immutable. --- mmv1/products/discoveryengine/DataStore.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 9578bfccc446..a9ed2adcd07d 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -144,6 +144,7 @@ properties: - :SOLUTION_TYPE_RECOMMENDATION - :SOLUTION_TYPE_SEARCH - :SOLUTION_TYPE_CHAT + immutable: true - !ruby/object:Api::Type::String name: 'defaultSchemaId' description: | From f6b63092f5852a10f3527db2e532f65445bc86b9 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 06:29:05 +0000 Subject: [PATCH 34/43] Add update related settings and update test. --- mmv1/products/discoveryengine/DataStore.yaml | 2 + ...source_discovery_engine_data_store_test.go | 69 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index a9ed2adcd07d..c5153c5b092d 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -25,6 +25,8 @@ references: !ruby/object:Api::Resource::ReferenceLinks base_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores' self_link: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}' create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}&createAdvancedSiteSearch={{create_advanced_site_search}}' +update_verb: :PATCH +update_mask: true import_format: [ 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', diff --git a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go new file mode 100644 index 000000000000..89dbae0ac8c7 --- /dev/null +++ b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go @@ -0,0 +1,69 @@ +package discoveryengine_test + +import ( + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-google/google/acctest" + "testing" +) + +func TestAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_update(t *testing.T) { + t.Parallel() + + context := map[string]interface{}{ + "random_suffix": acctest.RandString(t, 10), + } + + acctest.VcrTest(t, resource.TestCase{ + PreCheck: func() { acctest.AccTestPreCheck(t) }, + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), + CheckDestroy: testAccCheckDiscoveryEngineDataStoreDestroyProducer(t), + Steps: []resource.TestStep{ + { + Config: testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_basic(context), + }, + { + ResourceName: "google_discovery_engine_data_store.structured_basic", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"location", "data_store_id", "create_advanced_site_search"}, + }, + { + Config: testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_update(context), + }, + { + ResourceName: "google_discovery_engine_data_store.structured_basic", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"location", "data_store_id", "create_advanced_site_search"}, + }, + }, + }) +} + +func testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_basic(context map[string]interface{}) string { + return acctest.Nprintf(` +resource "google_discovery_engine_data_store" "structured_basic" { + location = "global" + data_store_id = "tf-test-data-store-id%{random_suffix}" + display_name = "tf-test-structured-datastore" + industry_vertical = "GENERIC" + content_config = "NO_CONTENT" + solution_types = ["SOLUTION_TYPE_SEARCH"] + create_advanced_site_search = false +} +`, context) +} + +func testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_update(context map[string]interface{}) string { + return acctest.Nprintf(` +resource "google_discovery_engine_data_store" "structured_basic" { + location = "global" + data_store_id = "updated-tf-test-data-store-id%{random_suffix}" + display_name = "tf-test-structured-datastore" + industry_vertical = "GENERIC" + content_config = "NO_CONTENT" + solution_types = ["SOLUTION_TYPE_SEARCH"] + create_advanced_site_search = false +} +`, context) +} From 65587d050549d7008374d7538d03d70d8ae03096 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 06:52:58 +0000 Subject: [PATCH 35/43] Add delete_url for resource's Delete method. --- mmv1/products/discoveryengine/DataStore.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index c5153c5b092d..555fc7d27eed 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -27,6 +27,7 @@ self_link: 'projects/{{project}}/locations/{{location}}/collections/default_coll create_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores?dataStoreId={{data_store_id}}&createAdvancedSiteSearch={{create_advanced_site_search}}' update_verb: :PATCH update_mask: true +delete_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}' import_format: [ 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}', From c78f8d6a76afc627ed979d0bad0714c5bde2a3f5 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 09:20:31 +0000 Subject: [PATCH 36/43] Remove all but one test example. --- mmv1/products/discoveryengine/DataStore.yaml | 21 ------------------- ...atastore_advanced_site_search_basic.tf.erb | 9 -------- ...engine_datastore_unstructured_basic.tf.erb | 9 -------- ...overyengine_datastore_website_basic.tf.erb | 9 -------- 4 files changed, 48 deletions(-) delete mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb delete mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb delete mode 100644 mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 555fc7d27eed..2be11e2bc73d 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -63,27 +63,6 @@ examples: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: data_store_id: "data-store-id" - - !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_unstructured_basic" - primary_resource_id: 'unstructured_basic' - primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' - vars: - data_store_id: "data-store-id" - - !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_website_basic" - primary_resource_id: 'website_basic' - primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' - vars: - data_store_id: "data-store-id" - - !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_advanced_site_search_basic" - primary_resource_id: 'advanced_site_search_basic' - primary_resource_name: - 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' - vars: - data_store_id: "data-store-id" parameters: - !ruby/object:Api::Type::String name: 'location' diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb deleted file mode 100644 index 173b35b10b52..000000000000 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_advanced_site_search_basic.tf.erb +++ /dev/null @@ -1,9 +0,0 @@ -resource "google_discovery_engine_data_store" "advanced_site_search_basic" { - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-advanced-site-search-datastore" - industry_vertical = "GENERIC" - content_config = "PUBLIC_WEBSITE" - solution_types = ["SOLUTION_TYPE_SEARCH"] - create_advanced_site_search = true -} \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb deleted file mode 100644 index b1c4ce259199..000000000000 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_unstructured_basic.tf.erb +++ /dev/null @@ -1,9 +0,0 @@ -resource "google_discovery_engine_data_store" "unstructured_basic" { - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-unstructured-datastore" - industry_vertical = "GENERIC" - content_config = "CONTENT_REQUIRED" - solution_types = ["SOLUTION_TYPE_SEARCH"] - create_advanced_site_search = false -} \ No newline at end of file diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb deleted file mode 100644 index 6bf630795746..000000000000 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_website_basic.tf.erb +++ /dev/null @@ -1,9 +0,0 @@ -resource "google_discovery_engine_data_store" "website_basic" { - location = "global" - data_store_id = "<%= ctx[:vars]['data_store_id'] %>" - display_name = "tf-test-website-datastore" - industry_vertical = "GENERIC" - content_config = "PUBLIC_WEBSITE" - solution_types = ["SOLUTION_TYPE_SEARCH"] - create_advanced_site_search = false -} \ No newline at end of file From f573a233a2155e0d78e8199c8f48968546684ba6 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 09:39:25 +0000 Subject: [PATCH 37/43] Rename test example to make it more generic. --- mmv1/products/discoveryengine/DataStore.yaml | 4 ++-- ... => discoveryengine_datastore_basic.tf.erb} | 2 +- ...esource_discovery_engine_data_store_test.go | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) rename mmv1/templates/terraform/examples/{discoveryengine_datastore_structured_basic.tf.erb => discoveryengine_datastore_basic.tf.erb} (84%) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 2be11e2bc73d..f747ab1737fb 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -57,8 +57,8 @@ async: !ruby/object:Api::OpAsync examples: - !ruby/object:Provider::Terraform::Examples - name: "discoveryengine_datastore_structured_basic" - primary_resource_id: 'structured_basic' + name: "discoveryengine_datastore_basic" + primary_resource_id: 'basic' primary_resource_name: 'fmt.Sprintf("tf_test_data_store%s", context["random_suffix"])' vars: diff --git a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb similarity index 84% rename from mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb rename to mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb index c9de89b64b64..f69c1fdd320c 100644 --- a/mmv1/templates/terraform/examples/discoveryengine_datastore_structured_basic.tf.erb +++ b/mmv1/templates/terraform/examples/discoveryengine_datastore_basic.tf.erb @@ -1,4 +1,4 @@ -resource "google_discovery_engine_data_store" "structured_basic" { +resource "google_discovery_engine_data_store" "basic" { location = "global" data_store_id = "<%= ctx[:vars]['data_store_id'] %>" display_name = "tf-test-structured-datastore" diff --git a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go index 89dbae0ac8c7..8061d14569af 100644 --- a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go +++ b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go @@ -6,7 +6,7 @@ import ( "testing" ) -func TestAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_update(t *testing.T) { +func TestAccDiscoveryEngineDataStore_discoveryengineDatastoreBasicExample_update(t *testing.T) { t.Parallel() context := map[string]interface{}{ @@ -19,19 +19,19 @@ func TestAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExam CheckDestroy: testAccCheckDiscoveryEngineDataStoreDestroyProducer(t), Steps: []resource.TestStep{ { - Config: testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_basic(context), + Config: testAccDiscoveryEngineDataStore_discoveryengineDatastoreBasicExample_basic(context), }, { - ResourceName: "google_discovery_engine_data_store.structured_basic", + ResourceName: "google_discovery_engine_data_store.basic", ImportState: true, ImportStateVerify: true, ImportStateVerifyIgnore: []string{"location", "data_store_id", "create_advanced_site_search"}, }, { - Config: testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_update(context), + Config: testAccDiscoveryEngineDataStore_discoveryengineDatastoreBasicExample_update(context), }, { - ResourceName: "google_discovery_engine_data_store.structured_basic", + ResourceName: "google_discovery_engine_data_store.basic", ImportState: true, ImportStateVerify: true, ImportStateVerifyIgnore: []string{"location", "data_store_id", "create_advanced_site_search"}, @@ -40,9 +40,9 @@ func TestAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExam }) } -func testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_basic(context map[string]interface{}) string { +func testAccDiscoveryEngineDataStore_discoveryengineDatastoreBasicExample_basic(context map[string]interface{}) string { return acctest.Nprintf(` -resource "google_discovery_engine_data_store" "structured_basic" { +resource "google_discovery_engine_data_store" "basic" { location = "global" data_store_id = "tf-test-data-store-id%{random_suffix}" display_name = "tf-test-structured-datastore" @@ -54,9 +54,9 @@ resource "google_discovery_engine_data_store" "structured_basic" { `, context) } -func testAccDiscoveryEngineDataStore_discoveryengineDatastoreStructuredBasicExample_update(context map[string]interface{}) string { +func testAccDiscoveryEngineDataStore_discoveryengineDatastoreBasicExample_update(context map[string]interface{}) string { return acctest.Nprintf(` -resource "google_discovery_engine_data_store" "structured_basic" { +resource "google_discovery_engine_data_store" "basic" { location = "global" data_store_id = "updated-tf-test-data-store-id%{random_suffix}" display_name = "tf-test-structured-datastore" From ae510b1c613c3bdeb24fe1f72488cc7d63ccaede Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Thu, 11 Jan 2024 22:58:06 +0000 Subject: [PATCH 38/43] Modify first template in update test to omit all non-required fields. --- mmv1/products/discoveryengine/DataStore.yaml | 2 ++ .../resource_discovery_engine_data_store_test.go | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index f747ab1737fb..e0db0374f213 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -110,6 +110,7 @@ properties: - :GENERIC - :MEDIA immutable: true + required: true - !ruby/object:Api::Type::Array name: 'solutionTypes' description: | @@ -142,6 +143,7 @@ properties: - :CONTENT_REQUIRED - :PUBLIC_WEBSITE immutable: true + required: true - !ruby/object:Api::Type::Time name: "createTime" description: | diff --git a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go index 8061d14569af..d3abd43447bf 100644 --- a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go +++ b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go @@ -48,8 +48,6 @@ resource "google_discovery_engine_data_store" "basic" { display_name = "tf-test-structured-datastore" industry_vertical = "GENERIC" content_config = "NO_CONTENT" - solution_types = ["SOLUTION_TYPE_SEARCH"] - create_advanced_site_search = false } `, context) } From 2b29bdebb8834a7bf9e513b22bf643e0d7590296 Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Fri, 12 Jan 2024 19:54:56 +0000 Subject: [PATCH 39/43] Fix the update test: update display_name not data_store_id. --- .../resource_discovery_engine_data_store_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go index d3abd43447bf..fc324b9f601d 100644 --- a/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go +++ b/mmv1/third_party/terraform/services/discoveryengine/resource_discovery_engine_data_store_test.go @@ -56,8 +56,8 @@ func testAccDiscoveryEngineDataStore_discoveryengineDatastoreBasicExample_update return acctest.Nprintf(` resource "google_discovery_engine_data_store" "basic" { location = "global" - data_store_id = "updated-tf-test-data-store-id%{random_suffix}" - display_name = "tf-test-structured-datastore" + data_store_id = "tf-test-data-store-id%{random_suffix}" + display_name = "updated-tf-test-structured-datastore" industry_vertical = "GENERIC" content_config = "NO_CONTENT" solution_types = ["SOLUTION_TYPE_SEARCH"] From c26aa6b5daedf6d0bdf797c83396f6b40aab372a Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Fri, 12 Jan 2024 20:15:34 +0000 Subject: [PATCH 40/43] Modify property description: remove brackets. --- mmv1/products/discoveryengine/DataStore.yaml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index e0db0374f213..0c6c70afff2e 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -114,11 +114,7 @@ properties: - !ruby/object:Api::Type::Array name: 'solutionTypes' description: | - The solutions that the data store enrolls. Available solutions for each - [industry_vertical][]: - `MEDIA`: `SOLUTION_TYPE_RECOMMENDATION` and `SOLUTION_TYPE_SEARCH`. - `SITE_SEARCH`: `SOLUTION_TYPE_SEARCH` is automatically enrolled. Other - solutions cannot be enrolled. + The solutions that the data store enrolls. item_type: !ruby/object:Api::Type::Enum name: 'solutionType' description: | @@ -131,13 +127,12 @@ properties: - !ruby/object:Api::Type::String name: 'defaultSchemaId' description: | - The id of the default [Schema][] associated with this data store. + The id of the default Schema associated with this data store. output: true - !ruby/object:Api::Type::Enum name: 'contentConfig' description: | - The content config of the data store. If this field is unset, the server - behavior defaults to [ContentConfig.NO_CONTENT][] + The content config of the data store. values: - :NO_CONTENT - :CONTENT_REQUIRED @@ -147,5 +142,5 @@ properties: - !ruby/object:Api::Type::Time name: "createTime" description: | - Timestamp when the [DataStore][] was created. + Timestamp when the DataStore was created. output: true From cc83a85c4203c0354eb976a29835badb8db6d16e Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Mon, 22 Jan 2024 22:35:32 +0000 Subject: [PATCH 41/43] Update API version from v1alpha to v1. --- mmv1/products/discoveryengine/product.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index d3bd3cc11270..33f9c43d210f 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -17,6 +17,6 @@ display_name: Discovery Engine versions: - !ruby/object:Api::Product::Version name: ga - base_url: https://discoveryengine.googleapis.com/v1alpha/ + base_url: https://discoveryengine.googleapis.com/v1/ scopes: - https://www.googleapis.com/auth/cloud-platform From 149414a8f190fe1b3547162c1d1dc9276224b79f Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Mon, 22 Jan 2024 23:06:33 +0000 Subject: [PATCH 42/43] Support regional APIs. --- mmv1/products/discoveryengine/DataStore.yaml | 3 ++- mmv1/products/discoveryengine/product.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 0c6c70afff2e..193a78f6177d 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -70,7 +70,8 @@ parameters: immutable: true url_param_only: true description: | - The geographic location where the data store should reside. + The geographic location where the data store should reside. The value can + only be one of "global", "us" and "eu". - !ruby/object:Api::Type::String name: 'dataStoreId' required: true diff --git a/mmv1/products/discoveryengine/product.yaml b/mmv1/products/discoveryengine/product.yaml index 33f9c43d210f..28a7a8b6715e 100644 --- a/mmv1/products/discoveryengine/product.yaml +++ b/mmv1/products/discoveryengine/product.yaml @@ -17,6 +17,6 @@ display_name: Discovery Engine versions: - !ruby/object:Api::Product::Version name: ga - base_url: https://discoveryengine.googleapis.com/v1/ + base_url: https://{{location}}-discoveryengine.googleapis.com/v1/ scopes: - https://www.googleapis.com/auth/cloud-platform From 850951f86a7aa3b4f0e9704eded9b25148d4e0af Mon Sep 17 00:00:00 2001 From: Jialei Chen Date: Tue, 23 Jan 2024 04:56:08 +0000 Subject: [PATCH 43/43] Modify API reference link. --- mmv1/products/discoveryengine/DataStore.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmv1/products/discoveryengine/DataStore.yaml b/mmv1/products/discoveryengine/DataStore.yaml index 193a78f6177d..fad7d3e84d21 100644 --- a/mmv1/products/discoveryengine/DataStore.yaml +++ b/mmv1/products/discoveryengine/DataStore.yaml @@ -20,7 +20,7 @@ description: | references: !ruby/object:Api::Resource::ReferenceLinks guides: 'Create a search data store': 'https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es' - api: 'https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/projects.locations.collections.dataStores' + api: 'https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.dataStores' base_url: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores' self_link: 'projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}'