| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| package fwtransport |
| |
| import ( |
| "context" |
| "fmt" |
| "net/http" |
| "os" |
| "regexp" |
| "strconv" |
| "time" |
| |
| "golang.org/x/oauth2" |
| googleoauth "golang.org/x/oauth2/google" |
| |
| "google.golang.org/api/option" |
| "google.golang.org/api/transport" |
| "google.golang.org/grpc" |
| |
| "github.com/hashicorp/go-cleanhttp" |
| "github.com/hashicorp/terraform-plugin-framework/diag" |
| "github.com/hashicorp/terraform-plugin-framework/types" |
| "github.com/hashicorp/terraform-plugin-framework/types/basetypes" |
| "github.com/hashicorp/terraform-plugin-log/tflog" |
| "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging" |
| |
| "github.com/hashicorp/terraform-provider-google-beta/google-beta/fwmodels" |
| transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport" |
| "github.com/hashicorp/terraform-provider-google-beta/google-beta/verify" |
| |
| grpc_logrus "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus" |
| "github.com/sirupsen/logrus" |
| ) |
| |
| type FrameworkProviderConfig struct { |
| BillingProject types.String |
| Client *http.Client |
| Context context.Context |
| gRPCLoggingOptions []option.ClientOption |
| PollInterval time.Duration |
| Project types.String |
| Region types.String |
| Zone types.String |
| RequestBatcherIam *transport_tpg.RequestBatcher |
| RequestBatcherServiceUsage *transport_tpg.RequestBatcher |
| Scopes types.List |
| TokenSource oauth2.TokenSource |
| UniverseDomain types.String |
| UserAgent string |
| UserProjectOverride types.Bool |
| |
| // paths for client setup |
| AccessApprovalBasePath string |
| AccessContextManagerBasePath string |
| ActiveDirectoryBasePath string |
| AlloydbBasePath string |
| ApiGatewayBasePath string |
| ApigeeBasePath string |
| AppEngineBasePath string |
| ArtifactRegistryBasePath string |
| BackupDRBasePath string |
| BeyondcorpBasePath string |
| BiglakeBasePath string |
| BigQueryBasePath string |
| BigqueryAnalyticsHubBasePath string |
| BigqueryConnectionBasePath string |
| BigqueryDatapolicyBasePath string |
| BigqueryDataTransferBasePath string |
| BigqueryReservationBasePath string |
| BigtableBasePath string |
| BillingBasePath string |
| BinaryAuthorizationBasePath string |
| BlockchainNodeEngineBasePath string |
| CertificateManagerBasePath string |
| CloudAssetBasePath string |
| CloudBuildBasePath string |
| Cloudbuildv2BasePath string |
| ClouddeployBasePath string |
| ClouddomainsBasePath string |
| CloudFunctionsBasePath string |
| Cloudfunctions2BasePath string |
| CloudIdentityBasePath string |
| CloudIdsBasePath string |
| CloudRunBasePath string |
| CloudRunV2BasePath string |
| CloudSchedulerBasePath string |
| CloudTasksBasePath string |
| ComputeBasePath string |
| ContainerAnalysisBasePath string |
| ContainerAttachedBasePath string |
| CoreBillingBasePath string |
| DatabaseMigrationServiceBasePath string |
| DataCatalogBasePath string |
| DataformBasePath string |
| DataFusionBasePath string |
| DataLossPreventionBasePath string |
| DataPipelineBasePath string |
| DataplexBasePath string |
| DataprocBasePath string |
| DataprocMetastoreBasePath string |
| DatastoreBasePath string |
| DatastreamBasePath string |
| DeploymentManagerBasePath string |
| DialogflowBasePath string |
| DialogflowCXBasePath string |
| DiscoveryEngineBasePath string |
| DNSBasePath string |
| DocumentAIBasePath string |
| DocumentAIWarehouseBasePath string |
| EdgecontainerBasePath string |
| EdgenetworkBasePath string |
| EssentialContactsBasePath string |
| FilestoreBasePath string |
| FirebaseBasePath string |
| FirebaseAppCheckBasePath string |
| FirebaseDatabaseBasePath string |
| FirebaseExtensionsBasePath string |
| FirebaseHostingBasePath string |
| FirebaseStorageBasePath string |
| FirestoreBasePath string |
| GKEBackupBasePath string |
| GKEHubBasePath string |
| GKEHub2BasePath string |
| GkeonpremBasePath string |
| HealthcareBasePath string |
| IAM2BasePath string |
| IAMBetaBasePath string |
| IAMWorkforcePoolBasePath string |
| IapBasePath string |
| IdentityPlatformBasePath string |
| IntegrationConnectorsBasePath string |
| KMSBasePath string |
| LoggingBasePath string |
| LookerBasePath string |
| MemcacheBasePath string |
| MigrationCenterBasePath string |
| MLEngineBasePath string |
| MonitoringBasePath string |
| NetappBasePath string |
| NetworkConnectivityBasePath string |
| NetworkManagementBasePath string |
| NetworkSecurityBasePath string |
| NetworkServicesBasePath string |
| NotebooksBasePath string |
| OrgPolicyBasePath string |
| OSConfigBasePath string |
| OSLoginBasePath string |
| PrivatecaBasePath string |
| PublicCABasePath string |
| PubsubBasePath string |
| PubsubLiteBasePath string |
| RedisBasePath string |
| ResourceManagerBasePath string |
| RuntimeConfigBasePath string |
| SecretManagerBasePath string |
| SecureSourceManagerBasePath string |
| SecurityCenterBasePath string |
| SecuritypostureBasePath string |
| SecurityScannerBasePath string |
| ServiceDirectoryBasePath string |
| ServiceManagementBasePath string |
| ServiceUsageBasePath string |
| SourceRepoBasePath string |
| SpannerBasePath string |
| SQLBasePath string |
| StorageBasePath string |
| StorageInsightsBasePath string |
| StorageTransferBasePath string |
| TagsBasePath string |
| TPUBasePath string |
| TpuV2BasePath string |
| VertexAIBasePath string |
| VmwareengineBasePath string |
| VPCAccessBasePath string |
| WorkbenchBasePath string |
| WorkflowsBasePath string |
| WorkstationsBasePath string |
| } |
| |
| // LoadAndValidateFramework handles the bulk of configuring the provider |
| // it is pulled out so that we can manually call this from our testing provider as well |
| func (p *FrameworkProviderConfig) LoadAndValidateFramework(ctx context.Context, data *fwmodels.ProviderModel, tfVersion string, diags *diag.Diagnostics, providerversion string) { |
| |
| // Set defaults if needed |
| p.HandleDefaults(ctx, data, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| p.Context = ctx |
| |
| // Handle User Agent string |
| p.UserAgent = CompileUserAgentString(ctx, "terraform-provider-google-beta", tfVersion, providerversion) |
| // opt in extension for adding to the User-Agent header |
| if ext := os.Getenv("GOOGLE_TERRAFORM_USERAGENT_EXTENSION"); ext != "" { |
| ua := p.UserAgent |
| p.UserAgent = fmt.Sprintf("%s %s", ua, ext) |
| } |
| |
| // Set up client configuration |
| p.SetupClient(ctx, *data, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| // gRPC Logging setup |
| p.SetupGrpcLogging() |
| |
| // Handle Batching Config |
| batchingConfig := GetBatchingConfig(ctx, data.Batching, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| // Setup Base Paths for clients |
| // Generated products |
| p.AccessApprovalBasePath = data.AccessApprovalCustomEndpoint.ValueString() |
| p.AccessContextManagerBasePath = data.AccessContextManagerCustomEndpoint.ValueString() |
| p.ActiveDirectoryBasePath = data.ActiveDirectoryCustomEndpoint.ValueString() |
| p.AlloydbBasePath = data.AlloydbCustomEndpoint.ValueString() |
| p.ApiGatewayBasePath = data.ApiGatewayCustomEndpoint.ValueString() |
| p.ApigeeBasePath = data.ApigeeCustomEndpoint.ValueString() |
| p.AppEngineBasePath = data.AppEngineCustomEndpoint.ValueString() |
| p.ArtifactRegistryBasePath = data.ArtifactRegistryCustomEndpoint.ValueString() |
| p.BackupDRBasePath = data.BackupDRCustomEndpoint.ValueString() |
| p.BeyondcorpBasePath = data.BeyondcorpCustomEndpoint.ValueString() |
| p.BiglakeBasePath = data.BiglakeCustomEndpoint.ValueString() |
| p.BigQueryBasePath = data.BigQueryCustomEndpoint.ValueString() |
| p.BigqueryAnalyticsHubBasePath = data.BigqueryAnalyticsHubCustomEndpoint.ValueString() |
| p.BigqueryConnectionBasePath = data.BigqueryConnectionCustomEndpoint.ValueString() |
| p.BigqueryDatapolicyBasePath = data.BigqueryDatapolicyCustomEndpoint.ValueString() |
| p.BigqueryDataTransferBasePath = data.BigqueryDataTransferCustomEndpoint.ValueString() |
| p.BigqueryReservationBasePath = data.BigqueryReservationCustomEndpoint.ValueString() |
| p.BigtableBasePath = data.BigtableCustomEndpoint.ValueString() |
| p.BillingBasePath = data.BillingCustomEndpoint.ValueString() |
| p.BinaryAuthorizationBasePath = data.BinaryAuthorizationCustomEndpoint.ValueString() |
| p.BlockchainNodeEngineBasePath = data.BlockchainNodeEngineCustomEndpoint.ValueString() |
| p.CertificateManagerBasePath = data.CertificateManagerCustomEndpoint.ValueString() |
| p.CloudAssetBasePath = data.CloudAssetCustomEndpoint.ValueString() |
| p.CloudBuildBasePath = data.CloudBuildCustomEndpoint.ValueString() |
| p.Cloudbuildv2BasePath = data.Cloudbuildv2CustomEndpoint.ValueString() |
| p.ClouddeployBasePath = data.ClouddeployCustomEndpoint.ValueString() |
| p.ClouddomainsBasePath = data.ClouddomainsCustomEndpoint.ValueString() |
| p.CloudFunctionsBasePath = data.CloudFunctionsCustomEndpoint.ValueString() |
| p.Cloudfunctions2BasePath = data.Cloudfunctions2CustomEndpoint.ValueString() |
| p.CloudIdentityBasePath = data.CloudIdentityCustomEndpoint.ValueString() |
| p.CloudIdsBasePath = data.CloudIdsCustomEndpoint.ValueString() |
| p.CloudRunBasePath = data.CloudRunCustomEndpoint.ValueString() |
| p.CloudRunV2BasePath = data.CloudRunV2CustomEndpoint.ValueString() |
| p.CloudSchedulerBasePath = data.CloudSchedulerCustomEndpoint.ValueString() |
| p.CloudTasksBasePath = data.CloudTasksCustomEndpoint.ValueString() |
| p.ComputeBasePath = data.ComputeCustomEndpoint.ValueString() |
| p.ContainerAnalysisBasePath = data.ContainerAnalysisCustomEndpoint.ValueString() |
| p.ContainerAttachedBasePath = data.ContainerAttachedCustomEndpoint.ValueString() |
| p.CoreBillingBasePath = data.CoreBillingCustomEndpoint.ValueString() |
| p.DatabaseMigrationServiceBasePath = data.DatabaseMigrationServiceCustomEndpoint.ValueString() |
| p.DataCatalogBasePath = data.DataCatalogCustomEndpoint.ValueString() |
| p.DataformBasePath = data.DataformCustomEndpoint.ValueString() |
| p.DataFusionBasePath = data.DataFusionCustomEndpoint.ValueString() |
| p.DataLossPreventionBasePath = data.DataLossPreventionCustomEndpoint.ValueString() |
| p.DataPipelineBasePath = data.DataPipelineCustomEndpoint.ValueString() |
| p.DataplexBasePath = data.DataplexCustomEndpoint.ValueString() |
| p.DataprocBasePath = data.DataprocCustomEndpoint.ValueString() |
| p.DataprocMetastoreBasePath = data.DataprocMetastoreCustomEndpoint.ValueString() |
| p.DatastoreBasePath = data.DatastoreCustomEndpoint.ValueString() |
| p.DatastreamBasePath = data.DatastreamCustomEndpoint.ValueString() |
| p.DeploymentManagerBasePath = data.DeploymentManagerCustomEndpoint.ValueString() |
| p.DialogflowBasePath = data.DialogflowCustomEndpoint.ValueString() |
| p.DialogflowCXBasePath = data.DialogflowCXCustomEndpoint.ValueString() |
| p.DiscoveryEngineBasePath = data.DiscoveryEngineCustomEndpoint.ValueString() |
| p.DNSBasePath = data.DNSCustomEndpoint.ValueString() |
| p.DocumentAIBasePath = data.DocumentAICustomEndpoint.ValueString() |
| p.DocumentAIWarehouseBasePath = data.DocumentAIWarehouseCustomEndpoint.ValueString() |
| p.EdgecontainerBasePath = data.EdgecontainerCustomEndpoint.ValueString() |
| p.EdgenetworkBasePath = data.EdgenetworkCustomEndpoint.ValueString() |
| p.EssentialContactsBasePath = data.EssentialContactsCustomEndpoint.ValueString() |
| p.FilestoreBasePath = data.FilestoreCustomEndpoint.ValueString() |
| p.FirebaseBasePath = data.FirebaseCustomEndpoint.ValueString() |
| p.FirebaseAppCheckBasePath = data.FirebaseAppCheckCustomEndpoint.ValueString() |
| p.FirebaseDatabaseBasePath = data.FirebaseDatabaseCustomEndpoint.ValueString() |
| p.FirebaseExtensionsBasePath = data.FirebaseExtensionsCustomEndpoint.ValueString() |
| p.FirebaseHostingBasePath = data.FirebaseHostingCustomEndpoint.ValueString() |
| p.FirebaseStorageBasePath = data.FirebaseStorageCustomEndpoint.ValueString() |
| p.FirestoreBasePath = data.FirestoreCustomEndpoint.ValueString() |
| p.GKEBackupBasePath = data.GKEBackupCustomEndpoint.ValueString() |
| p.GKEHubBasePath = data.GKEHubCustomEndpoint.ValueString() |
| p.GKEHub2BasePath = data.GKEHub2CustomEndpoint.ValueString() |
| p.GkeonpremBasePath = data.GkeonpremCustomEndpoint.ValueString() |
| p.HealthcareBasePath = data.HealthcareCustomEndpoint.ValueString() |
| p.IAM2BasePath = data.IAM2CustomEndpoint.ValueString() |
| p.IAMBetaBasePath = data.IAMBetaCustomEndpoint.ValueString() |
| p.IAMWorkforcePoolBasePath = data.IAMWorkforcePoolCustomEndpoint.ValueString() |
| p.IapBasePath = data.IapCustomEndpoint.ValueString() |
| p.IdentityPlatformBasePath = data.IdentityPlatformCustomEndpoint.ValueString() |
| p.IntegrationConnectorsBasePath = data.IntegrationConnectorsCustomEndpoint.ValueString() |
| p.KMSBasePath = data.KMSCustomEndpoint.ValueString() |
| p.LoggingBasePath = data.LoggingCustomEndpoint.ValueString() |
| p.LookerBasePath = data.LookerCustomEndpoint.ValueString() |
| p.MemcacheBasePath = data.MemcacheCustomEndpoint.ValueString() |
| p.MigrationCenterBasePath = data.MigrationCenterCustomEndpoint.ValueString() |
| p.MLEngineBasePath = data.MLEngineCustomEndpoint.ValueString() |
| p.MonitoringBasePath = data.MonitoringCustomEndpoint.ValueString() |
| p.NetappBasePath = data.NetappCustomEndpoint.ValueString() |
| p.NetworkConnectivityBasePath = data.NetworkConnectivityCustomEndpoint.ValueString() |
| p.NetworkManagementBasePath = data.NetworkManagementCustomEndpoint.ValueString() |
| p.NetworkSecurityBasePath = data.NetworkSecurityCustomEndpoint.ValueString() |
| p.NetworkServicesBasePath = data.NetworkServicesCustomEndpoint.ValueString() |
| p.NotebooksBasePath = data.NotebooksCustomEndpoint.ValueString() |
| p.OrgPolicyBasePath = data.OrgPolicyCustomEndpoint.ValueString() |
| p.OSConfigBasePath = data.OSConfigCustomEndpoint.ValueString() |
| p.OSLoginBasePath = data.OSLoginCustomEndpoint.ValueString() |
| p.PrivatecaBasePath = data.PrivatecaCustomEndpoint.ValueString() |
| p.PublicCABasePath = data.PublicCACustomEndpoint.ValueString() |
| p.PubsubBasePath = data.PubsubCustomEndpoint.ValueString() |
| p.PubsubLiteBasePath = data.PubsubLiteCustomEndpoint.ValueString() |
| p.RedisBasePath = data.RedisCustomEndpoint.ValueString() |
| p.ResourceManagerBasePath = data.ResourceManagerCustomEndpoint.ValueString() |
| p.RuntimeConfigBasePath = data.RuntimeConfigCustomEndpoint.ValueString() |
| p.SecretManagerBasePath = data.SecretManagerCustomEndpoint.ValueString() |
| p.SecureSourceManagerBasePath = data.SecureSourceManagerCustomEndpoint.ValueString() |
| p.SecurityCenterBasePath = data.SecurityCenterCustomEndpoint.ValueString() |
| p.SecuritypostureBasePath = data.SecuritypostureCustomEndpoint.ValueString() |
| p.SecurityScannerBasePath = data.SecurityScannerCustomEndpoint.ValueString() |
| p.ServiceDirectoryBasePath = data.ServiceDirectoryCustomEndpoint.ValueString() |
| p.ServiceManagementBasePath = data.ServiceManagementCustomEndpoint.ValueString() |
| p.ServiceUsageBasePath = data.ServiceUsageCustomEndpoint.ValueString() |
| p.SourceRepoBasePath = data.SourceRepoCustomEndpoint.ValueString() |
| p.SpannerBasePath = data.SpannerCustomEndpoint.ValueString() |
| p.SQLBasePath = data.SQLCustomEndpoint.ValueString() |
| p.StorageBasePath = data.StorageCustomEndpoint.ValueString() |
| p.StorageInsightsBasePath = data.StorageInsightsCustomEndpoint.ValueString() |
| p.StorageTransferBasePath = data.StorageTransferCustomEndpoint.ValueString() |
| p.TagsBasePath = data.TagsCustomEndpoint.ValueString() |
| p.TPUBasePath = data.TPUCustomEndpoint.ValueString() |
| p.TpuV2BasePath = data.TpuV2CustomEndpoint.ValueString() |
| p.VertexAIBasePath = data.VertexAICustomEndpoint.ValueString() |
| p.VmwareengineBasePath = data.VmwareengineCustomEndpoint.ValueString() |
| p.VPCAccessBasePath = data.VPCAccessCustomEndpoint.ValueString() |
| p.WorkbenchBasePath = data.WorkbenchCustomEndpoint.ValueString() |
| p.WorkflowsBasePath = data.WorkflowsCustomEndpoint.ValueString() |
| p.WorkstationsBasePath = data.WorkstationsCustomEndpoint.ValueString() |
| |
| p.Context = ctx |
| p.BillingProject = data.BillingProject |
| p.Project = data.Project |
| p.Region = GetRegionFromRegionSelfLink(data.Region) |
| p.Scopes = data.Scopes |
| p.Zone = data.Zone |
| p.UserProjectOverride = data.UserProjectOverride |
| p.PollInterval = 10 * time.Second |
| p.Project = data.Project |
| p.UniverseDomain = data.UniverseDomain |
| p.RequestBatcherServiceUsage = transport_tpg.NewRequestBatcher("Service Usage", ctx, batchingConfig) |
| p.RequestBatcherIam = transport_tpg.NewRequestBatcher("IAM", ctx, batchingConfig) |
| } |
| |
| // HandleDefaults will handle all the defaults necessary in the provider |
| func (p *FrameworkProviderConfig) HandleDefaults(ctx context.Context, data *fwmodels.ProviderModel, diags *diag.Diagnostics) { |
| if (data.AccessToken.IsNull() || data.AccessToken.IsUnknown()) && (data.Credentials.IsNull() || data.Credentials.IsUnknown()) { |
| credentials := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CREDENTIALS", |
| "GOOGLE_CLOUD_KEYFILE_JSON", |
| "GCLOUD_KEYFILE_JSON", |
| }, nil) |
| |
| if credentials != nil { |
| data.Credentials = types.StringValue(credentials.(string)) |
| } |
| |
| accessToken := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_OAUTH_ACCESS_TOKEN", |
| }, nil) |
| |
| if accessToken != nil { |
| data.AccessToken = types.StringValue(accessToken.(string)) |
| } |
| } |
| |
| if (data.ImpersonateServiceAccount.IsNull() || data.ImpersonateServiceAccount.IsUnknown()) && os.Getenv("GOOGLE_IMPERSONATE_SERVICE_ACCOUNT") != "" { |
| data.ImpersonateServiceAccount = types.StringValue(os.Getenv("GOOGLE_IMPERSONATE_SERVICE_ACCOUNT")) |
| } |
| |
| if data.Project.IsNull() || data.Project.IsUnknown() { |
| project := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_PROJECT", |
| "GOOGLE_CLOUD_PROJECT", |
| "GCLOUD_PROJECT", |
| "CLOUDSDK_CORE_PROJECT", |
| }, nil) |
| if project != nil { |
| data.Project = types.StringValue(project.(string)) |
| } |
| } |
| |
| if data.BillingProject.IsNull() && os.Getenv("GOOGLE_BILLING_PROJECT") != "" { |
| data.BillingProject = types.StringValue(os.Getenv("GOOGLE_BILLING_PROJECT")) |
| } |
| |
| if data.Region.IsNull() || data.Region.IsUnknown() { |
| region := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_REGION", |
| "GCLOUD_REGION", |
| "CLOUDSDK_COMPUTE_REGION", |
| }, nil) |
| |
| if region != nil { |
| data.Region = types.StringValue(region.(string)) |
| } |
| } |
| |
| if data.Zone.IsNull() || data.Zone.IsUnknown() { |
| zone := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ZONE", |
| "GCLOUD_ZONE", |
| "CLOUDSDK_COMPUTE_ZONE", |
| }, nil) |
| |
| if zone != nil { |
| data.Zone = types.StringValue(zone.(string)) |
| } |
| } |
| |
| if len(data.Scopes.Elements()) == 0 { |
| var d diag.Diagnostics |
| data.Scopes, d = types.ListValueFrom(ctx, types.StringType, transport_tpg.DefaultClientScopes) |
| diags.Append(d...) |
| if diags.HasError() { |
| return |
| } |
| } |
| |
| if !data.Batching.IsNull() && !data.Batching.IsUnknown() { |
| var pbConfigs []fwmodels.ProviderBatching |
| d := data.Batching.ElementsAs(ctx, &pbConfigs, true) |
| diags.Append(d...) |
| if diags.HasError() { |
| return |
| } |
| |
| if pbConfigs[0].SendAfter.IsNull() || pbConfigs[0].SendAfter.IsUnknown() { |
| pbConfigs[0].SendAfter = types.StringValue("10s") |
| } |
| |
| if pbConfigs[0].EnableBatching.IsNull() || pbConfigs[0].EnableBatching.IsUnknown() { |
| pbConfigs[0].EnableBatching = types.BoolValue(true) |
| } |
| |
| data.Batching, d = types.ListValueFrom(ctx, types.ObjectType{}.WithAttributeTypes(fwmodels.ProviderBatchingAttributes), pbConfigs) |
| } |
| |
| if (data.UserProjectOverride.IsNull() || data.UserProjectOverride.IsUnknown()) && os.Getenv("USER_PROJECT_OVERRIDE") != "" { |
| override, err := strconv.ParseBool(os.Getenv("USER_PROJECT_OVERRIDE")) |
| if err != nil { |
| diags.AddError( |
| "error parsing environment variable `USER_PROJECT_OVERRIDE` into bool", err.Error()) |
| } |
| data.UserProjectOverride = types.BoolValue(override) |
| } |
| |
| if (data.RequestReason.IsNull() || data.RequestReason.IsUnknown()) && os.Getenv("CLOUDSDK_CORE_REQUEST_REASON") != "" { |
| data.RequestReason = types.StringValue(os.Getenv("CLOUDSDK_CORE_REQUEST_REASON")) |
| } |
| |
| if data.RequestTimeout.IsNull() || data.RequestTimeout.IsUnknown() { |
| data.RequestTimeout = types.StringValue("120s") |
| } |
| |
| // Generated Products |
| if data.AccessApprovalCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ACCESS_APPROVAL_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.AccessApprovalBasePathKey]) |
| if customEndpoint != nil { |
| data.AccessApprovalCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.AccessContextManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ACCESS_CONTEXT_MANAGER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.AccessContextManagerBasePathKey]) |
| if customEndpoint != nil { |
| data.AccessContextManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ActiveDirectoryCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ACTIVE_DIRECTORY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ActiveDirectoryBasePathKey]) |
| if customEndpoint != nil { |
| data.ActiveDirectoryCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.AlloydbCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ALLOYDB_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.AlloydbBasePathKey]) |
| if customEndpoint != nil { |
| data.AlloydbCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ApiGatewayCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_API_GATEWAY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ApiGatewayBasePathKey]) |
| if customEndpoint != nil { |
| data.ApiGatewayCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ApigeeCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_APIGEE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ApigeeBasePathKey]) |
| if customEndpoint != nil { |
| data.ApigeeCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.AppEngineCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_APP_ENGINE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.AppEngineBasePathKey]) |
| if customEndpoint != nil { |
| data.AppEngineCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ArtifactRegistryCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ARTIFACT_REGISTRY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ArtifactRegistryBasePathKey]) |
| if customEndpoint != nil { |
| data.ArtifactRegistryCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BackupDRCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BACKUP_DR_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BackupDRBasePathKey]) |
| if customEndpoint != nil { |
| data.BackupDRCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BeyondcorpCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BEYONDCORP_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BeyondcorpBasePathKey]) |
| if customEndpoint != nil { |
| data.BeyondcorpCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BiglakeCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGLAKE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BiglakeBasePathKey]) |
| if customEndpoint != nil { |
| data.BiglakeCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigQueryCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIG_QUERY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigQueryBasePathKey]) |
| if customEndpoint != nil { |
| data.BigQueryCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigqueryAnalyticsHubCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGQUERY_ANALYTICS_HUB_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigqueryAnalyticsHubBasePathKey]) |
| if customEndpoint != nil { |
| data.BigqueryAnalyticsHubCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigqueryConnectionCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGQUERY_CONNECTION_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigqueryConnectionBasePathKey]) |
| if customEndpoint != nil { |
| data.BigqueryConnectionCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigqueryDatapolicyCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGQUERY_DATAPOLICY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigqueryDatapolicyBasePathKey]) |
| if customEndpoint != nil { |
| data.BigqueryDatapolicyCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigqueryDataTransferCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGQUERY_DATA_TRANSFER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigqueryDataTransferBasePathKey]) |
| if customEndpoint != nil { |
| data.BigqueryDataTransferCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigqueryReservationCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGQUERY_RESERVATION_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigqueryReservationBasePathKey]) |
| if customEndpoint != nil { |
| data.BigqueryReservationCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BigtableCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BIGTABLE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BigtableBasePathKey]) |
| if customEndpoint != nil { |
| data.BigtableCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BillingCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BILLING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BillingBasePathKey]) |
| if customEndpoint != nil { |
| data.BillingCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BinaryAuthorizationCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BINARY_AUTHORIZATION_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BinaryAuthorizationBasePathKey]) |
| if customEndpoint != nil { |
| data.BinaryAuthorizationCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.BlockchainNodeEngineCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_BLOCKCHAIN_NODE_ENGINE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.BlockchainNodeEngineBasePathKey]) |
| if customEndpoint != nil { |
| data.BlockchainNodeEngineCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CertificateManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CERTIFICATE_MANAGER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CertificateManagerBasePathKey]) |
| if customEndpoint != nil { |
| data.CertificateManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudAssetCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_ASSET_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudAssetBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudAssetCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudBuildCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_BUILD_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudBuildBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudBuildCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.Cloudbuildv2CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUDBUILDV2_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.Cloudbuildv2BasePathKey]) |
| if customEndpoint != nil { |
| data.Cloudbuildv2CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ClouddeployCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUDDEPLOY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ClouddeployBasePathKey]) |
| if customEndpoint != nil { |
| data.ClouddeployCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ClouddomainsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUDDOMAINS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ClouddomainsBasePathKey]) |
| if customEndpoint != nil { |
| data.ClouddomainsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudFunctionsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_FUNCTIONS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudFunctionsBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudFunctionsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.Cloudfunctions2CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUDFUNCTIONS2_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.Cloudfunctions2BasePathKey]) |
| if customEndpoint != nil { |
| data.Cloudfunctions2CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudIdentityCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_IDENTITY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudIdentityBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudIdentityCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudIdsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_IDS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudIdsBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudIdsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudRunCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_RUN_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudRunBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudRunCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudRunV2CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_RUN_V2_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudRunV2BasePathKey]) |
| if customEndpoint != nil { |
| data.CloudRunV2CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudSchedulerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_SCHEDULER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudSchedulerBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudSchedulerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CloudTasksCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_TASKS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CloudTasksBasePathKey]) |
| if customEndpoint != nil { |
| data.CloudTasksCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ComputeCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_COMPUTE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ComputeBasePathKey]) |
| if customEndpoint != nil { |
| data.ComputeCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ContainerAnalysisCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CONTAINER_ANALYSIS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ContainerAnalysisBasePathKey]) |
| if customEndpoint != nil { |
| data.ContainerAnalysisCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ContainerAttachedCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CONTAINER_ATTACHED_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ContainerAttachedBasePathKey]) |
| if customEndpoint != nil { |
| data.ContainerAttachedCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.CoreBillingCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CORE_BILLING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.CoreBillingBasePathKey]) |
| if customEndpoint != nil { |
| data.CoreBillingCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DatabaseMigrationServiceCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATABASE_MIGRATION_SERVICE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DatabaseMigrationServiceBasePathKey]) |
| if customEndpoint != nil { |
| data.DatabaseMigrationServiceCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataCatalogCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATA_CATALOG_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataCatalogBasePathKey]) |
| if customEndpoint != nil { |
| data.DataCatalogCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataformCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATAFORM_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataformBasePathKey]) |
| if customEndpoint != nil { |
| data.DataformCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataFusionCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATA_FUSION_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataFusionBasePathKey]) |
| if customEndpoint != nil { |
| data.DataFusionCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataLossPreventionCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATA_LOSS_PREVENTION_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataLossPreventionBasePathKey]) |
| if customEndpoint != nil { |
| data.DataLossPreventionCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataPipelineCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATA_PIPELINE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataPipelineBasePathKey]) |
| if customEndpoint != nil { |
| data.DataPipelineCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataplexCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATAPLEX_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataplexBasePathKey]) |
| if customEndpoint != nil { |
| data.DataplexCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataprocCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATAPROC_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataprocBasePathKey]) |
| if customEndpoint != nil { |
| data.DataprocCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DataprocMetastoreCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATAPROC_METASTORE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataprocMetastoreBasePathKey]) |
| if customEndpoint != nil { |
| data.DataprocMetastoreCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DatastoreCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATASTORE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DatastoreBasePathKey]) |
| if customEndpoint != nil { |
| data.DatastoreCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DatastreamCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATASTREAM_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DatastreamBasePathKey]) |
| if customEndpoint != nil { |
| data.DatastreamCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DeploymentManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DEPLOYMENT_MANAGER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DeploymentManagerBasePathKey]) |
| if customEndpoint != nil { |
| data.DeploymentManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DialogflowCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DIALOGFLOW_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DialogflowBasePathKey]) |
| if customEndpoint != nil { |
| data.DialogflowCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DialogflowCXCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DIALOGFLOW_CX_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DialogflowCXBasePathKey]) |
| if customEndpoint != nil { |
| data.DialogflowCXCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DiscoveryEngineCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DISCOVERY_ENGINE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DiscoveryEngineBasePathKey]) |
| if customEndpoint != nil { |
| data.DiscoveryEngineCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DNSCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DNS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DNSBasePathKey]) |
| if customEndpoint != nil { |
| data.DNSCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DocumentAICustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DOCUMENT_AI_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DocumentAIBasePathKey]) |
| if customEndpoint != nil { |
| data.DocumentAICustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.DocumentAIWarehouseCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DOCUMENT_AI_WAREHOUSE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DocumentAIWarehouseBasePathKey]) |
| if customEndpoint != nil { |
| data.DocumentAIWarehouseCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.EdgecontainerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_EDGECONTAINER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.EdgecontainerBasePathKey]) |
| if customEndpoint != nil { |
| data.EdgecontainerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.EdgenetworkCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_EDGENETWORK_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.EdgenetworkBasePathKey]) |
| if customEndpoint != nil { |
| data.EdgenetworkCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.EssentialContactsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ESSENTIAL_CONTACTS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.EssentialContactsBasePathKey]) |
| if customEndpoint != nil { |
| data.EssentialContactsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FilestoreCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FILESTORE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FilestoreBasePathKey]) |
| if customEndpoint != nil { |
| data.FilestoreCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirebaseCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirebaseBasePathKey]) |
| if customEndpoint != nil { |
| data.FirebaseCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirebaseAppCheckCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASE_APP_CHECK_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirebaseAppCheckBasePathKey]) |
| if customEndpoint != nil { |
| data.FirebaseAppCheckCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirebaseDatabaseCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASE_DATABASE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirebaseDatabaseBasePathKey]) |
| if customEndpoint != nil { |
| data.FirebaseDatabaseCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirebaseExtensionsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASE_EXTENSIONS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirebaseExtensionsBasePathKey]) |
| if customEndpoint != nil { |
| data.FirebaseExtensionsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirebaseHostingCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASE_HOSTING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirebaseHostingBasePathKey]) |
| if customEndpoint != nil { |
| data.FirebaseHostingCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirebaseStorageCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASE_STORAGE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirebaseStorageBasePathKey]) |
| if customEndpoint != nil { |
| data.FirebaseStorageCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.FirestoreCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIRESTORE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.FirestoreBasePathKey]) |
| if customEndpoint != nil { |
| data.FirestoreCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.GKEBackupCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_GKE_BACKUP_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.GKEBackupBasePathKey]) |
| if customEndpoint != nil { |
| data.GKEBackupCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.GKEHubCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_GKE_HUB_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.GKEHubBasePathKey]) |
| if customEndpoint != nil { |
| data.GKEHubCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.GKEHub2CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_GKE_HUB2_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.GKEHub2BasePathKey]) |
| if customEndpoint != nil { |
| data.GKEHub2CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.GkeonpremCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_GKEONPREM_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.GkeonpremBasePathKey]) |
| if customEndpoint != nil { |
| data.GkeonpremCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.HealthcareCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_HEALTHCARE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.HealthcareBasePathKey]) |
| if customEndpoint != nil { |
| data.HealthcareCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.IAM2CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IAM2_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IAM2BasePathKey]) |
| if customEndpoint != nil { |
| data.IAM2CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.IAMBetaCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IAM_BETA_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IAMBetaBasePathKey]) |
| if customEndpoint != nil { |
| data.IAMBetaCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.IAMWorkforcePoolCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IAM_WORKFORCE_POOL_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IAMWorkforcePoolBasePathKey]) |
| if customEndpoint != nil { |
| data.IAMWorkforcePoolCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.IapCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IAP_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IapBasePathKey]) |
| if customEndpoint != nil { |
| data.IapCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.IdentityPlatformCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IDENTITY_PLATFORM_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IdentityPlatformBasePathKey]) |
| if customEndpoint != nil { |
| data.IdentityPlatformCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.IntegrationConnectorsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_INTEGRATION_CONNECTORS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IntegrationConnectorsBasePathKey]) |
| if customEndpoint != nil { |
| data.IntegrationConnectorsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.KMSCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_KMS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.KMSBasePathKey]) |
| if customEndpoint != nil { |
| data.KMSCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.LoggingCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_LOGGING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.LoggingBasePathKey]) |
| if customEndpoint != nil { |
| data.LoggingCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.LookerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_LOOKER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.LookerBasePathKey]) |
| if customEndpoint != nil { |
| data.LookerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.MemcacheCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_MEMCACHE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.MemcacheBasePathKey]) |
| if customEndpoint != nil { |
| data.MemcacheCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.MigrationCenterCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_MIGRATION_CENTER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.MigrationCenterBasePathKey]) |
| if customEndpoint != nil { |
| data.MigrationCenterCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.MLEngineCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ML_ENGINE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.MLEngineBasePathKey]) |
| if customEndpoint != nil { |
| data.MLEngineCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.MonitoringCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_MONITORING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.MonitoringBasePathKey]) |
| if customEndpoint != nil { |
| data.MonitoringCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.NetappCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NETAPP_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.NetappBasePathKey]) |
| if customEndpoint != nil { |
| data.NetappCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.NetworkConnectivityCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NETWORK_CONNECTIVITY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.NetworkConnectivityBasePathKey]) |
| if customEndpoint != nil { |
| data.NetworkConnectivityCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.NetworkManagementCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NETWORK_MANAGEMENT_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.NetworkManagementBasePathKey]) |
| if customEndpoint != nil { |
| data.NetworkManagementCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.NetworkSecurityCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NETWORK_SECURITY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.NetworkSecurityBasePathKey]) |
| if customEndpoint != nil { |
| data.NetworkSecurityCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.NetworkServicesCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NETWORK_SERVICES_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.NetworkServicesBasePathKey]) |
| if customEndpoint != nil { |
| data.NetworkServicesCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.NotebooksCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NOTEBOOKS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.NotebooksBasePathKey]) |
| if customEndpoint != nil { |
| data.NotebooksCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.OrgPolicyCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ORG_POLICY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.OrgPolicyBasePathKey]) |
| if customEndpoint != nil { |
| data.OrgPolicyCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.OSConfigCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_OS_CONFIG_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.OSConfigBasePathKey]) |
| if customEndpoint != nil { |
| data.OSConfigCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.OSLoginCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_OS_LOGIN_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.OSLoginBasePathKey]) |
| if customEndpoint != nil { |
| data.OSLoginCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.PrivatecaCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_PRIVATECA_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.PrivatecaBasePathKey]) |
| if customEndpoint != nil { |
| data.PrivatecaCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.PublicCACustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_PUBLIC_CA_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.PublicCABasePathKey]) |
| if customEndpoint != nil { |
| data.PublicCACustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.PubsubCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_PUBSUB_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.PubsubBasePathKey]) |
| if customEndpoint != nil { |
| data.PubsubCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.PubsubLiteCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_PUBSUB_LITE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.PubsubLiteBasePathKey]) |
| if customEndpoint != nil { |
| data.PubsubLiteCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.RedisCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_REDIS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.RedisBasePathKey]) |
| if customEndpoint != nil { |
| data.RedisCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ResourceManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_RESOURCE_MANAGER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ResourceManagerBasePathKey]) |
| if customEndpoint != nil { |
| data.ResourceManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.RuntimeConfigCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_RUNTIME_CONFIG_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.RuntimeConfigBasePathKey]) |
| if customEndpoint != nil { |
| data.RuntimeConfigCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SecretManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SECRET_MANAGER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SecretManagerBasePathKey]) |
| if customEndpoint != nil { |
| data.SecretManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SecureSourceManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SECURE_SOURCE_MANAGER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SecureSourceManagerBasePathKey]) |
| if customEndpoint != nil { |
| data.SecureSourceManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SecurityCenterCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SECURITY_CENTER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SecurityCenterBasePathKey]) |
| if customEndpoint != nil { |
| data.SecurityCenterCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SecuritypostureCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SECURITYPOSTURE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SecuritypostureBasePathKey]) |
| if customEndpoint != nil { |
| data.SecuritypostureCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SecurityScannerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SECURITY_SCANNER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SecurityScannerBasePathKey]) |
| if customEndpoint != nil { |
| data.SecurityScannerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ServiceDirectoryCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SERVICE_DIRECTORY_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ServiceDirectoryBasePathKey]) |
| if customEndpoint != nil { |
| data.ServiceDirectoryCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ServiceManagementCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SERVICE_MANAGEMENT_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ServiceManagementBasePathKey]) |
| if customEndpoint != nil { |
| data.ServiceManagementCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.ServiceUsageCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SERVICE_USAGE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ServiceUsageBasePathKey]) |
| if customEndpoint != nil { |
| data.ServiceUsageCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SourceRepoCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SOURCE_REPO_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SourceRepoBasePathKey]) |
| if customEndpoint != nil { |
| data.SourceRepoCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SpannerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SPANNER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SpannerBasePathKey]) |
| if customEndpoint != nil { |
| data.SpannerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.SQLCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SQL_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.SQLBasePathKey]) |
| if customEndpoint != nil { |
| data.SQLCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.StorageCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_STORAGE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.StorageBasePathKey]) |
| if customEndpoint != nil { |
| data.StorageCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.StorageInsightsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_STORAGE_INSIGHTS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.StorageInsightsBasePathKey]) |
| if customEndpoint != nil { |
| data.StorageInsightsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.StorageTransferCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_STORAGE_TRANSFER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.StorageTransferBasePathKey]) |
| if customEndpoint != nil { |
| data.StorageTransferCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.TagsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_TAGS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.TagsBasePathKey]) |
| if customEndpoint != nil { |
| data.TagsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.TPUCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_TPU_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.TPUBasePathKey]) |
| if customEndpoint != nil { |
| data.TPUCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.TpuV2CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_TPU_V2_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.TpuV2BasePathKey]) |
| if customEndpoint != nil { |
| data.TpuV2CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.VertexAICustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_VERTEX_AI_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.VertexAIBasePathKey]) |
| if customEndpoint != nil { |
| data.VertexAICustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.VmwareengineCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_VMWAREENGINE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.VmwareengineBasePathKey]) |
| if customEndpoint != nil { |
| data.VmwareengineCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.VPCAccessCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_VPC_ACCESS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.VPCAccessBasePathKey]) |
| if customEndpoint != nil { |
| data.VPCAccessCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.WorkbenchCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_WORKBENCH_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.WorkbenchBasePathKey]) |
| if customEndpoint != nil { |
| data.WorkbenchCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.WorkflowsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_WORKFLOWS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.WorkflowsBasePathKey]) |
| if customEndpoint != nil { |
| data.WorkflowsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| if data.WorkstationsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_WORKSTATIONS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.WorkstationsBasePathKey]) |
| if customEndpoint != nil { |
| data.WorkstationsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| // Handwritten Products / Versioned / Atypical Entries |
| if data.CloudBillingCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_BILLING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths["cloud_billing_custom_endpoint"]) |
| if customEndpoint != nil { |
| data.CloudBillingCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.ComposerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_COMPOSER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ComposerBasePathKey]) |
| if customEndpoint != nil { |
| data.ComposerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.ContainerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CONTAINER_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ContainerBasePathKey]) |
| if customEndpoint != nil { |
| data.ContainerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.DataflowCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATAFLOW_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.DataflowBasePathKey]) |
| if customEndpoint != nil { |
| data.DataflowCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.IamCredentialsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IAM_CREDENTIALS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IamCredentialsBasePathKey]) |
| if customEndpoint != nil { |
| data.IamCredentialsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.ResourceManagerV3CustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_RESOURCE_MANAGER_V3_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ResourceManagerV3BasePathKey]) |
| if customEndpoint != nil { |
| data.ResourceManagerV3CustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.RuntimeConfigCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_RUNTIMECONFIG_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.RuntimeConfigBasePathKey]) |
| if customEndpoint != nil { |
| data.RuntimeConfigCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.IAMCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_IAM_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.IAMBasePathKey]) |
| if customEndpoint != nil { |
| data.IAMCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.ServiceNetworkingCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_SERVICE_NETWORKING_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ServiceNetworkingBasePathKey]) |
| if customEndpoint != nil { |
| data.ServiceNetworkingCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.TagsLocationCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_TAGS_LOCATION_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.TagsLocationBasePathKey]) |
| if customEndpoint != nil { |
| data.TagsLocationCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| // dcl |
| if data.ContainerAwsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CONTAINERAWS_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ContainerAwsBasePathKey]) |
| if customEndpoint != nil { |
| data.ContainerAwsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.ContainerAzureCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CONTAINERAZURE_CUSTOM_ENDPOINT", |
| }, transport_tpg.DefaultBasePaths[transport_tpg.ContainerAzureBasePathKey]) |
| if customEndpoint != nil { |
| data.ContainerAzureCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| // DCL generated defaults |
| if data.ApikeysCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_APIKEYS_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.ApikeysCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.AssuredWorkloadsCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_ASSURED_WORKLOADS_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.AssuredWorkloadsCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.CloudBuildWorkerPoolCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_BUILD_WORKER_POOL_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.CloudBuildWorkerPoolCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.CloudResourceManagerCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_CLOUD_RESOURCE_MANAGER_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.CloudResourceManagerCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.DataplexCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_DATAPLEX_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.DataplexCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.EventarcCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_EVENTARC_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.EventarcCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.FirebaserulesCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_FIREBASERULES_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.FirebaserulesCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.NetworkConnectivityCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_NETWORK_CONNECTIVITY_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.NetworkConnectivityCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| |
| if data.RecaptchaEnterpriseCustomEndpoint.IsNull() { |
| customEndpoint := transport_tpg.MultiEnvDefault([]string{ |
| "GOOGLE_RECAPTCHA_ENTERPRISE_CUSTOM_ENDPOINT", |
| }, "") |
| if customEndpoint != nil { |
| data.RecaptchaEnterpriseCustomEndpoint = types.StringValue(customEndpoint.(string)) |
| } |
| } |
| } |
| |
| func (p *FrameworkProviderConfig) SetupClient(ctx context.Context, data fwmodels.ProviderModel, diags *diag.Diagnostics) { |
| tokenSource := GetTokenSource(ctx, data, false, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| cleanCtx := context.WithValue(ctx, oauth2.HTTPClient, cleanhttp.DefaultClient()) |
| |
| // 1. MTLS TRANSPORT/CLIENT - sets up proper auth headers |
| client, _, err := transport.NewHTTPClient(cleanCtx, option.WithTokenSource(tokenSource)) |
| if err != nil { |
| diags.AddError("error creating new http client", err.Error()) |
| return |
| } |
| |
| // Userinfo is fetched before request logging is enabled to reduce additional noise. |
| p.logGoogleIdentities(ctx, data, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| // 2. Logging Transport - ensure we log HTTP requests to GCP APIs. |
| loggingTransport := logging.NewTransport("Google", client.Transport) |
| |
| // 3. Retry Transport - retries common temporary errors |
| // Keep order for wrapping logging so we log each retried request as well. |
| // This value should be used if needed to create shallow copies with additional retry predicates. |
| // See ClientWithAdditionalRetries |
| retryTransport := transport_tpg.NewTransportWithDefaultRetries(loggingTransport) |
| |
| // 4. Header Transport - outer wrapper to inject additional headers we want to apply |
| // before making requests |
| headerTransport := transport_tpg.NewTransportWithHeaders(retryTransport) |
| if !data.RequestReason.IsNull() { |
| headerTransport.Set("X-Goog-Request-Reason", data.RequestReason.ValueString()) |
| } |
| |
| // Ensure $userProject is set for all HTTP requests using the client if specified by the provider config |
| // See https://cloud.google.com/apis/docs/system-parameters |
| if data.UserProjectOverride.ValueBool() && !data.BillingProject.IsNull() { |
| headerTransport.Set("X-Goog-User-Project", data.BillingProject.ValueString()) |
| } |
| |
| // Set final transport value. |
| client.Transport = headerTransport |
| |
| // This timeout is a timeout per HTTP request, not per logical operation. |
| timeout, err := time.ParseDuration(data.RequestTimeout.ValueString()) |
| if err != nil { |
| diags.AddError("error parsing request timeout", err.Error()) |
| } |
| client.Timeout = timeout |
| |
| p.TokenSource = tokenSource |
| p.Client = client |
| } |
| |
| func (p *FrameworkProviderConfig) SetupGrpcLogging() { |
| logger := logrus.StandardLogger() |
| |
| logrus.SetLevel(logrus.DebugLevel) |
| logrus.SetFormatter(&transport_tpg.Formatter{ |
| TimestampFormat: "2006/01/02 15:04:05", |
| LogFormat: "%time% [%lvl%] %msg% \n", |
| }) |
| |
| alwaysLoggingDeciderClient := func(ctx context.Context, fullMethodName string) bool { return true } |
| grpc_logrus.ReplaceGrpcLogger(logrus.NewEntry(logger)) |
| |
| p.gRPCLoggingOptions = append( |
| p.gRPCLoggingOptions, option.WithGRPCDialOption(grpc.WithUnaryInterceptor( |
| grpc_logrus.PayloadUnaryClientInterceptor(logrus.NewEntry(logger), alwaysLoggingDeciderClient))), |
| option.WithGRPCDialOption(grpc.WithStreamInterceptor( |
| grpc_logrus.PayloadStreamClientInterceptor(logrus.NewEntry(logger), alwaysLoggingDeciderClient))), |
| ) |
| } |
| |
| func (p *FrameworkProviderConfig) logGoogleIdentities(ctx context.Context, data fwmodels.ProviderModel, diags *diag.Diagnostics) { |
| // GetCurrentUserEmailFramework doesn't pass an error back from logGoogleIdentities, so we want |
| // a separate diagnostics here |
| var d diag.Diagnostics |
| |
| if data.ImpersonateServiceAccount.IsNull() || data.ImpersonateServiceAccount.IsUnknown() { |
| |
| tokenSource := GetTokenSource(ctx, data, true, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| p.Client = oauth2.NewClient(ctx, tokenSource) // p.Client isn't initialised fully when this code is called. |
| |
| email := GetCurrentUserEmailFramework(p, p.UserAgent, &d) |
| if d.HasError() { |
| tflog.Info(ctx, "error retrieving userinfo for your provider credentials. have you enabled the 'https://www.googleapis.com/auth/userinfo.email' scope?") |
| } |
| |
| tflog.Info(ctx, fmt.Sprintf("Terraform is using this identity: %s", email)) |
| return |
| } |
| |
| // Drop Impersonated ClientOption from OAuth2 TokenSource to infer original identity |
| tokenSource := GetTokenSource(ctx, data, true, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| p.Client = oauth2.NewClient(ctx, tokenSource) // p.Client isn't initialised fully when this code is called. |
| email := GetCurrentUserEmailFramework(p, p.UserAgent, &d) |
| if d.HasError() { |
| tflog.Info(ctx, "error retrieving userinfo for your provider credentials. have you enabled the 'https://www.googleapis.com/auth/userinfo.email' scope?") |
| } |
| |
| tflog.Info(ctx, fmt.Sprintf("Terraform is configured with service account impersonation, original identity: %s, impersonated identity: %s", email, data.ImpersonateServiceAccount.ValueString())) |
| |
| // Add the Impersonated ClientOption back in to the OAuth2 TokenSource |
| tokenSource = GetTokenSource(ctx, data, false, diags) |
| if diags.HasError() { |
| return |
| } |
| |
| p.Client = oauth2.NewClient(ctx, tokenSource) // p.Client isn't initialised fully when this code is called. |
| |
| return |
| } |
| |
| // Configuration helpers |
| |
| // GetTokenSource gets token source based on the Google Credentials configured. |
| // If initialCredentialsOnly is true, don't follow the impersonation settings and return the initial set of creds. |
| func GetTokenSource(ctx context.Context, data fwmodels.ProviderModel, initialCredentialsOnly bool, diags *diag.Diagnostics) oauth2.TokenSource { |
| creds := GetCredentials(ctx, data, initialCredentialsOnly, diags) |
| |
| return creds.TokenSource |
| } |
| |
| // GetCredentials gets credentials with a given scope (clientScopes). |
| // If initialCredentialsOnly is true, don't follow the impersonation |
| // settings and return the initial set of creds instead. |
| func GetCredentials(ctx context.Context, data fwmodels.ProviderModel, initialCredentialsOnly bool, diags *diag.Diagnostics) googleoauth.Credentials { |
| var clientScopes []string |
| var delegates []string |
| |
| if !data.Scopes.IsNull() && !data.Scopes.IsUnknown() { |
| d := data.Scopes.ElementsAs(ctx, &clientScopes, false) |
| diags.Append(d...) |
| if diags.HasError() { |
| return googleoauth.Credentials{} |
| } |
| } |
| |
| if !data.ImpersonateServiceAccountDelegates.IsNull() && !data.ImpersonateServiceAccountDelegates.IsUnknown() { |
| d := data.ImpersonateServiceAccountDelegates.ElementsAs(ctx, &delegates, false) |
| diags.Append(d...) |
| if diags.HasError() { |
| return googleoauth.Credentials{} |
| } |
| } |
| |
| if !data.AccessToken.IsNull() && !data.AccessToken.IsUnknown() { |
| contents, _, err := verify.PathOrContents(data.AccessToken.ValueString()) |
| if err != nil { |
| diags.AddError("error loading access token", err.Error()) |
| return googleoauth.Credentials{} |
| } |
| |
| token := &oauth2.Token{AccessToken: contents} |
| if !data.ImpersonateServiceAccount.IsNull() && !initialCredentialsOnly { |
| opts := []option.ClientOption{option.WithTokenSource(oauth2.StaticTokenSource(token)), option.ImpersonateCredentials(data.ImpersonateServiceAccount.ValueString(), delegates...), option.WithScopes(clientScopes...)} |
| creds, err := transport.Creds(context.TODO(), opts...) |
| if err != nil { |
| diags.AddError("error impersonating credentials", err.Error()) |
| return googleoauth.Credentials{} |
| } |
| return *creds |
| } |
| |
| tflog.Info(ctx, "Authenticating using configured Google JSON 'access_token'...") |
| tflog.Info(ctx, fmt.Sprintf(" -- Scopes: %s", clientScopes)) |
| return googleoauth.Credentials{ |
| TokenSource: transport_tpg.StaticTokenSource{oauth2.StaticTokenSource(token)}, |
| } |
| } |
| |
| if !data.Credentials.IsNull() && !data.Credentials.IsUnknown() { |
| contents, _, err := verify.PathOrContents(data.Credentials.ValueString()) |
| if err != nil { |
| diags.AddError(fmt.Sprintf("error loading credentials: %s", err), err.Error()) |
| return googleoauth.Credentials{} |
| } |
| |
| if !data.ImpersonateServiceAccount.IsNull() && !initialCredentialsOnly { |
| opts := []option.ClientOption{option.WithCredentialsJSON([]byte(contents)), option.ImpersonateCredentials(data.ImpersonateServiceAccount.ValueString(), delegates...), option.WithScopes(clientScopes...)} |
| creds, err := transport.Creds(context.TODO(), opts...) |
| if err != nil { |
| diags.AddError("error impersonating credentials", err.Error()) |
| return googleoauth.Credentials{} |
| } |
| return *creds |
| } |
| |
| creds, err := transport.Creds(ctx, option.WithCredentialsJSON([]byte(contents)), option.WithScopes(clientScopes...)) |
| if err != nil { |
| diags.AddError("unable to parse credentials", err.Error()) |
| return googleoauth.Credentials{} |
| } |
| |
| tflog.Info(ctx, "Authenticating using configured Google JSON 'credentials'...") |
| tflog.Info(ctx, fmt.Sprintf(" -- Scopes: %s", clientScopes)) |
| return *creds |
| } |
| |
| if !data.ImpersonateServiceAccount.IsNull() && !initialCredentialsOnly { |
| opts := option.ImpersonateCredentials(data.ImpersonateServiceAccount.ValueString(), delegates...) |
| creds, err := transport.Creds(context.TODO(), opts, option.WithScopes(clientScopes...)) |
| if err != nil { |
| diags.AddError("error impersonating credentials", err.Error()) |
| return googleoauth.Credentials{} |
| } |
| |
| return *creds |
| } |
| |
| tflog.Info(ctx, "Authenticating using DefaultClient...") |
| tflog.Info(ctx, fmt.Sprintf(" -- Scopes: %s", clientScopes)) |
| creds, err := transport.Creds(context.Background(), option.WithScopes(clientScopes...)) |
| if err != nil { |
| diags.AddError(fmt.Sprintf("Attempted to load application default credentials since neither `credentials` nor `access_token` was set in the provider block. "+ |
| "No credentials loaded. To use your gcloud credentials, run 'gcloud auth application-default login'"), err.Error()) |
| return googleoauth.Credentials{} |
| } |
| |
| return *creds |
| } |
| |
| // GetBatchingConfig returns the batching config object given the |
| // provider configuration set for batching |
| func GetBatchingConfig(ctx context.Context, data types.List, diags *diag.Diagnostics) *transport_tpg.BatchingConfig { |
| bc := &transport_tpg.BatchingConfig{ |
| SendAfter: time.Second * transport_tpg.DefaultBatchSendIntervalSec, |
| EnableBatching: true, |
| } |
| |
| // Handle if entire batching block is null/unknown |
| if data.IsNull() || data.IsUnknown() { |
| return bc |
| } |
| |
| var pbConfigs []fwmodels.ProviderBatching |
| d := data.ElementsAs(ctx, &pbConfigs, true) |
| diags.Append(d...) |
| if diags.HasError() { |
| return bc |
| } |
| |
| sendAfter, err := time.ParseDuration(pbConfigs[0].SendAfter.ValueString()) |
| if err != nil { |
| diags.AddError("error parsing send after time duration", err.Error()) |
| return bc |
| } |
| |
| bc.SendAfter = sendAfter |
| |
| if !pbConfigs[0].EnableBatching.IsNull() { |
| bc.EnableBatching = pbConfigs[0].EnableBatching.ValueBool() |
| } |
| |
| return bc |
| } |
| |
| func GetRegionFromRegionSelfLink(selfLink basetypes.StringValue) basetypes.StringValue { |
| re := regexp.MustCompile("/compute/[a-zA-Z0-9]*/projects/[a-zA-Z0-9-]*/regions/([a-zA-Z0-9-]*)") |
| value := selfLink.String() |
| switch { |
| case re.MatchString(value): |
| if res := re.FindStringSubmatch(value); len(res) == 2 && res[1] != "" { |
| region := res[1] |
| return types.StringValue(region) |
| } |
| } |
| return selfLink |
| } |