| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| package provider |
| |
| import ( |
| "context" |
| "encoding/json" |
| "fmt" |
| "os" |
| "strings" |
| "time" |
| |
| "github.com/hashicorp/terraform-plugin-sdk/v2/diag" |
| "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" |
| transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport" |
| "github.com/hashicorp/terraform-provider-google-beta/google-beta/verify" |
| "github.com/hashicorp/terraform-provider-google-beta/version" |
| ) |
| |
| // Provider returns a *schema.Provider. |
| func Provider() *schema.Provider { |
| |
| // The mtls service client gives the type of endpoint (mtls/regular) |
| // at client creation. Since we use a shared client for requests we must |
| // rewrite the endpoints to be mtls endpoints for the scenario where |
| // mtls is enabled. |
| if isMtls() { |
| // if mtls is enabled switch all default endpoints to use the mtls endpoint |
| for key, bp := range transport_tpg.DefaultBasePaths { |
| transport_tpg.DefaultBasePaths[key] = getMtlsEndpoint(bp) |
| } |
| } |
| |
| provider := &schema.Provider{ |
| Schema: map[string]*schema.Schema{ |
| "credentials": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateCredentials, |
| ConflictsWith: []string{"access_token"}, |
| }, |
| |
| "access_token": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateEmptyStrings, |
| ConflictsWith: []string{"credentials"}, |
| }, |
| |
| "impersonate_service_account": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateEmptyStrings, |
| }, |
| |
| "impersonate_service_account_delegates": { |
| Type: schema.TypeList, |
| Optional: true, |
| Elem: &schema.Schema{Type: schema.TypeString}, |
| }, |
| |
| "project": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateEmptyStrings, |
| }, |
| |
| "billing_project": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateEmptyStrings, |
| }, |
| |
| "region": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateEmptyStrings, |
| }, |
| |
| "zone": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: ValidateEmptyStrings, |
| }, |
| |
| "scopes": { |
| Type: schema.TypeList, |
| Optional: true, |
| Elem: &schema.Schema{Type: schema.TypeString}, |
| }, |
| |
| "universe_domain": { |
| Type: schema.TypeString, |
| Optional: true, |
| }, |
| |
| "batching": { |
| Type: schema.TypeList, |
| Optional: true, |
| MaxItems: 1, |
| Elem: &schema.Resource{ |
| Schema: map[string]*schema.Schema{ |
| "send_after": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: verify.ValidateNonNegativeDuration(), |
| }, |
| "enable_batching": { |
| Type: schema.TypeBool, |
| Optional: true, |
| }, |
| }, |
| }, |
| }, |
| |
| "user_project_override": { |
| Type: schema.TypeBool, |
| Optional: true, |
| }, |
| |
| "request_timeout": { |
| Type: schema.TypeString, |
| Optional: true, |
| }, |
| |
| "request_reason": { |
| Type: schema.TypeString, |
| Optional: true, |
| }, |
| |
| "default_labels": { |
| Type: schema.TypeMap, |
| Optional: true, |
| Elem: &schema.Schema{Type: schema.TypeString}, |
| }, |
| |
| "add_terraform_attribution_label": { |
| Type: schema.TypeBool, |
| Optional: true, |
| }, |
| |
| "terraform_attribution_label_addition_strategy": { |
| Type: schema.TypeString, |
| Optional: true, |
| }, |
| |
| // Generated Products |
| "access_approval_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "access_context_manager_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "active_directory_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "alloydb_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "api_gateway_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "apigee_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "app_engine_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "artifact_registry_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "backup_dr_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "beyondcorp_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "biglake_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "big_query_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "bigquery_analytics_hub_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "bigquery_connection_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "bigquery_datapolicy_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "bigquery_data_transfer_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "bigquery_reservation_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "bigtable_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "billing_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "binary_authorization_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "blockchain_node_engine_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "certificate_manager_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_asset_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_build_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloudbuildv2_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "clouddeploy_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "clouddomains_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_functions_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloudfunctions2_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_identity_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_ids_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_run_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_run_v2_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_scheduler_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "cloud_tasks_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "compute_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "container_analysis_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "container_attached_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "core_billing_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "database_migration_service_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "data_catalog_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dataform_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "data_fusion_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "data_loss_prevention_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "data_pipeline_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dataplex_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dataproc_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dataproc_metastore_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "datastore_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "datastream_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "deployment_manager_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dialogflow_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dialogflow_cx_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "discovery_engine_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "dns_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "document_ai_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "document_ai_warehouse_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "edgecontainer_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "edgenetwork_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "essential_contacts_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "filestore_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firebase_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firebase_app_check_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firebase_database_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firebase_extensions_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firebase_hosting_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firebase_storage_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "firestore_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "gke_backup_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "gke_hub_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "gke_hub2_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "gkeonprem_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "healthcare_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "iam2_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "iam_beta_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "iam_workforce_pool_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "iap_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "identity_platform_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "integration_connectors_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "kms_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "logging_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "looker_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "memcache_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "migration_center_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "ml_engine_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "monitoring_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "netapp_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "network_connectivity_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "network_management_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "network_security_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "network_services_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "notebooks_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "org_policy_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "os_config_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "os_login_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "privateca_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "public_ca_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "pubsub_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "pubsub_lite_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "redis_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "resource_manager_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "runtime_config_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "secret_manager_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "secure_source_manager_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "security_center_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "securityposture_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "security_scanner_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "service_directory_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "service_management_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "service_usage_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "source_repo_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "spanner_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "sql_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "storage_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "storage_insights_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "storage_transfer_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "tags_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "tpu_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "tpu_v2_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "vertex_ai_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "vmwareengine_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "vpc_access_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "workbench_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "workflows_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| "workstations_custom_endpoint": { |
| Type: schema.TypeString, |
| Optional: true, |
| ValidateFunc: transport_tpg.ValidateCustomEndpoint, |
| }, |
| |
| // Handwritten Products / Versioned / Atypical Entries |
| transport_tpg.CloudBillingCustomEndpointEntryKey: transport_tpg.CloudBillingCustomEndpointEntry, |
| transport_tpg.ComposerCustomEndpointEntryKey: transport_tpg.ComposerCustomEndpointEntry, |
| transport_tpg.ContainerCustomEndpointEntryKey: transport_tpg.ContainerCustomEndpointEntry, |
| transport_tpg.DataflowCustomEndpointEntryKey: transport_tpg.DataflowCustomEndpointEntry, |
| transport_tpg.IamCredentialsCustomEndpointEntryKey: transport_tpg.IamCredentialsCustomEndpointEntry, |
| transport_tpg.ResourceManagerV3CustomEndpointEntryKey: transport_tpg.ResourceManagerV3CustomEndpointEntry, |
| transport_tpg.RuntimeConfigCustomEndpointEntryKey: transport_tpg.RuntimeConfigCustomEndpointEntry, |
| transport_tpg.IAMCustomEndpointEntryKey: transport_tpg.IAMCustomEndpointEntry, |
| transport_tpg.ServiceNetworkingCustomEndpointEntryKey: transport_tpg.ServiceNetworkingCustomEndpointEntry, |
| transport_tpg.TagsLocationCustomEndpointEntryKey: transport_tpg.TagsLocationCustomEndpointEntry, |
| |
| // dcl |
| transport_tpg.ContainerAwsCustomEndpointEntryKey: transport_tpg.ContainerAwsCustomEndpointEntry, |
| transport_tpg.ContainerAzureCustomEndpointEntryKey: transport_tpg.ContainerAzureCustomEndpointEntry, |
| }, |
| |
| ProviderMetaSchema: map[string]*schema.Schema{ |
| "module_name": { |
| Type: schema.TypeString, |
| Optional: true, |
| }, |
| }, |
| |
| DataSourcesMap: DatasourceMap(), |
| ResourcesMap: ResourceMap(), |
| } |
| |
| provider.ConfigureContextFunc = func(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) { |
| return ProviderConfigure(ctx, d, provider) |
| } |
| |
| transport_tpg.ConfigureDCLProvider(provider) |
| |
| return provider |
| } |
| |
| func DatasourceMap() map[string]*schema.Resource { |
| datasourceMap, _ := DatasourceMapWithErrors() |
| return datasourceMap |
| } |
| |
| func DatasourceMapWithErrors() (map[string]*schema.Resource, error) { |
| return mergeResourceMaps( |
| handwrittenDatasources, |
| generatedIAMDatasources, |
| handwrittenIAMDatasources, |
| ) |
| } |
| |
| func ResourceMap() map[string]*schema.Resource { |
| resourceMap, _ := ResourceMapWithErrors() |
| return resourceMap |
| } |
| |
| func ResourceMapWithErrors() (map[string]*schema.Resource, error) { |
| return mergeResourceMaps( |
| generatedResources, |
| handwrittenResources, |
| handwrittenIAMResources, |
| dclResources, |
| ) |
| } |
| |
| func ProviderConfigure(ctx context.Context, d *schema.ResourceData, p *schema.Provider) (interface{}, diag.Diagnostics) { |
| err := transport_tpg.HandleSDKDefaults(d) |
| if err != nil { |
| return nil, diag.FromErr(err) |
| } |
| |
| config := transport_tpg.Config{ |
| Project: d.Get("project").(string), |
| Region: d.Get("region").(string), |
| Zone: d.Get("zone").(string), |
| UserProjectOverride: d.Get("user_project_override").(bool), |
| BillingProject: d.Get("billing_project").(string), |
| UserAgent: p.UserAgent("terraform-provider-google-beta", version.ProviderVersion), |
| } |
| |
| // opt in extension for adding to the User-Agent header |
| if ext := os.Getenv("GOOGLE_TERRAFORM_USERAGENT_EXTENSION"); ext != "" { |
| ua := config.UserAgent |
| config.UserAgent = fmt.Sprintf("%s %s", ua, ext) |
| } |
| |
| if v, ok := d.GetOk("request_timeout"); ok { |
| var err error |
| config.RequestTimeout, err = time.ParseDuration(v.(string)) |
| if err != nil { |
| return nil, diag.FromErr(err) |
| } |
| } |
| |
| if v, ok := d.GetOk("request_reason"); ok { |
| config.RequestReason = v.(string) |
| } |
| |
| // Check for primary credentials in config. Note that if neither is set, ADCs |
| // will be used if available. |
| if v, ok := d.GetOk("access_token"); ok { |
| config.AccessToken = v.(string) |
| } |
| |
| if v, ok := d.GetOk("credentials"); ok { |
| config.Credentials = v.(string) |
| } |
| |
| // only check environment variables if neither value was set in config- this |
| // means config beats env var in all cases. |
| if config.AccessToken == "" && config.Credentials == "" { |
| config.Credentials = transport_tpg.MultiEnvSearch([]string{ |
| "GOOGLE_CREDENTIALS", |
| "GOOGLE_CLOUD_KEYFILE_JSON", |
| "GCLOUD_KEYFILE_JSON", |
| }) |
| |
| config.AccessToken = transport_tpg.MultiEnvSearch([]string{ |
| "GOOGLE_OAUTH_ACCESS_TOKEN", |
| }) |
| } |
| |
| // set universe_domain based on the service account key file. |
| if config.Credentials != "" { |
| contents, _, err := verify.PathOrContents(config.Credentials) |
| if err != nil { |
| return nil, diag.FromErr(fmt.Errorf("error loading service account credentials: %s", err)) |
| } |
| var content map[string]any |
| |
| if err := json.Unmarshal([]byte(contents), &content); err != nil { |
| return nil, diag.FromErr(err) |
| } |
| |
| if content["universe_domain"] != nil { |
| config.UniverseDomain = content["universe_domain"].(string) |
| } |
| } |
| |
| // Check if the user provided a value from the universe_domain field other than the default |
| if v, ok := d.GetOk("universe_domain"); ok && v.(string) != "googleapis.com" { |
| if config.UniverseDomain == "" { |
| return nil, diag.FromErr(fmt.Errorf("Universe domain '%s' supplied directly to Terraform with no matching universe domain in credentials. Credentials with no 'universe_domain' set are assumed to be in the default universe.", v)) |
| } else if v.(string) != config.UniverseDomain { |
| if _, err := os.Stat(config.Credentials); err == nil { |
| return nil, diag.FromErr(fmt.Errorf("'%s' does not match the universe domain '%s' already set in the credential file '%s'. The 'universe_domain' provider configuration can not be used to override the universe domain that is defined in the active credential. Set the 'universe_domain' provider configuration when universe domain information is not already available in the credential, e.g. when authenticating with a JWT token.", v, config.UniverseDomain, config.Credentials)) |
| } else { |
| return nil, diag.FromErr(fmt.Errorf("'%s' does not match the universe domain '%s' supplied directly to Terraform. The 'universe_domain' provider configuration can not be used to override the universe domain that is defined in the active credential. Set the 'universe_domain' provider configuration when universe domain information is not already available in the credential, e.g. when authenticating with a JWT token.", v, config.UniverseDomain)) |
| } |
| } |
| } |
| |
| // Replace hostname by the universe_domain field. |
| if config.UniverseDomain != "" && config.UniverseDomain != "googleapis.com" { |
| for key, basePath := range transport_tpg.DefaultBasePaths { |
| transport_tpg.DefaultBasePaths[key] = strings.ReplaceAll(basePath, "googleapis.com", config.UniverseDomain) |
| } |
| } |
| |
| err = transport_tpg.SetEndpointDefaults(d) |
| if err != nil { |
| return nil, diag.FromErr(err) |
| } |
| transport_tpg.HandleDCLCustomEndpointDefaults(d) |
| |
| // Given that impersonate_service_account is a secondary auth method, it has |
| // no conflicts to worry about. We pull the env var in a DefaultFunc. |
| if v, ok := d.GetOk("impersonate_service_account"); ok { |
| config.ImpersonateServiceAccount = v.(string) |
| } |
| |
| delegates := d.Get("impersonate_service_account_delegates").([]interface{}) |
| if len(delegates) > 0 { |
| config.ImpersonateServiceAccountDelegates = make([]string, len(delegates)) |
| } |
| for i, delegate := range delegates { |
| config.ImpersonateServiceAccountDelegates[i] = delegate.(string) |
| } |
| |
| scopes := d.Get("scopes").([]interface{}) |
| if len(scopes) > 0 { |
| config.Scopes = make([]string, len(scopes)) |
| } |
| for i, scope := range scopes { |
| config.Scopes[i] = scope.(string) |
| } |
| |
| config.DefaultLabels = make(map[string]string) |
| defaultLabels := d.Get("default_labels").(map[string]interface{}) |
| |
| for k, v := range defaultLabels { |
| config.DefaultLabels[k] = v.(string) |
| } |
| |
| // Attribution label is opt-in; if unset, the default for AddTerraformAttributionLabel is false. |
| config.AddTerraformAttributionLabel = d.Get("add_terraform_attribution_label").(bool) |
| if config.AddTerraformAttributionLabel { |
| config.TerraformAttributionLabelAdditionStrategy = transport_tpg.CreateOnlyAttributionStrategy |
| if v, ok := d.GetOk("terraform_attribution_label_addition_strategy"); ok { |
| config.TerraformAttributionLabelAdditionStrategy = v.(string) |
| } |
| switch config.TerraformAttributionLabelAdditionStrategy { |
| case transport_tpg.CreateOnlyAttributionStrategy, transport_tpg.ProactiveAttributionStrategy: |
| default: |
| return nil, diag.FromErr(fmt.Errorf("unrecognized terraform_attribution_label_addition_strategy %q", config.TerraformAttributionLabelAdditionStrategy)) |
| } |
| } |
| |
| batchCfg, err := transport_tpg.ExpandProviderBatchingConfig(d.Get("batching")) |
| if err != nil { |
| return nil, diag.FromErr(err) |
| } |
| config.BatchingConfig = batchCfg |
| |
| // Generated products |
| config.AccessApprovalBasePath = d.Get("access_approval_custom_endpoint").(string) |
| config.AccessContextManagerBasePath = d.Get("access_context_manager_custom_endpoint").(string) |
| config.ActiveDirectoryBasePath = d.Get("active_directory_custom_endpoint").(string) |
| config.AlloydbBasePath = d.Get("alloydb_custom_endpoint").(string) |
| config.ApiGatewayBasePath = d.Get("api_gateway_custom_endpoint").(string) |
| config.ApigeeBasePath = d.Get("apigee_custom_endpoint").(string) |
| config.AppEngineBasePath = d.Get("app_engine_custom_endpoint").(string) |
| config.ArtifactRegistryBasePath = d.Get("artifact_registry_custom_endpoint").(string) |
| config.BackupDRBasePath = d.Get("backup_dr_custom_endpoint").(string) |
| config.BeyondcorpBasePath = d.Get("beyondcorp_custom_endpoint").(string) |
| config.BiglakeBasePath = d.Get("biglake_custom_endpoint").(string) |
| config.BigQueryBasePath = d.Get("big_query_custom_endpoint").(string) |
| config.BigqueryAnalyticsHubBasePath = d.Get("bigquery_analytics_hub_custom_endpoint").(string) |
| config.BigqueryConnectionBasePath = d.Get("bigquery_connection_custom_endpoint").(string) |
| config.BigqueryDatapolicyBasePath = d.Get("bigquery_datapolicy_custom_endpoint").(string) |
| config.BigqueryDataTransferBasePath = d.Get("bigquery_data_transfer_custom_endpoint").(string) |
| config.BigqueryReservationBasePath = d.Get("bigquery_reservation_custom_endpoint").(string) |
| config.BigtableBasePath = d.Get("bigtable_custom_endpoint").(string) |
| config.BillingBasePath = d.Get("billing_custom_endpoint").(string) |
| config.BinaryAuthorizationBasePath = d.Get("binary_authorization_custom_endpoint").(string) |
| config.BlockchainNodeEngineBasePath = d.Get("blockchain_node_engine_custom_endpoint").(string) |
| config.CertificateManagerBasePath = d.Get("certificate_manager_custom_endpoint").(string) |
| config.CloudAssetBasePath = d.Get("cloud_asset_custom_endpoint").(string) |
| config.CloudBuildBasePath = d.Get("cloud_build_custom_endpoint").(string) |
| config.Cloudbuildv2BasePath = d.Get("cloudbuildv2_custom_endpoint").(string) |
| config.ClouddeployBasePath = d.Get("clouddeploy_custom_endpoint").(string) |
| config.ClouddomainsBasePath = d.Get("clouddomains_custom_endpoint").(string) |
| config.CloudFunctionsBasePath = d.Get("cloud_functions_custom_endpoint").(string) |
| config.Cloudfunctions2BasePath = d.Get("cloudfunctions2_custom_endpoint").(string) |
| config.CloudIdentityBasePath = d.Get("cloud_identity_custom_endpoint").(string) |
| config.CloudIdsBasePath = d.Get("cloud_ids_custom_endpoint").(string) |
| config.CloudRunBasePath = d.Get("cloud_run_custom_endpoint").(string) |
| config.CloudRunV2BasePath = d.Get("cloud_run_v2_custom_endpoint").(string) |
| config.CloudSchedulerBasePath = d.Get("cloud_scheduler_custom_endpoint").(string) |
| config.CloudTasksBasePath = d.Get("cloud_tasks_custom_endpoint").(string) |
| config.ComputeBasePath = d.Get("compute_custom_endpoint").(string) |
| config.ContainerAnalysisBasePath = d.Get("container_analysis_custom_endpoint").(string) |
| config.ContainerAttachedBasePath = d.Get("container_attached_custom_endpoint").(string) |
| config.CoreBillingBasePath = d.Get("core_billing_custom_endpoint").(string) |
| config.DatabaseMigrationServiceBasePath = d.Get("database_migration_service_custom_endpoint").(string) |
| config.DataCatalogBasePath = d.Get("data_catalog_custom_endpoint").(string) |
| config.DataformBasePath = d.Get("dataform_custom_endpoint").(string) |
| config.DataFusionBasePath = d.Get("data_fusion_custom_endpoint").(string) |
| config.DataLossPreventionBasePath = d.Get("data_loss_prevention_custom_endpoint").(string) |
| config.DataPipelineBasePath = d.Get("data_pipeline_custom_endpoint").(string) |
| config.DataplexBasePath = d.Get("dataplex_custom_endpoint").(string) |
| config.DataprocBasePath = d.Get("dataproc_custom_endpoint").(string) |
| config.DataprocMetastoreBasePath = d.Get("dataproc_metastore_custom_endpoint").(string) |
| config.DatastoreBasePath = d.Get("datastore_custom_endpoint").(string) |
| config.DatastreamBasePath = d.Get("datastream_custom_endpoint").(string) |
| config.DeploymentManagerBasePath = d.Get("deployment_manager_custom_endpoint").(string) |
| config.DialogflowBasePath = d.Get("dialogflow_custom_endpoint").(string) |
| config.DialogflowCXBasePath = d.Get("dialogflow_cx_custom_endpoint").(string) |
| config.DiscoveryEngineBasePath = d.Get("discovery_engine_custom_endpoint").(string) |
| config.DNSBasePath = d.Get("dns_custom_endpoint").(string) |
| config.DocumentAIBasePath = d.Get("document_ai_custom_endpoint").(string) |
| config.DocumentAIWarehouseBasePath = d.Get("document_ai_warehouse_custom_endpoint").(string) |
| config.EdgecontainerBasePath = d.Get("edgecontainer_custom_endpoint").(string) |
| config.EdgenetworkBasePath = d.Get("edgenetwork_custom_endpoint").(string) |
| config.EssentialContactsBasePath = d.Get("essential_contacts_custom_endpoint").(string) |
| config.FilestoreBasePath = d.Get("filestore_custom_endpoint").(string) |
| config.FirebaseBasePath = d.Get("firebase_custom_endpoint").(string) |
| config.FirebaseAppCheckBasePath = d.Get("firebase_app_check_custom_endpoint").(string) |
| config.FirebaseDatabaseBasePath = d.Get("firebase_database_custom_endpoint").(string) |
| config.FirebaseExtensionsBasePath = d.Get("firebase_extensions_custom_endpoint").(string) |
| config.FirebaseHostingBasePath = d.Get("firebase_hosting_custom_endpoint").(string) |
| config.FirebaseStorageBasePath = d.Get("firebase_storage_custom_endpoint").(string) |
| config.FirestoreBasePath = d.Get("firestore_custom_endpoint").(string) |
| config.GKEBackupBasePath = d.Get("gke_backup_custom_endpoint").(string) |
| config.GKEHubBasePath = d.Get("gke_hub_custom_endpoint").(string) |
| config.GKEHub2BasePath = d.Get("gke_hub2_custom_endpoint").(string) |
| config.GkeonpremBasePath = d.Get("gkeonprem_custom_endpoint").(string) |
| config.HealthcareBasePath = d.Get("healthcare_custom_endpoint").(string) |
| config.IAM2BasePath = d.Get("iam2_custom_endpoint").(string) |
| config.IAMBetaBasePath = d.Get("iam_beta_custom_endpoint").(string) |
| config.IAMWorkforcePoolBasePath = d.Get("iam_workforce_pool_custom_endpoint").(string) |
| config.IapBasePath = d.Get("iap_custom_endpoint").(string) |
| config.IdentityPlatformBasePath = d.Get("identity_platform_custom_endpoint").(string) |
| config.IntegrationConnectorsBasePath = d.Get("integration_connectors_custom_endpoint").(string) |
| config.KMSBasePath = d.Get("kms_custom_endpoint").(string) |
| config.LoggingBasePath = d.Get("logging_custom_endpoint").(string) |
| config.LookerBasePath = d.Get("looker_custom_endpoint").(string) |
| config.MemcacheBasePath = d.Get("memcache_custom_endpoint").(string) |
| config.MigrationCenterBasePath = d.Get("migration_center_custom_endpoint").(string) |
| config.MLEngineBasePath = d.Get("ml_engine_custom_endpoint").(string) |
| config.MonitoringBasePath = d.Get("monitoring_custom_endpoint").(string) |
| config.NetappBasePath = d.Get("netapp_custom_endpoint").(string) |
| config.NetworkConnectivityBasePath = d.Get("network_connectivity_custom_endpoint").(string) |
| config.NetworkManagementBasePath = d.Get("network_management_custom_endpoint").(string) |
| config.NetworkSecurityBasePath = d.Get("network_security_custom_endpoint").(string) |
| config.NetworkServicesBasePath = d.Get("network_services_custom_endpoint").(string) |
| config.NotebooksBasePath = d.Get("notebooks_custom_endpoint").(string) |
| config.OrgPolicyBasePath = d.Get("org_policy_custom_endpoint").(string) |
| config.OSConfigBasePath = d.Get("os_config_custom_endpoint").(string) |
| config.OSLoginBasePath = d.Get("os_login_custom_endpoint").(string) |
| config.PrivatecaBasePath = d.Get("privateca_custom_endpoint").(string) |
| config.PublicCABasePath = d.Get("public_ca_custom_endpoint").(string) |
| config.PubsubBasePath = d.Get("pubsub_custom_endpoint").(string) |
| config.PubsubLiteBasePath = d.Get("pubsub_lite_custom_endpoint").(string) |
| config.RedisBasePath = d.Get("redis_custom_endpoint").(string) |
| config.ResourceManagerBasePath = d.Get("resource_manager_custom_endpoint").(string) |
| config.RuntimeConfigBasePath = d.Get("runtime_config_custom_endpoint").(string) |
| config.SecretManagerBasePath = d.Get("secret_manager_custom_endpoint").(string) |
| config.SecureSourceManagerBasePath = d.Get("secure_source_manager_custom_endpoint").(string) |
| config.SecurityCenterBasePath = d.Get("security_center_custom_endpoint").(string) |
| config.SecuritypostureBasePath = d.Get("securityposture_custom_endpoint").(string) |
| config.SecurityScannerBasePath = d.Get("security_scanner_custom_endpoint").(string) |
| config.ServiceDirectoryBasePath = d.Get("service_directory_custom_endpoint").(string) |
| config.ServiceManagementBasePath = d.Get("service_management_custom_endpoint").(string) |
| config.ServiceUsageBasePath = d.Get("service_usage_custom_endpoint").(string) |
| config.SourceRepoBasePath = d.Get("source_repo_custom_endpoint").(string) |
| config.SpannerBasePath = d.Get("spanner_custom_endpoint").(string) |
| config.SQLBasePath = d.Get("sql_custom_endpoint").(string) |
| config.StorageBasePath = d.Get("storage_custom_endpoint").(string) |
| config.StorageInsightsBasePath = d.Get("storage_insights_custom_endpoint").(string) |
| config.StorageTransferBasePath = d.Get("storage_transfer_custom_endpoint").(string) |
| config.TagsBasePath = d.Get("tags_custom_endpoint").(string) |
| config.TPUBasePath = d.Get("tpu_custom_endpoint").(string) |
| config.TpuV2BasePath = d.Get("tpu_v2_custom_endpoint").(string) |
| config.VertexAIBasePath = d.Get("vertex_ai_custom_endpoint").(string) |
| config.VmwareengineBasePath = d.Get("vmwareengine_custom_endpoint").(string) |
| config.VPCAccessBasePath = d.Get("vpc_access_custom_endpoint").(string) |
| config.WorkbenchBasePath = d.Get("workbench_custom_endpoint").(string) |
| config.WorkflowsBasePath = d.Get("workflows_custom_endpoint").(string) |
| config.WorkstationsBasePath = d.Get("workstations_custom_endpoint").(string) |
| |
| // Handwritten Products / Versioned / Atypical Entries |
| config.CloudBillingBasePath = d.Get(transport_tpg.CloudBillingCustomEndpointEntryKey).(string) |
| config.ComposerBasePath = d.Get(transport_tpg.ComposerCustomEndpointEntryKey).(string) |
| config.ContainerBasePath = d.Get(transport_tpg.ContainerCustomEndpointEntryKey).(string) |
| config.DataflowBasePath = d.Get(transport_tpg.DataflowCustomEndpointEntryKey).(string) |
| config.IamCredentialsBasePath = d.Get(transport_tpg.IamCredentialsCustomEndpointEntryKey).(string) |
| config.ResourceManagerV3BasePath = d.Get(transport_tpg.ResourceManagerV3CustomEndpointEntryKey).(string) |
| config.RuntimeConfigBasePath = d.Get(transport_tpg.RuntimeConfigCustomEndpointEntryKey).(string) |
| config.IAMBasePath = d.Get(transport_tpg.IAMCustomEndpointEntryKey).(string) |
| config.ServiceNetworkingBasePath = d.Get(transport_tpg.ServiceNetworkingCustomEndpointEntryKey).(string) |
| config.ServiceUsageBasePath = d.Get(transport_tpg.ServiceUsageCustomEndpointEntryKey).(string) |
| config.BigtableAdminBasePath = d.Get(transport_tpg.BigtableAdminCustomEndpointEntryKey).(string) |
| config.TagsLocationBasePath = d.Get(transport_tpg.TagsLocationCustomEndpointEntryKey).(string) |
| |
| // dcl |
| config.ContainerAwsBasePath = d.Get(transport_tpg.ContainerAwsCustomEndpointEntryKey).(string) |
| config.ContainerAzureBasePath = d.Get(transport_tpg.ContainerAzureCustomEndpointEntryKey).(string) |
| |
| stopCtx, ok := schema.StopContext(ctx) |
| if !ok { |
| stopCtx = ctx |
| } |
| if err := config.LoadAndValidate(stopCtx); err != nil { |
| return nil, diag.FromErr(err) |
| } |
| |
| return transport_tpg.ProviderDCLConfigure(d, &config), nil |
| } |
| |
| func mergeResourceMaps(ms ...map[string]*schema.Resource) (map[string]*schema.Resource, error) { |
| merged := make(map[string]*schema.Resource) |
| duplicates := []string{} |
| |
| for _, m := range ms { |
| for k, v := range m { |
| if _, ok := merged[k]; ok { |
| duplicates = append(duplicates, k) |
| } |
| |
| merged[k] = v |
| } |
| } |
| |
| var err error |
| if len(duplicates) > 0 { |
| err = fmt.Errorf("saw duplicates in mergeResourceMaps: %v", duplicates) |
| } |
| |
| return merged, err |
| } |