diff --git a/go.mod b/go.mod index c17104aaaa..6c253775d4 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/hashicorp/hcl/v2 v2.24.0 github.com/hashicorp/terraform-json v0.27.2 github.com/hashicorp/terraform-plugin-sdk/v2 v2.40.1 - github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20260908193629-621b73f739f9 + github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20260908201247-8562f35e7629 github.com/mitchellh/go-homedir v1.1.0 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index 0dae4f8602..6c9674ac21 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,8 @@ github.com/hashicorp/terraform-plugin-sdk/v2 v2.40.1 h1:2yPUd7esMOpuTaG3y1iEla1i github.com/hashicorp/terraform-plugin-sdk/v2 v2.40.1/go.mod h1:sq8qsxh+PwdvTQFcd17kfCoBgQo46ADNMvCpKE7t/gY= github.com/hashicorp/terraform-plugin-testing v1.15.0 h1:/fimKyl0YgD7aAtJkuuAZjwBASXhCIwWqMbDLnKLMe4= github.com/hashicorp/terraform-plugin-testing v1.15.0/go.mod h1:bGXMw7bE95EiZhSBV3rM2W8TiffaPTDuLS+HFI/lIYs= -github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20260908193629-621b73f739f9 h1:LdM3BRMS6bAubpxbN7EFvb9uRP940vgSwLzjObxS2AQ= -github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20260908193629-621b73f739f9/go.mod h1:pDwPQqXZg7lMzXEAt1bdn6/bRc2D8h80kVzZMwPtOa4= +github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20260908201247-8562f35e7629 h1:cpyZhRA8mVJth1j4P8wS/26j/SZoPd6XKVWPKJTRPhE= +github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20260908201247-8562f35e7629/go.mod h1:pDwPQqXZg7lMzXEAt1bdn6/bRc2D8h80kVzZMwPtOa4= github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk= github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE= github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ= diff --git a/tfplan2cai/converters/google/resources/services/vertexai/vertexai_rag_corpus.go b/tfplan2cai/converters/google/resources/services/vertexai/vertexai_rag_corpus.go new file mode 100644 index 0000000000..59eaf552cc --- /dev/null +++ b/tfplan2cai/converters/google/resources/services/vertexai/vertexai_rag_corpus.go @@ -0,0 +1,361 @@ +// ---------------------------------------------------------------------------- +// +// *** AUTO GENERATED CODE *** Type: MMv1 *** +// +// ---------------------------------------------------------------------------- +// +// This code is generated by Magic Modules using the following: +// +// Configuration: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/products/vertexai/RagCorpus.yaml +// Template: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/templates/tgc/resource_converter.go.tmpl +// +// DO NOT EDIT this file directly. Any changes made to this file will be +// overwritten during the next generation cycle. +// +// ---------------------------------------------------------------------------- + +package vertexai + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/json" + "fmt" + "log" + "reflect" + "regexp" + "slices" + "sort" + "strconv" + "strings" + "time" + + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + "github.com/GoogleCloudPlatform/terraform-google-conversion/v7/tfplan2cai/converters/google/resources/cai" + "github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource" + transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport" + "github.com/hashicorp/terraform-provider-google-beta/google-beta/verify" + + "google.golang.org/api/googleapi" +) + +var ( + _ = bytes.Clone + _ = context.WithCancel + _ = base64.StdEncoding + _ = fmt.Sprintf + _ = json.Marshal + _ = log.Print + _ = reflect.ValueOf + _ = regexp.Match + _ = slices.Min([]int{1}) + _ = sort.IntSlice{} + _ = strconv.Atoi + _ = strings.Trim + _ = time.Now + _ = diag.Diagnostic{} + _ = customdiff.All + _ = id.UniqueId + _ = logging.LogLevel + _ = retry.Retry + _ = schema.Noop + _ = structure.ExpandJsonFromString + _ = validation.All + _ = terraform.State{} + _ = tpgresource.SetLabels + _ = transport_tpg.Config{} + _ = verify.ProjectRegex + _ = googleapi.Error{} +) + +const VertexAIRagCorpusAssetType string = "aiplatform.googleapis.com/RagCorpus" + +func ResourceConverterVertexAIRagCorpus() cai.ResourceConverter { + return cai.ResourceConverter{ + AssetType: VertexAIRagCorpusAssetType, + Convert: GetVertexAIRagCorpusCaiObject, + } +} + +func GetVertexAIRagCorpusCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) { + name, err := cai.AssetName(d, config, "//aiplatform.googleapis.com/projects/{{project}}/locations/{{region}}/ragCorpora/{{name}}") + if err != nil { + return []cai.Asset{}, err + } + if obj, err := GetVertexAIRagCorpusApiObject(d, config); err == nil { + return []cai.Asset{{ + Name: name, + Type: VertexAIRagCorpusAssetType, + Resource: &cai.AssetResource{ + Version: "v1beta1", + DiscoveryDocumentURI: "https://www.googleapis.com/discovery/v1/apis/aiplatform/v1beta1/rest", + DiscoveryName: "RagCorpus", + Data: obj, + }, + }}, nil + } else { + return []cai.Asset{}, err + } +} + +func GetVertexAIRagCorpusApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + displayNameProp, err := expandVertexAIRagCorpusDisplayName(d.Get("display_name"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("display_name"); !tpgresource.IsEmptyValue(reflect.ValueOf(displayNameProp)) && (ok || !reflect.DeepEqual(v, displayNameProp)) { + obj["displayName"] = displayNameProp + } + descriptionProp, err := expandVertexAIRagCorpusDescription(d.Get("description"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("description"); !tpgresource.IsEmptyValue(reflect.ValueOf(descriptionProp)) && (ok || !reflect.DeepEqual(v, descriptionProp)) { + obj["description"] = descriptionProp + } + vectorDbConfigProp, err := expandVertexAIRagCorpusVectorDbConfig(d.Get("vector_db_config"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("vector_db_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(vectorDbConfigProp)) && (ok || !reflect.DeepEqual(v, vectorDbConfigProp)) { + obj["vectorDbConfig"] = vectorDbConfigProp + } + encryptionSpecProp, err := expandVertexAIRagCorpusEncryptionSpec(d.Get("encryption_spec"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("encryption_spec"); !tpgresource.IsEmptyValue(reflect.ValueOf(encryptionSpecProp)) && (ok || !reflect.DeepEqual(v, encryptionSpecProp)) { + obj["encryptionSpec"] = encryptionSpecProp + } + + return obj, nil +} + +func expandVertexAIRagCorpusDisplayName(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusDescription(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusVectorDbConfig(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedRagManagedDb, err := expandVertexAIRagCorpusVectorDbConfigRagManagedDb(original["rag_managed_db"], d, config) + if err != nil { + return nil, err + } else { + transformed["ragManagedDb"] = transformedRagManagedDb + } + + transformedRagEmbeddingModelConfig, err := expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfig(original["rag_embedding_model_config"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedRagEmbeddingModelConfig); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["ragEmbeddingModelConfig"] = transformedRagEmbeddingModelConfig + } + + return transformed, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagManagedDb(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 { + return nil, nil + } + + if l[0] == nil { + transformed := make(map[string]interface{}) + return transformed, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedKnn, err := expandVertexAIRagCorpusVectorDbConfigRagManagedDbKnn(original["knn"], d, config) + if err != nil { + return nil, err + } else { + transformed["knn"] = transformedKnn + } + + transformedAnn, err := expandVertexAIRagCorpusVectorDbConfigRagManagedDbAnn(original["ann"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedAnn); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["ann"] = transformedAnn + } + + return transformed, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagManagedDbKnn(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 { + return nil, nil + } + + if l[0] == nil { + transformed := make(map[string]interface{}) + return transformed, nil + } + transformed := make(map[string]interface{}) + + return transformed, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagManagedDbAnn(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedTreeDepth, err := expandVertexAIRagCorpusVectorDbConfigRagManagedDbAnnTreeDepth(original["tree_depth"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedTreeDepth); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["treeDepth"] = transformedTreeDepth + } + + transformedLeafCount, err := expandVertexAIRagCorpusVectorDbConfigRagManagedDbAnnLeafCount(original["leaf_count"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedLeafCount); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["leafCount"] = transformedLeafCount + } + + return transformed, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagManagedDbAnnTreeDepth(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagManagedDbAnnLeafCount(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfig(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedVertexPredictionEndpoint, err := expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpoint(original["vertex_prediction_endpoint"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedVertexPredictionEndpoint); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["vertexPredictionEndpoint"] = transformedVertexPredictionEndpoint + } + + return transformed, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpoint(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedEndpoint, err := expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpointEndpoint(original["endpoint"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedEndpoint); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["endpoint"] = transformedEndpoint + } + + transformedModel, err := expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpointModel(original["model"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedModel); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["model"] = transformedModel + } + + transformedModelVersionId, err := expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpointModelVersionId(original["model_version_id"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedModelVersionId); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["modelVersionId"] = transformedModelVersionId + } + + return transformed, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpointEndpoint(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpointModel(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusVectorDbConfigRagEmbeddingModelConfigVertexPredictionEndpointModelVersionId(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + +func expandVertexAIRagCorpusEncryptionSpec(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + if v == nil { + return nil, nil + } + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedKmsKeyName, err := expandVertexAIRagCorpusEncryptionSpecKmsKeyName(original["kms_key_name"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedKmsKeyName); val.IsValid() && !tpgresource.IsEmptyValue(val) { + transformed["kmsKeyName"] = transformedKmsKeyName + } + + return transformed, nil +} + +func expandVertexAIRagCorpusEncryptionSpecKmsKeyName(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +}