From 9928b68cd7b27e7dc442cb970dee161e4435f3c7 Mon Sep 17 00:00:00 2001 From: Ramon Quitales Date: Wed, 23 Aug 2023 21:35:47 -0700 Subject: [PATCH] Upgrade terraform-provider-google-beta to v4.79.0 (#1164) * make tfgen * make tfgen * Remove changelog related patches * Rename patches to be sequential --- ...01-Allow-disabling-the-partner-name.patch} | 12 +- .../0001-Release-4.75.0-changelog-5925.patch | 43 - patches/0002-Add-changelog-4.75.1.patch | 25 - ...or-sql-database-instance-flattening.patch} | 8 +- ...query-dataset-selflink-if-available.patch} | 6 +- patches/0003-Update-CHANGELOG-5801.patch | 41 - ...tening-of-self-managed-certificates.patch} | 12 +- ...urity-policy-default-versioned_expr.patch} | 8 +- ...patch => 0006-website-docs-d-tweaks.patch} | 6 +- ...ch => 0007-Significant-docs-changes.patch} | 137 +- ...scripts-dir-from-provider-go-module.patch} | 6 +- ...9-Remove-duplicative-resource-token.patch} | 10 +- .../pulumi-resource-gcp/bridge-metadata.json | 166 +- provider/cmd/pulumi-resource-gcp/schema.json | 813 ++++++- provider/resources.go | 2 + sdk/dotnet/ApiGateway/ApiConfig.cs | 2 +- sdk/dotnet/ApiGateway/Gateway.cs | 2 +- .../AppEngine/ApplicationUrlDispatchRules.cs | 2 +- sdk/dotnet/AppEngine/EngineSplitTraffic.cs | 2 +- sdk/dotnet/AppEngine/FlexibleAppVersion.cs | 2 +- .../AppEngine/ServiceNetworkSettings.cs | 2 +- sdk/dotnet/AppEngine/StandardAppVersion.cs | 2 +- .../ManagementServerManagementUriArgs.cs | 34 + .../ManagementServerManagementUriGetArgs.cs | 34 + .../Inputs/ManagementServerNetworkArgs.cs | 36 + .../Inputs/ManagementServerNetworkGetArgs.cs | 36 + .../ManagementServer.cs | 303 +++ .../Outputs/ManagementServerManagementUri.cs | 37 + .../Outputs/ManagementServerNetwork.cs | 39 + sdk/dotnet/BackupDisasterRecovery/README.md | 1 + sdk/dotnet/BigQuery/Job.cs | 2 +- sdk/dotnet/CertificateManager/Certificate.cs | 15 +- .../CertificateIssuanceConfig.cs | 2 +- .../Inputs/TriggerGitFileSourceArgs.cs | 7 + .../Inputs/TriggerGitFileSourceGetArgs.cs | 7 + .../Inputs/TriggerSourceToBuildArgs.cs | 7 + .../Inputs/TriggerSourceToBuildGetArgs.cs | 7 + .../Outputs/GetTriggerGitFileSourceResult.cs | 4 + .../Outputs/GetTriggerSourceToBuildResult.cs | 4 + .../Outputs/TriggerGitFileSource.cs | 8 + .../Outputs/TriggerSourceToBuild.cs | 8 + sdk/dotnet/CloudBuild/Trigger.cs | 31 + sdk/dotnet/CloudRunV2/Job.cs | 76 + sdk/dotnet/CloudRunV2/Service.cs | 72 + ...nmentConfigPrivateEnvironmentConfigArgs.cs | 3 + ...ntConfigPrivateEnvironmentConfigGetArgs.cs | 3 + ...vironmentConfigPrivateEnvironmentConfig.cs | 4 + ...entConfigPrivateEnvironmentConfigResult.cs | 4 + .../Inputs/InstanceTemplateDiskArgs.cs | 3 + .../Inputs/InstanceTemplateDiskGetArgs.cs | 3 + .../Inputs/RegionInstanceTemplateDiskArgs.cs | 3 + .../RegionInstanceTemplateDiskGetArgs.cs | 3 + .../RegionSecurityPolicyRuleMatchArgs.cs | 36 + ...RegionSecurityPolicyRuleMatchConfigArgs.cs | 32 + ...ionSecurityPolicyRuleMatchConfigGetArgs.cs | 32 + .../RegionSecurityPolicyRuleMatchGetArgs.cs | 36 + ...egionSecurityPolicyRuleNetworkMatchArgs.cs | 117 + ...onSecurityPolicyRuleNetworkMatchGetArgs.cs | 117 + ...icyRuleNetworkMatchUserDefinedFieldArgs.cs | 38 + ...RuleNetworkMatchUserDefinedFieldGetArgs.cs | 38 + ...egionSecurityPolicyUserDefinedFieldArgs.cs | 57 + ...onSecurityPolicyUserDefinedFieldGetArgs.cs | 57 + ...SecurityPolicyAdvancedOptionsConfigArgs.cs | 12 + ...urityPolicyAdvancedOptionsConfigGetArgs.cs | 12 + .../Compute/NetworkEdgeSecurityService.cs | 2 +- .../Outputs/GetInstanceTemplateDiskResult.cs | 4 + .../GetRegionInstanceTemplateDiskResult.cs | 4 + .../Compute/Outputs/InstanceTemplateDisk.cs | 4 + .../Outputs/RegionInstanceTemplateDisk.cs | 4 + .../Outputs/RegionSecurityPolicyRuleMatch.cs | 39 + .../RegionSecurityPolicyRuleMatchConfig.cs | 27 + .../RegionSecurityPolicyRuleNetworkMatch.cs | 78 + ...yPolicyRuleNetworkMatchUserDefinedField.cs | 35 + .../RegionSecurityPolicyUserDefinedField.cs | 63 + .../SecurityPolicyAdvancedOptionsConfig.cs | 9 +- .../Compute/RegionNetworkEndpointGroup.cs | 2 +- sdk/dotnet/Compute/RegionSecurityPolicy.cs | 79 + .../Compute/RegionSecurityPolicyRule.cs | 533 +++++ sdk/dotnet/Compute/Subnetwork.cs | 56 +- sdk/dotnet/Config/Config.cs | 7 + sdk/dotnet/Container/AwsCluster.cs | 238 ++ sdk/dotnet/Container/AwsNodePool.cs | 367 +++ .../DataLoss/PreventionStoredInfoType.cs | 2 +- .../ConnectionProfile.cs | 1 + .../ConnectionProfileCloudsqlSettingsArgs.cs | 7 + ...onnectionProfileCloudsqlSettingsGetArgs.cs | 7 + .../ConnectionProfileCloudsqlSettings.cs | 8 + .../MetastoreServiceScalingConfigArgs.cs | 33 + .../MetastoreServiceScalingConfigGetArgs.cs | 33 + sdk/dotnet/Dataproc/MetastoreService.cs | 75 + .../Outputs/MetastoreServiceScalingConfig.cs | 36 + .../ManagedZonePrivateVisibilityConfigArgs.cs | 2 +- ...nagedZonePrivateVisibilityConfigGetArgs.cs | 2 +- ...hCheckedTargetsInternalLoadBalancerArgs.cs | 2 +- ...eckedTargetsInternalLoadBalancerGetArgs.cs | 2 +- ...hCheckedTargetsInternalLoadBalancerArgs.cs | 2 +- ...eckedTargetsInternalLoadBalancerGetArgs.cs | 2 +- ...ryBackupPrimaryInternalLoadBalancerArgs.cs | 2 +- ...ackupPrimaryInternalLoadBalancerGetArgs.cs | 2 +- ...hCheckedTargetsInternalLoadBalancerArgs.cs | 2 +- ...eckedTargetsInternalLoadBalancerGetArgs.cs | 2 +- sdk/dotnet/Dns/ManagedZone.cs | 13 +- ...ealthCheckedTargetsInternalLoadBalancer.cs | 2 +- ...ealthCheckedTargetsInternalLoadBalancer.cs | 2 +- ...rimaryBackupPrimaryInternalLoadBalancer.cs | 2 +- ...ealthCheckedTargetsInternalLoadBalancer.cs | 2 +- ...lusterControlPlaneNodeVsphereConfigArgs.cs | 11 +- ...terControlPlaneNodeVsphereConfigGetArgs.cs | 11 +- .../Inputs/VMwareClusterVcenterArgs.cs | 11 +- .../Inputs/VMwareClusterVcenterGetArgs.cs | 11 +- ...areClusterControlPlaneNodeVsphereConfig.cs | 13 +- .../GkeOnPrem/Outputs/VMwareClusterVcenter.cs | 14 +- sdk/dotnet/Healthcare/FhirStore.cs | 25 + sdk/dotnet/Monitoring/GetAppEngineService.cs | 4 +- sdk/dotnet/NetworkServices/Gateway.cs | 8 +- sdk/dotnet/Provider.cs | 6 + sdk/dotnet/SecretManager/GetSecret.cs | 6 +- sdk/dotnet/SecretManager/Secret.cs | 48 + sdk/go/gcp/apigateway/apiConfig.go | 2 +- sdk/go/gcp/apigateway/gateway.go | 2 +- .../appengine/applicationUrlDispatchRules.go | 2 +- sdk/go/gcp/appengine/flexibleAppVersion.go | 2 +- .../gcp/appengine/serviceNetworkSettings.go | 2 +- sdk/go/gcp/appengine/standardAppVersion.go | 2 +- sdk/go/gcp/backupdisasterrecovery/init.go | 44 + .../managementServer.go | 413 ++++ .../gcp/backupdisasterrecovery/pulumiTypes.go | 255 +++ sdk/go/gcp/bigquery/job.go | 2 +- sdk/go/gcp/certificatemanager/certificate.go | 24 +- .../certificateIssuanceConfig.go | 2 +- sdk/go/gcp/cloudbuild/pulumiTypes.go | 58 + sdk/go/gcp/cloudbuild/trigger.go | 37 + sdk/go/gcp/cloudrunv2/job.go | 74 + sdk/go/gcp/cloudrunv2/service.go | 66 + sdk/go/gcp/composer/pulumiTypes.go | 21 + sdk/go/gcp/compute/init.go | 7 + .../gcp/compute/networkEdgeSecurityService.go | 2 +- sdk/go/gcp/compute/pulumiTypes.go | 1986 ++++++++--------- sdk/go/gcp/compute/pulumiTypes1.go | 1102 ++++++++- .../gcp/compute/regionNetworkEndpointGroup.go | 2 +- sdk/go/gcp/compute/regionSecurityPolicy.go | 77 + .../gcp/compute/regionSecurityPolicyRule.go | 689 ++++++ sdk/go/gcp/compute/subnetwork.go | 110 +- sdk/go/gcp/config/config.go | 3 + sdk/go/gcp/container/awsCluster.go | 211 ++ sdk/go/gcp/container/awsNodePool.go | 316 +++ .../connectionProfile.go | 1 + .../databasemigrationservice/pulumiTypes.go | 23 + .../gcp/dataloss/preventionStoredInfoType.go | 2 +- sdk/go/gcp/dataproc/metastoreService.go | 87 + sdk/go/gcp/dataproc/pulumiTypes.go | 164 ++ sdk/go/gcp/dns/managedZone.go | 17 +- sdk/go/gcp/dns/pulumiTypes.go | 24 +- sdk/go/gcp/gkeonprem/pulumiTypes.go | 44 +- sdk/go/gcp/healthcare/fhirStore.go | 28 + sdk/go/gcp/monitoring/getAppEngineService.go | 2 +- sdk/go/gcp/networkservices/gateway.go | 8 +- sdk/go/gcp/provider.go | 7 + sdk/go/gcp/secretmanager/getSecret.go | 23 +- sdk/go/gcp/secretmanager/secret.go | 51 + .../src/main/java/com/pulumi/gcp/Config.java | 3 + .../main/java/com/pulumi/gcp/Provider.java | 6 + .../java/com/pulumi/gcp/ProviderArgs.java | 17 + .../com/pulumi/gcp/apigateway/ApiConfig.java | 2 +- .../com/pulumi/gcp/apigateway/Gateway.java | 2 +- .../ApplicationUrlDispatchRules.java | 2 +- .../gcp/appengine/FlexibleAppVersion.java | 2 +- .../gcp/appengine/ServiceNetworkSettings.java | 2 +- .../gcp/appengine/StandardAppVersion.java | 2 +- .../ManagementServer.java | 265 +++ .../ManagementServerArgs.java | 262 +++ .../ManagementServerManagementUriArgs.java | 128 ++ .../inputs/ManagementServerNetworkArgs.java | 137 ++ .../inputs/ManagementServerState.java | 350 +++ .../ManagementServerManagementUri.java | 80 + .../outputs/ManagementServerNetwork.java | 84 + .../java/com/pulumi/gcp/bigquery/Job.java | 2 +- .../gcp/certificatemanager/Certificate.java | 12 +- .../certificatemanager/CertificateArgs.java | 12 +- .../CertificateIssuanceConfig.java | 2 +- .../inputs/CertificateState.java | 12 +- .../com/pulumi/gcp/cloudbuild/Trigger.java | 43 + .../inputs/TriggerGitFileSourceArgs.java | 41 + .../inputs/TriggerSourceToBuildArgs.java | 41 + .../outputs/GetTriggerGitFileSource.java | 12 + .../outputs/GetTriggerSourceToBuild.java | 12 + .../outputs/TriggerGitFileSource.java | 22 + .../outputs/TriggerSourceToBuild.java | 22 + .../java/com/pulumi/gcp/cloudrunv2/Job.java | 88 + .../com/pulumi/gcp/cloudrunv2/Service.java | 84 + .../gcp/cloudrunv2/inputs/JobState.java | 230 ++ .../gcp/cloudrunv2/inputs/ServiceState.java | 222 ++ ...entConfigPrivateEnvironmentConfigArgs.java | 17 + ...ronmentConfigPrivateEnvironmentConfig.java | 12 + ...ronmentConfigPrivateEnvironmentConfig.java | 12 + .../pulumi/gcp/compute/ForwardingRule.java | 4 +- .../compute/NetworkEdgeSecurityService.java | 2 +- .../compute/RegionNetworkEndpointGroup.java | 2 +- .../gcp/compute/RegionSecurityPolicy.java | 71 + .../gcp/compute/RegionSecurityPolicyArgs.java | 64 + .../gcp/compute/RegionSecurityPolicyRule.java | 477 ++++ .../compute/RegionSecurityPolicyRuleArgs.java | 467 ++++ .../com/pulumi/gcp/compute/Subnetwork.java | 38 +- .../pulumi/gcp/compute/SubnetworkArgs.java | 72 +- .../inputs/InstanceTemplateDiskArgs.java | 17 + .../RegionInstanceTemplateDiskArgs.java | 17 + .../RegionSecurityPolicyRuleMatchArgs.java | 137 ++ ...gionSecurityPolicyRuleMatchConfigArgs.java | 94 + ...ionSecurityPolicyRuleNetworkMatchArgs.java | 430 ++++ ...yRuleNetworkMatchUserDefinedFieldArgs.java | 131 ++ .../inputs/RegionSecurityPolicyRuleState.java | 463 ++++ .../inputs/RegionSecurityPolicyState.java | 64 + ...ionSecurityPolicyUserDefinedFieldArgs.java | 261 +++ ...curityPolicyAdvancedOptionsConfigArgs.java | 48 + .../gcp/compute/inputs/SubnetworkState.java | 72 +- .../outputs/GetInstanceTemplateDisk.java | 12 + .../GetRegionInstanceTemplateDisk.java | 12 + .../compute/outputs/InstanceTemplateDisk.java | 12 + .../outputs/RegionInstanceTemplateDisk.java | 12 + .../RegionSecurityPolicyRuleMatch.java | 85 + .../RegionSecurityPolicyRuleMatchConfig.java | 59 + .../RegionSecurityPolicyRuleNetworkMatch.java | 224 ++ ...olicyRuleNetworkMatchUserDefinedField.java | 80 + .../RegionSecurityPolicyUserDefinedField.java | 151 ++ .../SecurityPolicyAdvancedOptionsConfig.java | 24 + .../com/pulumi/gcp/container/AwsCluster.java | 220 ++ .../com/pulumi/gcp/container/AwsNodePool.java | 320 +++ .../ConnectionProfile.java | 3 +- ...ConnectionProfileCloudsqlSettingsArgs.java | 41 + .../ConnectionProfileCloudsqlSettings.java | 22 + .../dataloss/PreventionStoredInfoType.java | 2 +- .../pulumi/gcp/dataproc/MetastoreService.java | 95 + .../gcp/dataproc/MetastoreServiceArgs.java | 42 + .../MetastoreServiceScalingConfigArgs.java | 125 ++ .../inputs/MetastoreServiceState.java | 42 + .../MetastoreServiceScalingConfig.java | 79 + .../java/com/pulumi/gcp/dns/ManagedZone.java | 7 +- .../com/pulumi/gcp/dns/ManagedZoneArgs.java | 8 +- .../java/com/pulumi/gcp/dns/RecordSet.java | 128 -- ...anagedZonePrivateVisibilityConfigArgs.java | 11 +- .../gcp/dns/inputs/ManagedZoneState.java | 8 +- ...heckedTargetsInternalLoadBalancerArgs.java | 8 +- ...heckedTargetsInternalLoadBalancerArgs.java | 8 +- ...BackupPrimaryInternalLoadBalancerArgs.java | 8 +- ...heckedTargetsInternalLoadBalancerArgs.java | 8 +- .../ManagedZonePrivateVisibilityConfig.java | 10 +- ...lthCheckedTargetsInternalLoadBalancer.java | 4 +- ...lthCheckedTargetsInternalLoadBalancer.java | 4 +- ...maryBackupPrimaryInternalLoadBalancer.java | 4 +- ...lthCheckedTargetsInternalLoadBalancer.java | 4 +- ...sterControlPlaneNodeVsphereConfigArgs.java | 57 +- .../inputs/VMwareClusterVcenterArgs.java | 57 +- ...eClusterControlPlaneNodeVsphereConfig.java | 28 +- .../outputs/VMwareClusterVcenter.java | 30 +- .../com/pulumi/gcp/healthcare/FhirStore.java | 19 + .../pulumi/gcp/healthcare/FhirStoreArgs.java | 45 + .../gcp/healthcare/inputs/FhirStoreState.java | 45 + .../gcp/monitoring/MonitoringFunctions.java | 8 +- .../pulumi/gcp/networkservices/Gateway.java | 8 +- .../com/pulumi/gcp/secretmanager/Secret.java | 26 + .../pulumi/gcp/secretmanager/SecretArgs.java | 61 + .../gcp/secretmanager/inputs/SecretState.java | 61 + .../outputs/GetSecretResult.java | 12 + sdk/nodejs/apigateway/apiConfig.ts | 2 +- sdk/nodejs/apigateway/gateway.ts | 2 +- .../appengine/applicationUrlDispatchRules.ts | 2 +- sdk/nodejs/appengine/engineSplitTraffic.ts | 2 +- sdk/nodejs/appengine/flexibleAppVersion.ts | 2 +- .../appengine/serviceNetworkSettings.ts | 2 +- sdk/nodejs/appengine/standardAppVersion.ts | 2 +- sdk/nodejs/backupdisasterrecovery/index.ts | 25 + .../managementServer.ts | 234 ++ sdk/nodejs/bigquery/job.ts | 2 +- sdk/nodejs/certificatemanager/certificate.ts | 15 +- .../certificateIssuanceConfig.ts | 2 +- sdk/nodejs/cloudbuild/trigger.ts | 22 + sdk/nodejs/cloudrunv2/job.ts | 64 + sdk/nodejs/cloudrunv2/service.ts | 60 + sdk/nodejs/compute/index.ts | 8 + .../compute/networkEdgeSecurityService.ts | 2 +- .../compute/regionNetworkEndpointGroup.ts | 2 +- sdk/nodejs/compute/regionSecurityPolicy.ts | 52 + .../compute/regionSecurityPolicyRule.ts | 430 ++++ sdk/nodejs/compute/subnetwork.ts | 56 +- sdk/nodejs/config/vars.ts | 8 + sdk/nodejs/container/awsCluster.ts | 157 ++ sdk/nodejs/container/awsNodePool.ts | 250 +++ .../connectionProfile.ts | 1 + .../dataloss/preventionStoredInfoType.ts | 2 +- sdk/nodejs/dataproc/metastoreService.ts | 53 + sdk/nodejs/dns/managedZone.ts | 9 +- sdk/nodejs/healthcare/fhirStore.ts | 21 + sdk/nodejs/index.ts | 2 + sdk/nodejs/monitoring/getAppEngineService.ts | 4 +- sdk/nodejs/networkservices/gateway.ts | 8 +- sdk/nodejs/provider.ts | 3 + sdk/nodejs/secretmanager/getSecret.ts | 1 + sdk/nodejs/secretmanager/secret.ts | 32 + sdk/nodejs/tsconfig.json | 3 + sdk/nodejs/types/input.ts | 189 +- sdk/nodejs/types/output.ts | 201 +- sdk/python/pulumi_gcp/__init__.py | 19 + .../pulumi_gcp/apigateway/api_config.py | 4 +- sdk/python/pulumi_gcp/apigateway/gateway.py | 4 +- .../application_url_dispatch_rules.py | 4 +- .../appengine/engine_split_traffic.py | 4 +- .../appengine/flexible_app_version.py | 4 +- .../appengine/service_network_settings.py | 4 +- .../appengine/standard_app_version.py | 4 +- .../backupdisasterrecovery/__init__.py | 10 + .../backupdisasterrecovery/_inputs.py | 105 + .../management_server.py | 513 +++++ .../backupdisasterrecovery/outputs.py | 123 + sdk/python/pulumi_gcp/bigquery/job.py | 4 +- .../certificatemanager/certificate.py | 33 +- .../certificate_issuance_config.py | 4 +- sdk/python/pulumi_gcp/cloudbuild/_inputs.py | 36 + sdk/python/pulumi_gcp/cloudbuild/outputs.py | 46 + sdk/python/pulumi_gcp/cloudbuild/trigger.py | 42 + sdk/python/pulumi_gcp/cloudrunv2/job.py | 180 +- sdk/python/pulumi_gcp/cloudrunv2/service.py | 168 ++ sdk/python/pulumi_gcp/composer/_inputs.py | 12 + sdk/python/pulumi_gcp/composer/outputs.py | 17 + sdk/python/pulumi_gcp/compute/__init__.py | 1 + sdk/python/pulumi_gcp/compute/_inputs.py | 393 +++- .../compute/network_edge_security_service.py | 4 +- sdk/python/pulumi_gcp/compute/outputs.py | 394 +++- .../compute/region_network_endpoint_group.py | 4 +- .../compute/region_security_policy.py | 128 +- .../compute/region_security_policy_rule.py | 952 ++++++++ sdk/python/pulumi_gcp/compute/subnetwork.py | 130 +- sdk/python/pulumi_gcp/config/__init__.pyi | 2 + sdk/python/pulumi_gcp/config/vars.py | 4 + .../pulumi_gcp/container/aws_cluster.py | 300 +++ .../pulumi_gcp/container/aws_node_pool.py | 480 ++++ .../databasemigrationservice/_inputs.py | 18 + .../connection_profile.py | 2 + .../databasemigrationservice/outputs.py | 14 + .../dataloss/prevention_stored_info_type.py | 4 +- sdk/python/pulumi_gcp/dataproc/_inputs.py | 42 + .../pulumi_gcp/dataproc/metastore_service.py | 122 + sdk/python/pulumi_gcp/dataproc/outputs.py | 53 + sdk/python/pulumi_gcp/dns/_inputs.py | 41 +- sdk/python/pulumi_gcp/dns/managed_zone.py | 20 +- sdk/python/pulumi_gcp/dns/outputs.py | 33 +- sdk/python/pulumi_gcp/gkeonprem/_inputs.py | 52 +- sdk/python/pulumi_gcp/gkeonprem/outputs.py | 61 +- .../pulumi_gcp/healthcare/fhir_store.py | 63 + .../monitoring/get_app_engine_service.py | 4 +- .../pulumi_gcp/networkservices/gateway.py | 16 +- sdk/python/pulumi_gcp/provider.py | 20 + .../pulumi_gcp/secretmanager/get_secret.py | 16 +- sdk/python/pulumi_gcp/secretmanager/secret.py | 95 +- upstream | 2 +- 354 files changed, 22732 insertions(+), 2167 deletions(-) rename patches/{0004-Allow-disabling-the-partner-name.patch => 0001-Allow-disabling-the-partner-name.patch} (89%) delete mode 100644 patches/0001-Release-4.75.0-changelog-5925.patch delete mode 100644 patches/0002-Add-changelog-4.75.1.patch rename patches/{0005-Add-nil-checks-for-sql-database-instance-flattening.patch => 0002-Add-nil-checks-for-sql-database-instance-flattening.patch} (93%) rename patches/{0006-Only-set-bigquery-dataset-selflink-if-available.patch => 0003-Only-set-bigquery-dataset-selflink-if-available.patch} (89%) delete mode 100644 patches/0003-Update-CHANGELOG-5801.patch rename patches/{0007-Add-flattening-of-self-managed-certificates.patch => 0004-Add-flattening-of-self-managed-certificates.patch} (88%) rename patches/{0008-Remove-security-policy-default-versioned_expr.patch => 0005-Remove-security-policy-default-versioned_expr.patch} (84%) rename patches/{0009-website-docs-d-tweaks.patch => 0006-website-docs-d-tweaks.patch} (99%) rename patches/{0010-Significant-docs-changes.patch => 0007-Significant-docs-changes.patch} (98%) rename patches/{0011-Exclude-scripts-dir-from-provider-go-module.patch => 0008-Exclude-scripts-dir-from-provider-go-module.patch} (74%) rename patches/{0012-Remove-duplicative-resource-token.patch => 0009-Remove-duplicative-resource-token.patch} (75%) create mode 100644 sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriArgs.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriGetArgs.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkArgs.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkGetArgs.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/ManagementServer.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerManagementUri.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerNetwork.cs create mode 100644 sdk/dotnet/BackupDisasterRecovery/README.md create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigGetArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchGetArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchGetArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldArgs.cs create mode 100644 sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldGetArgs.cs create mode 100644 sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatch.cs create mode 100644 sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatchConfig.cs create mode 100644 sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatch.cs create mode 100644 sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.cs create mode 100644 sdk/dotnet/Compute/Outputs/RegionSecurityPolicyUserDefinedField.cs create mode 100644 sdk/dotnet/Compute/RegionSecurityPolicyRule.cs create mode 100644 sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigArgs.cs create mode 100644 sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigGetArgs.cs create mode 100644 sdk/dotnet/Dataproc/Outputs/MetastoreServiceScalingConfig.cs create mode 100644 sdk/go/gcp/backupdisasterrecovery/init.go create mode 100644 sdk/go/gcp/backupdisasterrecovery/managementServer.go create mode 100644 sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go create mode 100644 sdk/go/gcp/compute/regionSecurityPolicyRule.go create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServer.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServerArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerManagementUriArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerNetworkArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerState.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerManagementUri.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerNetwork.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRule.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRuleArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchConfigArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleState.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyUserDefinedFieldArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatch.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatchConfig.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatch.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyUserDefinedField.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceScalingConfigArgs.java create mode 100644 sdk/java/src/main/java/com/pulumi/gcp/dataproc/outputs/MetastoreServiceScalingConfig.java create mode 100644 sdk/nodejs/backupdisasterrecovery/index.ts create mode 100644 sdk/nodejs/backupdisasterrecovery/managementServer.ts create mode 100644 sdk/nodejs/compute/regionSecurityPolicyRule.ts create mode 100644 sdk/python/pulumi_gcp/backupdisasterrecovery/__init__.py create mode 100644 sdk/python/pulumi_gcp/backupdisasterrecovery/_inputs.py create mode 100644 sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py create mode 100644 sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py create mode 100644 sdk/python/pulumi_gcp/compute/region_security_policy_rule.py diff --git a/patches/0004-Allow-disabling-the-partner-name.patch b/patches/0001-Allow-disabling-the-partner-name.patch similarity index 89% rename from patches/0004-Allow-disabling-the-partner-name.patch rename to patches/0001-Allow-disabling-the-partner-name.patch index 3bba2539c6..384393265e 100644 --- a/patches/0004-Allow-disabling-the-partner-name.patch +++ b/patches/0001-Allow-disabling-the-partner-name.patch @@ -1,7 +1,7 @@ -From ffa4f56d985c1ac9cdc5b4b50a0636a172cbc6c1 Mon Sep 17 00:00:00 2001 +From 32b5559ce04aa464c2f1d25585e9ffc1ac609f4a Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 11:09:59 +0000 -Subject: [PATCH 04/12] Allow disabling the partner name +Subject: [PATCH 1/9] Allow disabling the partner name Add options to set or disable partner name. --- @@ -10,10 +10,10 @@ Add options to set or disable partner name. 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/google-beta/provider/provider.go b/google-beta/provider/provider.go -index aecc42137..9804a42cd 100644 +index 2b894c5fb..6944d78b0 100644 --- a/google-beta/provider/provider.go +++ b/google-beta/provider/provider.go -@@ -227,6 +227,19 @@ func Provider() *schema.Provider { +@@ -231,6 +231,19 @@ func Provider() *schema.Provider { Optional: true, }, @@ -33,7 +33,7 @@ index aecc42137..9804a42cd 100644 "request_reason": { Type: schema.TypeString, Optional: true, -@@ -1839,6 +1852,21 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData, p *schema.Pr +@@ -1870,6 +1883,21 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData, p *schema.Pr UserAgent: p.UserAgent("terraform-provider-google-beta", version.ProviderVersion), } @@ -74,5 +74,5 @@ index d0f4777ca..dc0f460e4 100644 // Deprecated: For backward compatibility snakeToPascalCase is still working, -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0001-Release-4.75.0-changelog-5925.patch b/patches/0001-Release-4.75.0-changelog-5925.patch deleted file mode 100644 index 775cf43d61..0000000000 --- a/patches/0001-Release-4.75.0-changelog-5925.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 1a6fe2e9c3a2f4b8f3ca726609f4e50c2952550b Mon Sep 17 00:00:00 2001 -From: "Stephen Lewis (Burrows)" -Date: Mon, 24 Jul 2023 09:50:58 -0700 -Subject: [PATCH 01/12] Release 4.75.0 changelog (#5925) - ---- - CHANGELOG.md | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/CHANGELOG.md b/CHANGELOG.md -index 49a924888..38b037049 100644 ---- a/CHANGELOG.md -+++ b/CHANGELOG.md -@@ -59,6 +59,26 @@ BUG FIXES: - * compute: fixed logic when unsetting `google_compute_instance.min_cpu_platform` and switching to a `machine_type` that does not support `min_cpu_platform` at the same time ([#5911](https://github.com/hashicorp/terraform-provider-google-beta/pull/5911)) - * tags: fixed race condition when modifying `google_tags_location_tag_binding` ([#5904](https://github.com/hashicorp/terraform-provider-google-beta/pull/5904)) - -+FEATURES: -+* **New Resource:** `google_looker_instance` ([#5903](https://github.com/hashicorp/terraform-provider-google-beta/pull/5903)) -+ -+IMPROVEMENTS: -+* apigee: added `disable_vpc_peering` field to `google_apigee_organization` resource ([#5901](https://github.com/hashicorp/terraform-provider-google-beta/pull/5901)) -+* bigquery: added `external_data_configuration.json_options` and `external_data_configuration.parquet_options` fields to `google_bigquery_table` ([#5906](https://github.com/hashicorp/terraform-provider-google-beta/pull/5906)) -+* bigtable: added `change_stream_retention` field to `google_bigtable_table.table` resource ([#5880](https://github.com/hashicorp/terraform-provider-google-beta/pull/5880)) -+* compute: added `most_recent` argument to `google_compute_image` datasource ([#5902](https://github.com/hashicorp/terraform-provider-google-beta/pull/5902)) -+* compute: added field `enable_confidential_compute` for `google_compute_disk` resource ([#5897](https://github.com/hashicorp/terraform-provider-google-beta/pull/5897)) -+* container: added `gpu_driver_installation_config.gpu_driver_version` field to `google_container_node_pool` ([#5899](https://github.com/hashicorp/terraform-provider-google-beta/pull/5899)) -+* gkebackup: added `state` and `state_reason` output-only fields to `google_gkebackup_backupplan` resource ([#5909](https://github.com/hashicorp/terraform-provider-google-beta/pull/5909)) -+* healthcare: added `complex_data_type_reference_parsing ` field to `google_healthcare_fhir_store` resource ([#5884](https://github.com/hashicorp/terraform-provider-google-beta/pull/5884)) -+* networkservices: increased max_size to 20 for both `included_query_parameters` and `excluded_query_parameters` on `google_network_services_edge_cache_service` ([#5889](https://github.com/hashicorp/terraform-provider-google-beta/pull/5889)) -+* vpcaccess: added support for updates to `google_vpc_access_connector` resource ([#5894](https://github.com/hashicorp/terraform-provider-google-beta/pull/5894)) -+ -+BUG FIXES: -+* alloydb: fixed `google_alloydb_cluster` handling of automated backup policy midnight start time ([#5913](https://github.com/hashicorp/terraform-provider-google-beta/pull/5913)) -+* compute: fixed logic when unsetting `google_compute_instance.min_cpu_platform` and switching to a `machine_type` that does not support `min_cpu_platform` at the same time ([#5911](https://github.com/hashicorp/terraform-provider-google-beta/pull/5911)) -+* tags: fixed race condition when modifying `google_tags_location_tag_binding` ([#5904](https://github.com/hashicorp/terraform-provider-google-beta/pull/5904)) -+ - ## 4.74.0 (July 18, 2023) - - IMPROVEMENTS: --- -2.39.1 - diff --git a/patches/0002-Add-changelog-4.75.1.patch b/patches/0002-Add-changelog-4.75.1.patch deleted file mode 100644 index 8e50c460e8..0000000000 --- a/patches/0002-Add-changelog-4.75.1.patch +++ /dev/null @@ -1,25 +0,0 @@ -From df417db072dabc5663cd54c373734a4e43ca1463 Mon Sep 17 00:00:00 2001 -From: Hao Nan Li -Date: Wed, 26 Jul 2023 14:34:37 -0700 -Subject: [PATCH 02/12] Add changelog 4.75.1 - ---- - CHANGELOG.md | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CHANGELOG.md b/CHANGELOG.md -index 38b037049..652cb4c93 100644 ---- a/CHANGELOG.md -+++ b/CHANGELOG.md -@@ -1159,7 +1159,7 @@ BUG FIXES: - * iam: fixed permadiff resulting from empty fields being sent in requests to set conditional IAM policies ([#4723](https://github.com/hashicorp/terraform-provider-google-beta/pull/4723)) - * secretmanager: fixed a bug where `google_secret_manager_secret_version` that was destroyed outside of Terraform would not be recreated on apply ([#4719](https://github.com/hashicorp/terraform-provider-google-beta/pull/4719)) - * storagetransfer: fixed a crash in `google_storagetransfer_job` when `transfer_schedule` is empty ([#4745](https://github.com/hashicorp/terraform-provider-google-beta/pull/4745)) -- -+ - ## 4.38.0 (September 26, 2022) - - FEATURES: --- -2.39.1 - diff --git a/patches/0005-Add-nil-checks-for-sql-database-instance-flattening.patch b/patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch similarity index 93% rename from patches/0005-Add-nil-checks-for-sql-database-instance-flattening.patch rename to patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch index 25f8fdeec7..8ccc2a48ee 100644 --- a/patches/0005-Add-nil-checks-for-sql-database-instance-flattening.patch +++ b/patches/0002-Add-nil-checks-for-sql-database-instance-flattening.patch @@ -1,14 +1,14 @@ -From 7488000e4a09f4a8a57b772439c134f5fd437836 Mon Sep 17 00:00:00 2001 +From 6101049171c65b529ca7359437ec40237a85f669 Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 11:50:33 +0000 -Subject: [PATCH 05/12] Add nil checks for sql database instance flattening +Subject: [PATCH 2/9] Add nil checks for sql database instance flattening --- .../sql/resource_sql_database_instance.go | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/google-beta/services/sql/resource_sql_database_instance.go b/google-beta/services/sql/resource_sql_database_instance.go -index 4fee002e8..f64b03a67 100644 +index 95f4c4064..735b003c1 100644 --- a/google-beta/services/sql/resource_sql_database_instance.go +++ b/google-beta/services/sql/resource_sql_database_instance.go @@ -1937,6 +1937,10 @@ func resourceSqlDatabaseInstanceImport(d *schema.ResourceData, meta interface{}) @@ -78,5 +78,5 @@ index 4fee002e8..f64b03a67 100644 "query_insights_enabled": insightsConfig.QueryInsightsEnabled, "query_string_length": insightsConfig.QueryStringLength, -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0006-Only-set-bigquery-dataset-selflink-if-available.patch b/patches/0003-Only-set-bigquery-dataset-selflink-if-available.patch similarity index 89% rename from patches/0006-Only-set-bigquery-dataset-selflink-if-available.patch rename to patches/0003-Only-set-bigquery-dataset-selflink-if-available.patch index 27f4f57234..606c13595b 100644 --- a/patches/0006-Only-set-bigquery-dataset-selflink-if-available.patch +++ b/patches/0003-Only-set-bigquery-dataset-selflink-if-available.patch @@ -1,7 +1,7 @@ -From 4c05672e76e0e676753c3257d0caa15b095eba86 Mon Sep 17 00:00:00 2001 +From 4baf5b1f56a6bafa64ea914e7fd31908c1975299 Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 11:55:24 +0000 -Subject: [PATCH 06/12] Only set bigquery dataset selflink if available +Subject: [PATCH 3/9] Only set bigquery dataset selflink if available --- .../services/bigquery/resource_bigquery_dataset.go | 9 +++++++-- @@ -28,5 +28,5 @@ index 96cf5c7b6..7086541bd 100644 return nil -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0003-Update-CHANGELOG-5801.patch b/patches/0003-Update-CHANGELOG-5801.patch deleted file mode 100644 index 0d452ad06e..0000000000 --- a/patches/0003-Update-CHANGELOG-5801.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5654730e18f044b982e8784b498920ba6f8fb66e Mon Sep 17 00:00:00 2001 -From: Zhenhua Li -Date: Tue, 27 Jun 2023 08:38:30 -0700 -Subject: [PATCH 03/12] Update CHANGELOG (#5801) - ---- - CHANGELOG.md | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/CHANGELOG.md b/CHANGELOG.md -index 652cb4c93..8a8ba8e3a 100644 ---- a/CHANGELOG.md -+++ b/CHANGELOG.md -@@ -175,6 +175,24 @@ BUG FIXES: - * bigtable: validated that `cluster_id` values are unique within resource `google_bigtable_instance` ([#5778](https://github.com/hashicorp/terraform-provider-google-beta/pull/5778)) - * storage: fixed a bug that caused a permadiff when the `autoclass.enabled` field was explicitly set to false in resource `google_storage_bucket` ([#5776](https://github.com/hashicorp/terraform-provider-google-beta/pull/5776)) - -+FEATURES: -+* **New Resource:** `google_gke_hub_feature_iam_*` ([#5782](https://github.com/hashicorp/terraform-provider-google-beta/pull/5782)) -+* **New Resource:** `google_gke_hub_feature` ([#5782](https://github.com/hashicorp/terraform-provider-google-beta/pull/5782)) -+* **New Resource:** `google_vmwareengine_cluster` ([#5784](https://github.com/hashicorp/terraform-provider-google-beta/pull/5784)) -+* **New Resource:** `google_vmwareengine_private_cloud` ([#5784](https://github.com/hashicorp/terraform-provider-google-beta/pull/5784)) -+ -+IMPROVEMENTS: -+* apigee: added output-only field `apigee_project_id` to resource `google_apigee_organization` ([#5781](https://github.com/hashicorp/terraform-provider-google-beta/pull/5781)) -+* bigtable: increased default timeout for instance operations to 1 hour in resoure `google_bigtable_instance` ([#5779](https://github.com/hashicorp/terraform-provider-google-beta/pull/5779)) -+* composer: added field `resilience_mode` to resource `google_composer_environment` ([#5790](https://github.com/hashicorp/terraform-provider-google-beta/pull/5790)) -+* compute: added support for `params.resource_manager_tags` and `boot_disk.initialize_params.resource_manager_tags` to resource `google_compute_instance` ([#5787](https://github.com/hashicorp/terraform-provider-google-beta/pull/5787)) -+* bigquerydatatransfer: made field `service_account_name` mutable in resource `google_bigquery_data_transfer_config` ([#5777](https://github.com/hashicorp/terraform-provider-google-beta/pull/5777)) -+* iambeta: added field `jwks_json` to resource `google_iam_workload_identity_pool_provider` ([#5789](https://github.com/hashicorp/terraform-provider-google-beta/pull/5789)) -+ -+BUG FIXES: -+* bigtable: validated that `cluster_id` values are unique within resource `google_bigtable_instance` ([#5778](https://github.com/hashicorp/terraform-provider-google-beta/pull/5778)) -+* storage: fixed a bug that caused a permadiff when the `autoclass.enabled` field was explicitly set to false in resource `google_storage_bucket` ([#5776](https://github.com/hashicorp/terraform-provider-google-beta/pull/5776)) -+ - ## 4.70.0 (June 20, 2023) - - FEATURES: --- -2.39.1 - diff --git a/patches/0007-Add-flattening-of-self-managed-certificates.patch b/patches/0004-Add-flattening-of-self-managed-certificates.patch similarity index 88% rename from patches/0007-Add-flattening-of-self-managed-certificates.patch rename to patches/0004-Add-flattening-of-self-managed-certificates.patch index 0001d0c067..74f08ca5c9 100644 --- a/patches/0007-Add-flattening-of-self-managed-certificates.patch +++ b/patches/0004-Add-flattening-of-self-managed-certificates.patch @@ -1,17 +1,17 @@ -From e5a28e54fa97dffd3c0519e23184560bbe2668a3 Mon Sep 17 00:00:00 2001 +From 08925784e03693273729d3126f412180fa48eb9b Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 11:57:44 +0000 -Subject: [PATCH 07/12] Add flattening of self managed certificates +Subject: [PATCH 4/9] Add flattening of self managed certificates --- ...esource_certificate_manager_certificate.go | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/google-beta/services/certificatemanager/resource_certificate_manager_certificate.go b/google-beta/services/certificatemanager/resource_certificate_manager_certificate.go -index 83f1b5161..cb5c32779 100644 +index 4216aac73..93c74f611 100644 --- a/google-beta/services/certificatemanager/resource_certificate_manager_certificate.go +++ b/google-beta/services/certificatemanager/resource_certificate_manager_certificate.go -@@ -411,6 +411,9 @@ func resourceCertificateManagerCertificateRead(d *schema.ResourceData, meta inte +@@ -414,6 +414,9 @@ func resourceCertificateManagerCertificateRead(d *schema.ResourceData, meta inte if err := d.Set("scope", flattenCertificateManagerCertificateScope(res["scope"], d, config)); err != nil { return fmt.Errorf("Error reading Certificate: %s", err) } @@ -21,7 +21,7 @@ index 83f1b5161..cb5c32779 100644 if err := d.Set("managed", flattenCertificateManagerCertificateManaged(res["managed"], d, config)); err != nil { return fmt.Errorf("Error reading Certificate: %s", err) } -@@ -586,6 +589,30 @@ func flattenCertificateManagerCertificateScope(v interface{}, d *schema.Resource +@@ -589,6 +592,30 @@ func flattenCertificateManagerCertificateScope(v interface{}, d *schema.Resource return v } @@ -53,5 +53,5 @@ index 83f1b5161..cb5c32779 100644 if v == nil { return nil -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0008-Remove-security-policy-default-versioned_expr.patch b/patches/0005-Remove-security-policy-default-versioned_expr.patch similarity index 84% rename from patches/0008-Remove-security-policy-default-versioned_expr.patch rename to patches/0005-Remove-security-policy-default-versioned_expr.patch index 280ba6f259..2fe3afe6e4 100644 --- a/patches/0008-Remove-security-policy-default-versioned_expr.patch +++ b/patches/0005-Remove-security-policy-default-versioned_expr.patch @@ -1,14 +1,14 @@ -From b96486cd8e943fcfebef438cb29436e7ce6069b2 Mon Sep 17 00:00:00 2001 +From d015070b956d755f60298d4f18cedfee9e46ad64 Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 12:00:07 +0000 -Subject: [PATCH 08/12] Remove security policy default versioned_expr +Subject: [PATCH 5/9] Remove security policy default versioned_expr --- google-beta/services/compute/resource_compute_security_policy.go | 1 - 1 file changed, 1 deletion(-) diff --git a/google-beta/services/compute/resource_compute_security_policy.go b/google-beta/services/compute/resource_compute_security_policy.go -index 298e92165..81597972a 100644 +index f54f5e74d..fdcf16433 100644 --- a/google-beta/services/compute/resource_compute_security_policy.go +++ b/google-beta/services/compute/resource_compute_security_policy.go @@ -115,7 +115,6 @@ func ResourceComputeSecurityPolicy() *schema.Resource { @@ -20,5 +20,5 @@ index 298e92165..81597972a 100644 Description: `Predefined rule expression. If this field is specified, config must also be specified. Available options: SRC_IPS_V1: Must specify the corresponding src_ip_ranges field in config.`, }, -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0009-website-docs-d-tweaks.patch b/patches/0006-website-docs-d-tweaks.patch similarity index 99% rename from patches/0009-website-docs-d-tweaks.patch rename to patches/0006-website-docs-d-tweaks.patch index 564da9d20f..e51d5310b6 100644 --- a/patches/0009-website-docs-d-tweaks.patch +++ b/patches/0006-website-docs-d-tweaks.patch @@ -1,7 +1,7 @@ -From be30819b2997f735de1e411d02b72a8765566bc6 Mon Sep 17 00:00:00 2001 +From 14d85b3a5fe0975cd5f9ce2552de04810f14b589 Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 11:16:06 +0000 -Subject: [PATCH 09/12] website/docs/d tweaks +Subject: [PATCH 6/9] website/docs/d tweaks --- website/docs/d/cloud_run_service.html.markdown | 2 +- @@ -503,5 +503,5 @@ index d0494f08b..0ebec0d7e 100644 For more information see [the API reference](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount). -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0010-Significant-docs-changes.patch b/patches/0007-Significant-docs-changes.patch similarity index 98% rename from patches/0010-Significant-docs-changes.patch rename to patches/0007-Significant-docs-changes.patch index 901d3088a0..e36666fbd3 100644 --- a/patches/0010-Significant-docs-changes.patch +++ b/patches/0007-Significant-docs-changes.patch @@ -1,7 +1,7 @@ -From 951c4a0da66ee55708c8e2417642e7a8483560ad Mon Sep 17 00:00:00 2001 +From 26af5215eca1fa61df5b572dff76d4bdb40b0e97 Mon Sep 17 00:00:00 2001 From: Daniel Bradley Date: Tue, 7 Mar 2023 12:56:24 +0000 -Subject: [PATCH 10/12] Significant docs changes +Subject: [PATCH 7/9] Significant docs changes --- website/docs/r/api_gateway_api.html.markdown | 3 - @@ -23,7 +23,7 @@ Subject: [PATCH 10/12] Significant docs changes .../r/bigtable_instance_iam.html.markdown | 2 +- website/docs/r/bigtable_table.html.markdown | 8 +- .../docs/r/bigtable_table_iam.html.markdown | 2 +- - ...tificate_manager_certificate.html.markdown | 29 ++++++- + ...tificate_manager_certificate.html.markdown | 31 +++++-- ...ud_identity_group_membership.html.markdown | 2 +- .../r/cloud_run_domain_mapping.html.markdown | 2 +- .../docs/r/cloud_run_service.html.markdown | 72 ++++++++++++++-- @@ -157,7 +157,7 @@ Subject: [PATCH 10/12] Significant docs changes website/docs/r/storage_hmac_key.html.markdown | 10 +-- .../docs/r/storage_object_acl.html.markdown | 5 -- website/docs/r/tpu_node.html.markdown | 2 +- - 153 files changed, 656 insertions(+), 593 deletions(-) + 153 files changed, 657 insertions(+), 594 deletions(-) create mode 100644 website/docs/r/google_folder_iam_binding.html.markdown create mode 100644 website/docs/r/google_organization_iam_audit_config.html.markdown create mode 100644 website/docs/r/google_organization_iam_binding.html.markdown @@ -177,7 +177,7 @@ index 9581836d8..4076dc46a 100644 * [API documentation](https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis) diff --git a/website/docs/r/api_gateway_api_config.html.markdown b/website/docs/r/api_gateway_api_config.html.markdown -index d2e073f16..c03f35904 100644 +index eed02db6a..8b3a4f7c2 100644 --- a/website/docs/r/api_gateway_api_config.html.markdown +++ b/website/docs/r/api_gateway_api_config.html.markdown @@ -21,9 +21,6 @@ description: |- @@ -219,7 +219,7 @@ index 0889b9be9..9b0366546 100644 ## google\_api\_gateway\_api\_iam\_policy diff --git a/website/docs/r/api_gateway_gateway.html.markdown b/website/docs/r/api_gateway_gateway.html.markdown -index 0899b839e..07c9b64ac 100644 +index e7582ddd5..5b25b39ce 100644 --- a/website/docs/r/api_gateway_gateway.html.markdown +++ b/website/docs/r/api_gateway_gateway.html.markdown @@ -21,9 +21,6 @@ description: |- @@ -300,7 +300,7 @@ index fb45b44d1..265836942 100644 ~> **Warning:** All arguments including `iap.oauth2_client_secret` will be stored in the raw state as plain-text. [Read more about sensitive data in state](https://www.terraform.io/language/state/sensitive-data). diff --git a/website/docs/r/app_engine_flexible_app_version.html.markdown b/website/docs/r/app_engine_flexible_app_version.html.markdown -index ea0eb5bc6..52e66034b 100644 +index 732573370..251064cc2 100644 --- a/website/docs/r/app_engine_flexible_app_version.html.markdown +++ b/website/docs/r/app_engine_flexible_app_version.html.markdown @@ -302,7 +302,7 @@ The following arguments are supported: @@ -313,7 +313,7 @@ index ea0eb5bc6..52e66034b 100644 * `default_expiration` - (Optional) diff --git a/website/docs/r/bigquery_job.html.markdown b/website/docs/r/bigquery_job.html.markdown -index eb35f4623..f55592e94 100644 +index 248c1f266..a0ad38aee 100644 --- a/website/docs/r/bigquery_job.html.markdown +++ b/website/docs/r/bigquery_job.html.markdown @@ -717,8 +717,8 @@ The following arguments are supported: @@ -357,7 +357,7 @@ index 5c8d2408d..e4163d30d 100644 location = "us-central1" slot_capacity = 0 diff --git a/website/docs/r/bigquery_table.html.markdown b/website/docs/r/bigquery_table.html.markdown -index cf943e567..68a05574d 100644 +index 2b4fec268..142ee9fbc 100644 --- a/website/docs/r/bigquery_table.html.markdown +++ b/website/docs/r/bigquery_table.html.markdown @@ -11,7 +11,7 @@ Creates a table resource in a dataset for Google BigQuery. For more information @@ -369,7 +369,7 @@ index cf943e567..68a05574d 100644 It is recommended to not set this field (or set it to true) until you're ready to destroy. -@@ -141,8 +141,8 @@ The following arguments are supported: +@@ -143,8 +143,8 @@ The following arguments are supported: * `materialized_view` - (Optional) If specified, configures this table as a materialized view. Structure is [documented below](#nested_materialized_view). @@ -380,7 +380,7 @@ index cf943e567..68a05574d 100644 The `external_data_configuration` block supports: -@@ -220,8 +220,8 @@ in Terraform state, a `terraform destroy` or `terraform apply` that would delete +@@ -226,8 +226,8 @@ in Terraform state, a `terraform destroy` or `terraform apply` that would delete CSV file. If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the `allow_quoted_newlines` property to true. @@ -510,10 +510,10 @@ index b4e7a56ac..2cec72cf8 100644 ## Attributes Reference diff --git a/website/docs/r/certificate_manager_certificate.html.markdown b/website/docs/r/certificate_manager_certificate.html.markdown -index 79c17ae02..709a9f2a0 100644 +index feefa0348..6e35dddae 100644 --- a/website/docs/r/certificate_manager_certificate.html.markdown +++ b/website/docs/r/certificate_manager_certificate.html.markdown -@@ -148,12 +148,13 @@ resource "google_privateca_certificate_authority" "ca_authority" { +@@ -148,24 +148,44 @@ resource "google_privateca_certificate_authority" "ca_authority" { ignore_active_certificates_on_deletion = true } ``` @@ -528,13 +528,14 @@ index 79c17ae02..709a9f2a0 100644 ```hcl -@@ -161,11 +162,30 @@ resource "google_certificate_manager_certificate" "default" { + resource "google_certificate_manager_certificate" "default" { name = "self-managed-cert" description = "Global cert" - scope = "EDGE_CACHE" +- scope = "ALL_REGIONS" - self_managed { -- pem_certificate = file("test-fixtures/certificatemanager/cert.pem") -- pem_private_key = file("test-fixtures/certificatemanager/private-key.pem") +- pem_certificate = file("test-fixtures/cert.pem") +- pem_private_key = file("test-fixtures/private-key.pem") ++ scope = "EDGE_CACHE" + managed { + domains = [ + google_certificate_manager_dns_authorization.instance.domain, @@ -562,7 +563,7 @@ index 79c17ae02..709a9f2a0 100644 ```
-@@ -258,6 +278,7 @@ The following arguments are supported: +@@ -259,6 +279,7 @@ The following arguments are supported: (Optional) The certificate chain in PEM-encoded form. Leaf certificate comes first, followed by intermediate ones if any. @@ -730,7 +731,7 @@ index c359fce15..c4c5a2984 100644 * `project` - (Optional) The ID of the project in which the resource belongs. If it is not provided, the provider project is used. diff --git a/website/docs/r/composer_environment.html.markdown b/website/docs/r/composer_environment.html.markdown -index fb2253c9c..f21ec3481 100644 +index 438b688d9..c477fd1b3 100644 --- a/website/docs/r/composer_environment.html.markdown +++ b/website/docs/r/composer_environment.html.markdown @@ -27,17 +27,18 @@ To get more information about Environments, see: @@ -775,7 +776,7 @@ index fb2253c9c..f21ec3481 100644 The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set if the environment is VPC-Native. -@@ -588,7 +588,7 @@ The `web_server_network_access_control` supports: +@@ -593,7 +593,7 @@ The `web_server_network_access_control` supports: * `recurrence` - (Required) @@ -784,7 +785,7 @@ index fb2253c9c..f21ec3481 100644 The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'. -@@ -598,7 +598,7 @@ The `web_server_network_access_control` supports: +@@ -603,7 +603,7 @@ The `web_server_network_access_control` supports: Whether or not master authorized networks is enabled. * `cidr_blocks` - @@ -793,7 +794,7 @@ index fb2253c9c..f21ec3481 100644 The `cidr_blocks` supports: -@@ -899,7 +899,7 @@ The `ip_allocation_policy` block supports: +@@ -904,7 +904,7 @@ The `ip_allocation_policy` block supports: * `recurrence` - (Required) @@ -803,10 +804,10 @@ index fb2253c9c..f21ec3481 100644 Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'. diff --git a/website/docs/r/compute_address.html.markdown b/website/docs/r/compute_address.html.markdown -index 03baa5d90..22e3577f0 100644 +index ca075fd5d..2e79d42ce 100644 --- a/website/docs/r/compute_address.html.markdown +++ b/website/docs/r/compute_address.html.markdown -@@ -226,7 +226,7 @@ The following arguments are supported: +@@ -225,7 +225,7 @@ The following arguments are supported: GCE_ENDPOINT/DNS_RESOLVER purposes. * `labels` - @@ -886,7 +887,7 @@ index 9bce1ba3a..f937568e0 100644 ## Example Usage - Backend Bucket Signed Url Key diff --git a/website/docs/r/compute_backend_service.html.markdown b/website/docs/r/compute_backend_service.html.markdown -index 6112d056d..22c96230e 100644 +index 2085a5209..27c41d64e 100644 --- a/website/docs/r/compute_backend_service.html.markdown +++ b/website/docs/r/compute_backend_service.html.markdown @@ -34,9 +34,8 @@ To get more information about BackendService, see: @@ -901,7 +902,7 @@ index 6112d056d..22c96230e 100644
-@@ -655,7 +654,7 @@ The following arguments are supported: +@@ -657,7 +656,7 @@ The following arguments are supported: The `circuit_breakers` block supports: * `connect_timeout` - @@ -1009,7 +1010,7 @@ index a6e6a6f3e..163b7542f 100644 ```hcl diff --git a/website/docs/r/compute_global_address.html.markdown b/website/docs/r/compute_global_address.html.markdown -index d2c34da69..345d23b1f 100644 +index 432a3e975..58cf57b48 100644 --- a/website/docs/r/compute_global_address.html.markdown +++ b/website/docs/r/compute_global_address.html.markdown @@ -97,7 +97,7 @@ The following arguments are supported: @@ -1046,7 +1047,7 @@ index c3c7a08e5..afe1e7197 100644 ## Attributes Reference diff --git a/website/docs/r/compute_instance.html.markdown b/website/docs/r/compute_instance.html.markdown -index 637df56b7..9f6fdc63c 100644 +index aa1c929d2..683860086 100644 --- a/website/docs/r/compute_instance.html.markdown +++ b/website/docs/r/compute_instance.html.markdown @@ -87,7 +87,7 @@ The following arguments are supported: @@ -1173,10 +1174,10 @@ index ceb3b5c1a..84b319b75 100644 instances = [ google_compute_instance.test.id, diff --git a/website/docs/r/compute_instance_group_manager.html.markdown b/website/docs/r/compute_instance_group_manager.html.markdown -index 8312acd49..bff86ecc2 100644 +index 2b7d656a6..e88eb07ba 100644 --- a/website/docs/r/compute_instance_group_manager.html.markdown +++ b/website/docs/r/compute_instance_group_manager.html.markdown -@@ -139,7 +139,7 @@ The following arguments are supported: +@@ -140,7 +140,7 @@ The following arguments are supported: not affect existing instances. * `wait_for_instances` - (Optional) Whether to wait for all instances to be created/updated before @@ -1201,7 +1202,7 @@ index 3f6b49891..6044e7982 100644 ## Attributes Reference diff --git a/website/docs/r/compute_instance_template.html.markdown b/website/docs/r/compute_instance_template.html.markdown -index 8de0fec19..1e55c746c 100644 +index 34c4bafda..5468e31f8 100644 --- a/website/docs/r/compute_instance_template.html.markdown +++ b/website/docs/r/compute_instance_template.html.markdown @@ -181,12 +181,11 @@ resource "google_compute_instance_template" "foobar" { @@ -1274,7 +1275,7 @@ index 8de0fec19..1e55c746c 100644 network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be repeated multiple times. Structure [documented below](#nested_access_config). -@@ -566,7 +566,7 @@ specified, then this instance will have no external IPv6 Internet access. Struct +@@ -568,7 +568,7 @@ specified, then this instance will have no external IPv6 Internet access. Struct * `instance_termination_action` - (Optional) Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot) @@ -1506,7 +1507,7 @@ index 0a2164f8f..aae0493c0 100644 a Stackdriver Monitoring TimeSeries.list API call. This filter is used to select a specific TimeSeries for diff --git a/website/docs/r/compute_region_backend_service.html.markdown b/website/docs/r/compute_region_backend_service.html.markdown -index 961e184d0..375e5e1f8 100644 +index 971eed9ad..eb456c2f0 100644 --- a/website/docs/r/compute_region_backend_service.html.markdown +++ b/website/docs/r/compute_region_backend_service.html.markdown @@ -304,11 +304,7 @@ resource "google_compute_subnetwork" "default" { @@ -1522,7 +1523,7 @@ index 961e184d0..375e5e1f8 100644 ## Example Usage - Region Backend Service Connection Tracking -@@ -523,7 +519,7 @@ The following arguments are supported: +@@ -524,7 +520,7 @@ The following arguments are supported: Possible values are: `NONE`, `CLIENT_IP`, `CLIENT_IP_PORT_PROTO`, `CLIENT_IP_PROTO`, `GENERATED_COOKIE`, `HEADER_FIELD`, `HTTP_COOKIE`, `CLIENT_IP_NO_DESTINATION`. * `connection_tracking_policy` - @@ -1531,7 +1532,7 @@ index 961e184d0..375e5e1f8 100644 Connection Tracking configuration for this BackendService. This is available only for Layer 4 Internal Load Balancing and Network Load Balancing. -@@ -672,7 +668,7 @@ The following arguments are supported: +@@ -673,7 +669,7 @@ The following arguments are supported: The `circuit_breakers` block supports: * `connect_timeout` - @@ -1540,7 +1541,7 @@ index 961e184d0..375e5e1f8 100644 The timeout for new network connections to hosts. Structure is [documented below](#nested_connect_timeout). -@@ -873,7 +869,7 @@ The following arguments are supported: +@@ -874,7 +870,7 @@ The following arguments are supported: can be specified as values, and you cannot specify a status code more than once. * `ttl` - @@ -1609,10 +1610,10 @@ index 82f60e469..71e438742 100644 ```hcl diff --git a/website/docs/r/compute_region_instance_group_manager.html.markdown b/website/docs/r/compute_region_instance_group_manager.html.markdown -index 45e90554b..e63aa275c 100644 +index 383c1c3f4..f7fb5c67e 100644 --- a/website/docs/r/compute_region_instance_group_manager.html.markdown +++ b/website/docs/r/compute_region_instance_group_manager.html.markdown -@@ -141,7 +141,7 @@ The following arguments are supported: +@@ -142,7 +142,7 @@ The following arguments are supported: not affect existing instances. * `wait_for_instances` - (Optional) Whether to wait for all instances to be created/updated before @@ -1622,7 +1623,7 @@ index 45e90554b..e63aa275c 100644 * `wait_for_instances_status` - (Optional) When used with `wait_for_instances` it specifies the status to wait for. diff --git a/website/docs/r/compute_region_network_endpoint_group.html.markdown b/website/docs/r/compute_region_network_endpoint_group.html.markdown -index 282794593..2928c960c 100644 +index e69bd7ffc..352fe1596 100644 --- a/website/docs/r/compute_region_network_endpoint_group.html.markdown +++ b/website/docs/r/compute_region_network_endpoint_group.html.markdown @@ -21,11 +21,6 @@ description: |- @@ -1676,7 +1677,7 @@ index 0c282dd0e..b6288f822 100644 // certificate resource with a Target HTTPS Proxy resource, it's // recommended to specify create_before_destroy in a lifecycle block. diff --git a/website/docs/r/compute_security_policy.html.markdown b/website/docs/r/compute_security_policy.html.markdown -index 0b267ef52..e7d4e512b 100644 +index c6015c305..965031205 100644 --- a/website/docs/r/compute_security_policy.html.markdown +++ b/website/docs/r/compute_security_policy.html.markdown @@ -10,7 +10,7 @@ A Security Policy defines an IP blacklist or whitelist that protects load balanc @@ -1688,7 +1689,7 @@ index 0b267ef52..e7d4e512b 100644 ## Example Usage -@@ -414,14 +414,4 @@ exported: +@@ -416,14 +416,4 @@ exported: * `fingerprint` - Fingerprint of this resource. @@ -1752,7 +1753,7 @@ index 386f98f6b..69f2b40dd 100644 resource "google_compute_ssl_certificate" "default" { name_prefix = "my-certificate-" diff --git a/website/docs/r/compute_subnetwork.html.markdown b/website/docs/r/compute_subnetwork.html.markdown -index a4be6534e..46071ff00 100644 +index 053857a2b..11f9d6b42 100644 --- a/website/docs/r/compute_subnetwork.html.markdown +++ b/website/docs/r/compute_subnetwork.html.markdown @@ -245,11 +245,6 @@ The following arguments are supported: @@ -1834,7 +1835,7 @@ index 6513d8850..98eba8f47 100644 * `region` - diff --git a/website/docs/r/container_cluster.html.markdown b/website/docs/r/container_cluster.html.markdown -index 6a70569fc..4c6a5978d 100644 +index d7fd8ca8d..ba5f6a96c 100644 --- a/website/docs/r/container_cluster.html.markdown +++ b/website/docs/r/container_cluster.html.markdown @@ -6,19 +6,13 @@ description: |- @@ -1884,7 +1885,7 @@ index 6a70569fc..4c6a5978d 100644 ## Argument Reference * `name` - (Required) The name of the cluster, unique within the project and -@@ -224,8 +237,7 @@ Structure is [documented below](#nested_master_auth). +@@ -227,8 +240,7 @@ Structure is [documented below](#nested_master_auth). If unset, the cluster's version will be set by GKE to the version of the most recent official release (which is not necessarily the latest version). Most users will find the `google_container_engine_versions` data source useful - it indicates which versions @@ -1894,7 +1895,7 @@ index 6a70569fc..4c6a5978d 100644 [the docs](https://cloud.google.com/kubernetes-engine/versioning-and-upgrades#specifying_cluster_version) describe the various acceptable formats for this field. -@@ -255,8 +267,11 @@ region are guaranteed to support the same version. +@@ -258,8 +270,11 @@ region are guaranteed to support the same version. * `node_config` - (Optional) Parameters used in creating the default node pool. Generally, this field should not be used at the same time as a `google_container_node_pool` or a `node_pool` block; this configuration @@ -1908,7 +1909,7 @@ index 6a70569fc..4c6a5978d 100644 * `node_pool` - (Optional) List of node pools associated with this cluster. See [google_container_node_pool](container_node_pool.html) for schema. -@@ -275,9 +290,9 @@ region are guaranteed to support the same version. +@@ -278,9 +293,9 @@ region are guaranteed to support the same version. or set to the same value as `min_master_version` on create. Defaults to the default version set by GKE which is not necessarily the latest version. This only affects nodes in the default node pool. While a fuzzy version can be specified, it's @@ -1920,7 +1921,7 @@ index 6a70569fc..4c6a5978d 100644 To update nodes in other node pools, use the `version` attribute on the node pool. * `notification_config` - (Optional) Configuration for the [cluster upgrade notifications](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-upgrade-notifications) feature. Structure is [documented below](#nested_notification_config). -@@ -295,7 +310,7 @@ region are guaranteed to support the same version. +@@ -298,7 +313,7 @@ region are guaranteed to support the same version. * `private_cluster_config` - (Optional) Configuration for [private clusters](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters), clusters with private nodes. Structure is [documented below](#nested_private_cluster_config). @@ -1929,7 +1930,7 @@ index 6a70569fc..4c6a5978d 100644 [ClusterTelemetry](https://cloud.google.com/monitoring/kubernetes-engine/installing#controlling_the_collection_of_application_logs) feature, Structure is [documented below](#nested_cluster_telemetry). -@@ -309,7 +324,7 @@ When updating this field, GKE imposes specific version requirements. See +@@ -312,7 +327,7 @@ When updating this field, GKE imposes specific version requirements. See [Selecting a new release channel](https://cloud.google.com/kubernetes-engine/docs/concepts/release-channels#selecting_a_new_release_channel) for more details; the `google_container_engine_versions` datasource can provide the default version for a channel. Note that removing the `release_channel` @@ -1938,7 +1939,7 @@ index 6a70569fc..4c6a5978d 100644 release channel, but will not unenroll it. Instead, use the `"UNSPECIFIED"` channel. Structure is [documented below](#nested_release_channel). -@@ -343,7 +358,7 @@ subnetwork in which the cluster's instances are launched. +@@ -346,7 +361,7 @@ subnetwork in which the cluster's instances are launched. * `enable_intranode_visibility` - (Optional) Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network. @@ -1946,8 +1947,8 @@ index 6a70569fc..4c6a5978d 100644 +* `enable_l4_ilb_subsetting` - (Optional) Whether L4ILB Subsetting is enabled for this cluster. - * `enable_multi_networking` - (Optional) [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) -@@ -407,10 +422,10 @@ Enable/Disable Security Posture API features for the cluster. Structure is [docu + * `enable_multi_networking` - (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) +@@ -410,10 +425,10 @@ Enable/Disable Security Posture API features for the cluster. Structure is [docu * `cloudrun_config` - (Optional). Structure is [documented below](#nested_cloudrun_config). @@ -1960,7 +1961,7 @@ index 6a70569fc..4c6a5978d 100644 * `dns_cache_config` - (Optional). The status of the NodeLocal DNSCache addon. It is disabled by default. -@@ -425,7 +440,7 @@ Enable/Disable Security Posture API features for the cluster. Structure is [docu +@@ -428,7 +443,7 @@ Enable/Disable Security Posture API features for the cluster. Structure is [docu * `gke_backup_agent_config` - (Optional). The status of the Backup for GKE agent addon. It is disabled by default; Set `enabled = true` to enable. @@ -1969,7 +1970,7 @@ index 6a70569fc..4c6a5978d 100644 Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set `enabled = true` to enable. * `config_connector_config` - (Optional). -@@ -499,7 +514,7 @@ in addition to node auto-provisioning. Structure is [documented below](#nested_r +@@ -506,7 +521,7 @@ in addition to node auto-provisioning. Structure is [documented below](#nested_r GKE Autopilot clusters. Structure is [documented below](#nested_auto_provisioning_defaults). @@ -1978,7 +1979,7 @@ index 6a70569fc..4c6a5978d 100644 options for the [Autoscaling profile](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler#autoscaling_profiles) feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability when deciding to remove nodes from a cluster. Can be `BALANCED` or `OPTIMIZE_UTILIZATION`. Defaults to `BALANCED`. -@@ -516,7 +531,7 @@ for a list of types. +@@ -523,7 +538,7 @@ for a list of types. The `auto_provisioning_defaults` block supports: @@ -1987,7 +1988,7 @@ index 6a70569fc..4c6a5978d 100644 Minimum CPU platform to be used for NAP created node pools. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as "Intel Haswell" or "Intel Sandy Bridge". -@@ -800,8 +815,6 @@ gvnic { +@@ -814,8 +829,6 @@ gvnic { * `guest_accelerator` - (Optional) List of the type and count of accelerator cards attached to the instance. Structure [documented below](#nested_guest_accelerator). @@ -1996,7 +1997,7 @@ index 6a70569fc..4c6a5978d 100644 * `image_type` - (Optional) The image type to use for this node. Note that changing the image type will delete and recreate all nodes in the node pool. -@@ -822,7 +835,7 @@ gvnic { +@@ -836,7 +849,7 @@ gvnic { * `metadata` - (Optional) The metadata key/value pairs assigned to instances in the cluster. From GKE `1.12` onwards, `disable-legacy-endpoints` is set to `true` by the API; if `metadata` is set but that default value is not @@ -2005,7 +2006,7 @@ index 6a70569fc..4c6a5978d 100644 value in your config. * `min_cpu_platform` - (Optional) Minimum CPU platform to be used by this instance. -@@ -847,10 +860,7 @@ gvnic { +@@ -861,10 +874,7 @@ gvnic { See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms) for more information. Defaults to false. @@ -2017,7 +2018,7 @@ index 6a70569fc..4c6a5978d 100644 * `service_account` - (Optional) The service account to be used by the Node VMs. If not specified, the "default" service account is used. -@@ -863,7 +873,7 @@ gvnic { +@@ -877,7 +887,7 @@ gvnic { * `taint` - (Optional) A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/) to apply to nodes. GKE's API can only set this field on cluster creation. However, GKE will add taints to your nodes if you enable certain features such @@ -2026,7 +2027,7 @@ index 6a70569fc..4c6a5978d 100644 recreate the underlying resource. Taint values can be updated safely in Kubernetes (eg. through `kubectl`), and it's recommended that you do not use this field to manage taints. If you do, `lifecycle.ignore_changes` is -@@ -928,6 +938,14 @@ sole_tenant_config { +@@ -942,6 +952,14 @@ sole_tenant_config { * `threads_per_core` - (Required) The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed. @@ -2041,7 +2042,7 @@ index 6a70569fc..4c6a5978d 100644 The `ephemeral_storage_config` block supports: * `local_ssd_count` (Required) - Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD is 375 GB in size. If zero, it means to disable using local SSDs as ephemeral storage. -@@ -1068,7 +1086,7 @@ for more details. This field only applies to private clusters, when +@@ -1082,7 +1100,7 @@ for more details. This field only applies to private clusters, when `enable_private_nodes` is `true`. * `master_global_access_config` (Optional) - Controls cluster master global @@ -2050,7 +2051,7 @@ index 6a70569fc..4c6a5978d 100644 not modify the previously-set value. Structure is [documented below](#nested_master_global_access_config). In addition, the `private_cluster_config` allows access to the following read-only fields: -@@ -1171,9 +1189,9 @@ Enables monitoring and attestation of the boot integrity of the instance. The at +@@ -1185,9 +1203,9 @@ Enables monitoring and attestation of the boot integrity of the instance. The at * `mode` (Required) How to expose the node metadata to the workload running on the node. Accepted values are: @@ -2064,7 +2065,7 @@ index 6a70569fc..4c6a5978d 100644 The `kubelet_config` block supports: diff --git a/website/docs/r/container_node_pool.html.markdown b/website/docs/r/container_node_pool.html.markdown -index 8f7d75246..3220c0eda 100644 +index 4a8f19b26..62d765dfd 100644 --- a/website/docs/r/container_node_pool.html.markdown +++ b/website/docs/r/container_node_pool.html.markdown @@ -6,14 +6,11 @@ description: |- @@ -2367,7 +2368,7 @@ index 777daec36..4e44a4540 100644 * `project` - (Optional) The ID of the project in which the resource belongs. If it is not provided, the provider project is used. diff --git a/website/docs/r/dns_managed_zone.html.markdown b/website/docs/r/dns_managed_zone.html.markdown -index 33ad1abf3..1eac523d3 100644 +index 9a6ce9f7b..c3d3a8b8d 100644 --- a/website/docs/r/dns_managed_zone.html.markdown +++ b/website/docs/r/dns_managed_zone.html.markdown @@ -42,16 +42,12 @@ To get more information about ManagedZone, see: @@ -2398,7 +2399,7 @@ index 33ad1abf3..1eac523d3 100644 ```hcl resource "google_dns_managed_zone" "private-zone" { -@@ -330,13 +326,11 @@ The following arguments are supported: +@@ -327,13 +323,11 @@ The following arguments are supported: User assigned name for this resource. Must be unique within the project. @@ -2413,7 +2414,7 @@ index 33ad1abf3..1eac523d3 100644 * `dnssec_config` - (Optional) -@@ -374,13 +368,13 @@ The following arguments are supported: +@@ -371,13 +365,13 @@ The following arguments are supported: Structure is [documented below](#nested_peering_config). * `reverse_lookup` - @@ -3799,7 +3800,7 @@ index 5c894727c..189e49f76 100644 The `encryption_config` block supports: diff --git a/website/docs/r/sql_database_instance.html.markdown b/website/docs/r/sql_database_instance.html.markdown -index 245e5c0a0..914eca622 100644 +index 717ac3d67..b896b045b 100644 --- a/website/docs/r/sql_database_instance.html.markdown +++ b/website/docs/r/sql_database_instance.html.markdown @@ -10,12 +10,12 @@ Creates a new Google SQL Database Instance. For more information, see the [offic @@ -3908,7 +3909,7 @@ index baff78aae..fa73d8f49 100644 ## Example Usage diff --git a/website/docs/r/sql_user.html.markdown b/website/docs/r/sql_user.html.markdown -index 9f5f93b1f..03af29f90 100644 +index be4fd5be3..1aaa10360 100644 --- a/website/docs/r/sql_user.html.markdown +++ b/website/docs/r/sql_user.html.markdown @@ -9,8 +9,6 @@ description: |- @@ -4059,5 +4060,5 @@ index f56436c17..0ffee5cc6 100644 network = google_service_networking_connection.private_service_connection.network -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0011-Exclude-scripts-dir-from-provider-go-module.patch b/patches/0008-Exclude-scripts-dir-from-provider-go-module.patch similarity index 74% rename from patches/0011-Exclude-scripts-dir-from-provider-go-module.patch rename to patches/0008-Exclude-scripts-dir-from-provider-go-module.patch index 1aadb9c54f..195efc52fd 100644 --- a/patches/0011-Exclude-scripts-dir-from-provider-go-module.patch +++ b/patches/0008-Exclude-scripts-dir-from-provider-go-module.patch @@ -1,7 +1,7 @@ -From 2d3194e051fe2ec46e4e845e8e89d9033afe44f1 Mon Sep 17 00:00:00 2001 +From d26eb90269af5e9fb7fe12bb81f790b49d897189 Mon Sep 17 00:00:00 2001 From: Aaron Friel Date: Thu, 22 Jun 2023 09:45:36 -0700 -Subject: [PATCH 11/12] Exclude scripts dir from provider go module +Subject: [PATCH 8/9] Exclude scripts dir from provider go module This directory references a private Go module, which we cannot "go vet" or check. --- @@ -19,5 +19,5 @@ index 000000000..ddd2cb8ff + +go 1.20 -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/patches/0012-Remove-duplicative-resource-token.patch b/patches/0009-Remove-duplicative-resource-token.patch similarity index 75% rename from patches/0012-Remove-duplicative-resource-token.patch rename to patches/0009-Remove-duplicative-resource-token.patch index e3fb8c30e6..00cac31443 100644 --- a/patches/0012-Remove-duplicative-resource-token.patch +++ b/patches/0009-Remove-duplicative-resource-token.patch @@ -1,17 +1,17 @@ -From 6350b630b46b5d9477a87dd0cf08c545b877c4cb Mon Sep 17 00:00:00 2001 +From eb08d901cf5165f71332ded60724aa85412fa9fe Mon Sep 17 00:00:00 2001 From: Aaron Friel Date: Thu, 22 Jun 2023 16:38:12 -0700 -Subject: [PATCH 12/12] Remove duplicative resource token +Subject: [PATCH 9/9] Remove duplicative resource token --- google-beta/provider/provider.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/google-beta/provider/provider.go b/google-beta/provider/provider.go -index 9804a42cd..81eb53257 100644 +index 6944d78b0..9848cd5bb 100644 --- a/google-beta/provider/provider.go +++ b/google-beta/provider/provider.go -@@ -816,6 +816,15 @@ func Provider() *schema.Provider { +@@ -840,6 +840,15 @@ func Provider() *schema.Provider { func DatasourceMap() map[string]*schema.Resource { datasourceMap, _ := DatasourceMapWithErrors() @@ -28,5 +28,5 @@ index 9804a42cd..81eb53257 100644 } -- -2.39.1 +2.39.2 (Apple Git-143) diff --git a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json index ac9a975c25..a9357225e2 100644 --- a/provider/cmd/pulumi-resource-gcp/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-gcp/bridge-metadata.json @@ -1603,6 +1603,18 @@ } } }, + "google_backup_dr_management_server": { + "current": "gcp:backupdisasterrecovery/managementServer:ManagementServer", + "majorVersion": 6, + "fields": { + "management_uri": { + "maxItemsOne": false + }, + "networks": { + "maxItemsOne": false + } + } + }, "google_beyondcorp_app_connection": { "current": "gcp:beyondcorp/appConnection:AppConnection", "majorVersion": 6, @@ -6161,6 +6173,70 @@ "fields": { "ddos_protection_config": { "maxItemsOne": true + }, + "user_defined_fields": { + "maxItemsOne": false + } + } + }, + "google_compute_region_security_policy_rule": { + "current": "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", + "majorVersion": 6, + "fields": { + "match": { + "maxItemsOne": true, + "elem": { + "fields": { + "config": { + "maxItemsOne": true, + "elem": { + "fields": { + "src_ip_ranges": { + "maxItemsOne": false + } + } + } + } + } + } + }, + "network_match": { + "maxItemsOne": true, + "elem": { + "fields": { + "dest_ip_ranges": { + "maxItemsOne": false + }, + "dest_ports": { + "maxItemsOne": false + }, + "ip_protocols": { + "maxItemsOne": false + }, + "src_asns": { + "maxItemsOne": false + }, + "src_ip_ranges": { + "maxItemsOne": false + }, + "src_ports": { + "maxItemsOne": false + }, + "src_region_codes": { + "maxItemsOne": false + }, + "user_defined_fields": { + "maxItemsOne": false, + "elem": { + "fields": { + "values": { + "maxItemsOne": false + } + } + } + } + } + } } } }, @@ -6821,6 +6897,9 @@ } } } + }, + "user_ip_request_headers": { + "maxItemsOne": false } } } @@ -11856,6 +11935,9 @@ } } }, + "scaling_config": { + "maxItemsOne": true + }, "telemetry_config": { "maxItemsOne": true } @@ -24522,6 +24604,7 @@ "gcp:artifactregistry/repositoryIamMember:RepositoryIamMember": 0, "gcp:artifactregistry/repositoryIamPolicy:RepositoryIamPolicy": 0, "gcp:assuredworkloads/workload:Workload": 0, + "gcp:backupdisasterrecovery/managementServer:ManagementServer": 0, "gcp:beyondcorp/appConnection:AppConnection": 0, "gcp:beyondcorp/appConnector:AppConnector": 0, "gcp:beyondcorp/appGateway:AppGateway": 0, @@ -24733,6 +24816,7 @@ "gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule": 0, "gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig": 0, "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": 0, + "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": 0, "gcp:compute/regionSslCertificate:RegionSslCertificate": 0, "gcp:compute/regionSslPolicy:RegionSslPolicy": 0, "gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy": 0, @@ -25558,6 +25642,7 @@ "gcp:artifactregistry/repositoryIamMember:RepositoryIamMember": "google_artifact_registry_repository_iam_member", "gcp:artifactregistry/repositoryIamPolicy:RepositoryIamPolicy": "google_artifact_registry_repository_iam_policy", "gcp:assuredworkloads/workload:Workload": "google_assured_workloads_workload", + "gcp:backupdisasterrecovery/managementServer:ManagementServer": "google_backup_dr_management_server", "gcp:beyondcorp/appConnection:AppConnection": "google_beyondcorp_app_connection", "gcp:beyondcorp/appConnector:AppConnector": "google_beyondcorp_app_connector", "gcp:beyondcorp/appGateway:AppGateway": "google_beyondcorp_app_gateway", @@ -25769,6 +25854,7 @@ "gcp:compute/regionNetworkFirewallPolicyRule:RegionNetworkFirewallPolicyRule": "google_compute_region_network_firewall_policy_rule", "gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig": "google_compute_region_per_instance_config", "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": "google_compute_region_security_policy", + "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": "google_compute_region_security_policy_rule", "gcp:compute/regionSslCertificate:RegionSslCertificate": "google_compute_region_ssl_certificate", "gcp:compute/regionSslPolicy:RegionSslPolicy": "google_compute_region_ssl_policy", "gcp:compute/regionTargetHttpProxy:RegionTargetHttpProxy": "google_compute_region_target_http_proxy", @@ -27548,6 +27634,16 @@ "provisionedResourcesParent": "provisioned_resources_parent", "resourceSettings": "resource_settings" }, + "gcp:backupdisasterrecovery/ManagementServerManagementUri:ManagementServerManagementUri": { + "webUi": "web_ui" + }, + "gcp:backupdisasterrecovery/ManagementServerNetwork:ManagementServerNetwork": { + "peeringMode": "peering_mode" + }, + "gcp:backupdisasterrecovery/managementServer:ManagementServer": { + "managementUris": "management_uri", + "oauth2ClientId": "oauth2_client_id" + }, "gcp:beyondcorp/AppConnectionGateway:AppConnectionGateway": { "appGateway": "app_gateway", "ingressPort": "ingress_port" @@ -29040,6 +29136,7 @@ "waitFors": "wait_for" }, "gcp:cloudbuild/TriggerGitFileSource:TriggerGitFileSource": { + "bitbucketServerConfig": "bitbucket_server_config", "githubEnterpriseConfig": "github_enterprise_config", "repoType": "repo_type" }, @@ -29068,6 +29165,7 @@ "invertRegex": "invert_regex" }, "gcp:cloudbuild/TriggerSourceToBuild:TriggerSourceToBuild": { + "bitbucketServerConfig": "bitbucket_server_config", "githubEnterpriseConfig": "github_enterprise_config", "repoType": "repo_type" }, @@ -29189,6 +29287,7 @@ "waitFors": "wait_for" }, "gcp:cloudbuild/getTriggerGitFileSource:getTriggerGitFileSource": { + "bitbucketServerConfig": "bitbucket_server_config", "githubEnterpriseConfig": "github_enterprise_config", "repoType": "repo_type" }, @@ -29219,6 +29318,7 @@ "invertRegex": "invert_regex" }, "gcp:cloudbuild/getTriggerSourceToBuild:getTriggerSourceToBuild": { + "bitbucketServerConfig": "bitbucket_server_config", "githubEnterpriseConfig": "github_enterprise_config", "repoType": "repo_type" }, @@ -30035,11 +30135,16 @@ "gcp:cloudrunv2/job:Job": { "binaryAuthorization": "binary_authorization", "clientVersion": "client_version", + "createTime": "create_time", + "deleteTime": "delete_time", "executionCount": "execution_count", + "expireTime": "expire_time", + "lastModifier": "last_modifier", "latestCreatedExecutions": "latest_created_execution", "launchStage": "launch_stage", "observedGeneration": "observed_generation", - "terminalConditions": "terminal_condition" + "terminalConditions": "terminal_condition", + "updateTime": "update_time" }, "gcp:cloudrunv2/jobIamPolicy:JobIamPolicy": { "policyData": "policy_data" @@ -30047,14 +30152,19 @@ "gcp:cloudrunv2/service:Service": { "binaryAuthorization": "binary_authorization", "clientVersion": "client_version", + "createTime": "create_time", "customAudiences": "custom_audiences", + "deleteTime": "delete_time", + "expireTime": "expire_time", + "lastModifier": "last_modifier", "latestCreatedRevision": "latest_created_revision", "latestReadyRevision": "latest_ready_revision", "launchStage": "launch_stage", "observedGeneration": "observed_generation", "terminalConditions": "terminal_condition", "trafficStatuses": "traffic_statuses", - "traffics": "traffic" + "traffics": "traffic", + "updateTime": "update_time" }, "gcp:cloudrunv2/serviceIamPolicy:ServiceIamPolicy": { "policyData": "policy_data" @@ -30176,6 +30286,7 @@ "cloudComposerConnectionSubnetwork": "cloud_composer_connection_subnetwork", "cloudComposerNetworkIpv4CidrBlock": "cloud_composer_network_ipv4_cidr_block", "cloudSqlIpv4CidrBlock": "cloud_sql_ipv4_cidr_block", + "connectionType": "connection_type", "enablePrivateEndpoint": "enable_private_endpoint", "enablePrivatelyUsedPublicIps": "enable_privately_used_public_ips", "masterIpv4CidrBlock": "master_ipv4_cidr_block", @@ -30283,6 +30394,7 @@ "cloudComposerConnectionSubnetwork": "cloud_composer_connection_subnetwork", "cloudComposerNetworkIpv4CidrBlock": "cloud_composer_network_ipv4_cidr_block", "cloudSqlIpv4CidrBlock": "cloud_sql_ipv4_cidr_block", + "connectionType": "connection_type", "enablePrivateEndpoint": "enable_private_endpoint", "enablePrivatelyUsedPublicIps": "enable_privately_used_public_ips", "masterIpv4CidrBlock": "master_ipv4_cidr_block", @@ -30871,6 +30983,7 @@ "diskName": "disk_name", "diskSizeGb": "disk_size_gb", "diskType": "disk_type", + "provisionedIops": "provisioned_iops", "resourcePolicies": "resource_policies", "sourceImage": "source_image", "sourceImageEncryptionKey": "source_image_encryption_key", @@ -31229,6 +31342,7 @@ "diskName": "disk_name", "diskSizeGb": "disk_size_gb", "diskType": "disk_type", + "provisionedIops": "provisioned_iops", "resourcePolicies": "resource_policies", "sourceImage": "source_image", "sourceImageEncryptionKey": "source_image_encryption_key", @@ -31345,6 +31459,22 @@ "gcp:compute/RegionSecurityPolicyDdosProtectionConfig:RegionSecurityPolicyDdosProtectionConfig": { "ddosProtection": "ddos_protection" }, + "gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch": { + "versionedExpr": "versioned_expr" + }, + "gcp:compute/RegionSecurityPolicyRuleMatchConfig:RegionSecurityPolicyRuleMatchConfig": { + "srcIpRanges": "src_ip_ranges" + }, + "gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch": { + "destIpRanges": "dest_ip_ranges", + "destPorts": "dest_ports", + "ipProtocols": "ip_protocols", + "srcAsns": "src_asns", + "srcIpRanges": "src_ip_ranges", + "srcPorts": "src_ports", + "srcRegionCodes": "src_region_codes", + "userDefinedFields": "user_defined_fields" + }, "gcp:compute/RegionUrlMapDefaultRouteAction:RegionUrlMapDefaultRouteAction": { "corsPolicy": "cors_policy", "faultInjectionPolicy": "fault_injection_policy", @@ -31729,7 +31859,8 @@ "gcp:compute/SecurityPolicyAdvancedOptionsConfig:SecurityPolicyAdvancedOptionsConfig": { "jsonCustomConfig": "json_custom_config", "jsonParsing": "json_parsing", - "logLevel": "log_level" + "logLevel": "log_level", + "userIpRequestHeaders": "user_ip_request_headers" }, "gcp:compute/SecurityPolicyAdvancedOptionsConfigJsonCustomConfig:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig": { "contentTypes": "content_types" @@ -32888,6 +33019,7 @@ "diskName": "disk_name", "diskSizeGb": "disk_size_gb", "diskType": "disk_type", + "provisionedIops": "provisioned_iops", "resourcePolicies": "resource_policies", "sourceImage": "source_image", "sourceImageEncryptionKeys": "source_image_encryption_key", @@ -33038,6 +33170,7 @@ "diskName": "disk_name", "diskSizeGb": "disk_size_gb", "diskType": "disk_type", + "provisionedIops": "provisioned_iops", "resourcePolicies": "resource_policies", "sourceImage": "source_image", "sourceImageEncryptionKeys": "source_image_encryption_key", @@ -33861,7 +33994,12 @@ "ddosProtectionConfig": "ddos_protection_config", "policyId": "policy_id", "selfLink": "self_link", - "selfLinkWithPolicyId": "self_link_with_policy_id" + "selfLinkWithPolicyId": "self_link_with_policy_id", + "userDefinedFields": "user_defined_fields" + }, + "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": { + "networkMatch": "network_match", + "securityPolicy": "security_policy" }, "gcp:compute/regionSslCertificate:RegionSslCertificate": { "certificateId": "certificate_id", @@ -37307,6 +37445,10 @@ "gcp:dataproc/MetastoreServiceNetworkConfigConsumer:MetastoreServiceNetworkConfigConsumer": { "endpointUri": "endpoint_uri" }, + "gcp:dataproc/MetastoreServiceScalingConfig:MetastoreServiceScalingConfig": { + "instanceSize": "instance_size", + "scalingFactor": "scaling_factor" + }, "gcp:dataproc/MetastoreServiceTelemetryConfig:MetastoreServiceTelemetryConfig": { "logFormat": "log_format" }, @@ -37660,6 +37802,7 @@ "metadataIntegration": "metadata_integration", "networkConfig": "network_config", "releaseChannel": "release_channel", + "scalingConfig": "scaling_config", "serviceId": "service_id", "stateMessage": "state_message", "telemetryConfig": "telemetry_config" @@ -39137,6 +39280,9 @@ "autoResizeConfig": "auto_resize_config", "vsphereConfigs": "vsphere_config" }, + "gcp:gkeonprem/VMwareClusterControlPlaneNodeVsphereConfig:VMwareClusterControlPlaneNodeVsphereConfig": { + "storagePolicyName": "storage_policy_name" + }, "gcp:gkeonprem/VMwareClusterDataplaneV2:VMwareClusterDataplaneV2": { "advancedNetworking": "advanced_networking", "dataplaneV2Enabled": "dataplane_v2_enabled", @@ -39205,7 +39351,8 @@ }, "gcp:gkeonprem/VMwareClusterVcenter:VMwareClusterVcenter": { "caCertData": "ca_cert_data", - "resourcePool": "resource_pool" + "resourcePool": "resource_pool", + "storagePolicyName": "storage_policy_name" }, "gcp:gkeonprem/VMwareNodePoolConfig:VMwareNodePoolConfig": { "bootDiskSizeGb": "boot_disk_size_gb", @@ -39386,6 +39533,7 @@ }, "gcp:healthcare/fhirStore:FhirStore": { "complexDataTypeReferenceParsing": "complex_data_type_reference_parsing", + "defaultSearchHandlingStrict": "default_search_handling_strict", "disableReferentialIntegrity": "disable_referential_integrity", "disableResourceVersioning": "disable_resource_versioning", "enableHistoryImport": "enable_history_import", @@ -39784,6 +39932,7 @@ "appEngineCustomEndpoint": "app_engine_custom_endpoint", "artifactRegistryCustomEndpoint": "artifact_registry_custom_endpoint", "assuredWorkloadsCustomEndpoint": "assured_workloads_custom_endpoint", + "backupDrCustomEndpoint": "backup_dr_custom_endpoint", "beyondcorpCustomEndpoint": "beyondcorp_custom_endpoint", "bigQueryCustomEndpoint": "big_query_custom_endpoint", "bigqueryAnalyticsHubCustomEndpoint": "bigquery_analytics_hub_custom_endpoint", @@ -42085,7 +42234,8 @@ "expireTime": "expire_time", "replications": "replication", "rotations": "rotation", - "secretId": "secret_id" + "secretId": "secret_id", + "versionAliases": "version_aliases" }, "gcp:secretmanager/getSecretIamPolicy:getSecretIamPolicy": { "policyData": "policy_data", @@ -42115,7 +42265,8 @@ "gcp:secretmanager/secret:Secret": { "createTime": "create_time", "expireTime": "expire_time", - "secretId": "secret_id" + "secretId": "secret_id", + "versionAliases": "version_aliases" }, "gcp:secretmanager/secretIamBinding:SecretIamBinding": { "secretId": "secret_id" @@ -43609,6 +43760,7 @@ "appEngineCustomEndpoint": "app_engine_custom_endpoint", "artifactRegistryCustomEndpoint": "artifact_registry_custom_endpoint", "assuredWorkloadsCustomEndpoint": "assured_workloads_custom_endpoint", + "backupDrCustomEndpoint": "backup_dr_custom_endpoint", "beyondcorpCustomEndpoint": "beyondcorp_custom_endpoint", "bigQueryCustomEndpoint": "big_query_custom_endpoint", "bigqueryAnalyticsHubCustomEndpoint": "bigquery_analytics_hub_custom_endpoint", diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index 105433b876..2f32c82eda 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -27,6 +27,7 @@ "appengine": "AppEngine", "artifactregistry": "ArtifactRegistry", "assuredworkloads": "AssuredWorkloads", + "backupdisasterrecovery": "BackupDisasterRecovery", "beyondcorp": "Beyondcorp", "bigquery": "BigQuery", "bigqueryanalyticshub": "BigQueryAnalyticsHub", @@ -187,6 +188,9 @@ "assuredWorkloadsCustomEndpoint": { "type": "string" }, + "backupDrCustomEndpoint": { + "type": "string" + }, "batching": { "$ref": "#/types/gcp:config/batching:batching" }, @@ -2310,6 +2314,9 @@ "language": { "nodejs": { "requiredOutputs": [ + "backupWindow", + "enabled", + "location", "weeklySchedule" ] } @@ -4875,6 +4882,45 @@ }, "type": "object" }, + "gcp:backupdisasterrecovery/ManagementServerManagementUri:ManagementServerManagementUri": { + "properties": { + "api": { + "type": "string", + "description": "(Output)\nThe management console api endpoint.\n" + }, + "webUi": { + "type": "string", + "description": "(Output)\nThe management console webUi.\n" + } + }, + "type": "object", + "language": { + "nodejs": { + "requiredOutputs": [ + "api", + "webUi" + ] + } + } + }, + "gcp:backupdisasterrecovery/ManagementServerNetwork:ManagementServerNetwork": { + "properties": { + "network": { + "type": "string", + "description": "Network with format `projects/{{project_id}}/global/networks/{{network_id}}`\n", + "willReplaceOnChanges": true + }, + "peeringMode": { + "type": "string", + "description": "Type of Network peeringMode\nDefault value is `PRIVATE_SERVICE_ACCESS`.\nPossible values are: `PRIVATE_SERVICE_ACCESS`.\n\n- - -\n", + "willReplaceOnChanges": true + } + }, + "type": "object", + "required": [ + "network" + ] + }, "gcp:beyondcorp/AppConnectionApplicationEndpoint:AppConnectionApplicationEndpoint": { "properties": { "host": { @@ -11892,6 +11938,10 @@ }, "gcp:cloudbuild/TriggerGitFileSource:TriggerGitFileSource": { "properties": { + "bitbucketServerConfig": { + "type": "string", + "description": "The full resource name of the bitbucket server config.\nFormat: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}.\n" + }, "githubEnterpriseConfig": { "type": "string", "description": "The full resource name of the github enterprise config.\nFormat: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}.\n" @@ -12071,6 +12121,10 @@ }, "gcp:cloudbuild/TriggerSourceToBuild:TriggerSourceToBuild": { "properties": { + "bitbucketServerConfig": { + "type": "string", + "description": "The full resource name of the bitbucket server config.\nFormat: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}.\n" + }, "githubEnterpriseConfig": { "type": "string", "description": "The full resource name of the github enterprise config.\nFormat: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}.\n" @@ -12829,6 +12883,9 @@ }, "gcp:cloudbuild/getTriggerGitFileSource:getTriggerGitFileSource": { "properties": { + "bitbucketServerConfig": { + "type": "string" + }, "githubEnterpriseConfig": { "type": "string" }, @@ -12850,6 +12907,7 @@ }, "type": "object", "required": [ + "bitbucketServerConfig", "githubEnterpriseConfig", "path", "repoType", @@ -13057,6 +13115,9 @@ }, "gcp:cloudbuild/getTriggerSourceToBuild:getTriggerSourceToBuild": { "properties": { + "bitbucketServerConfig": { + "type": "string" + }, "githubEnterpriseConfig": { "type": "string" }, @@ -13075,6 +13136,7 @@ }, "type": "object", "required": [ + "bitbucketServerConfig", "githubEnterpriseConfig", "ref", "repoType", @@ -19506,6 +19568,10 @@ "type": "string", "willReplaceOnChanges": true }, + "connectionType": { + "type": "string", + "willReplaceOnChanges": true + }, "enablePrivateEndpoint": { "type": "boolean", "willReplaceOnChanges": true @@ -19530,6 +19596,7 @@ "cloudComposerConnectionSubnetwork", "cloudComposerNetworkIpv4CidrBlock", "cloudSqlIpv4CidrBlock", + "connectionType", "enablePrivatelyUsedPublicIps", "masterIpv4CidrBlock", "webServerIpv4CidrBlock" @@ -20072,6 +20139,9 @@ "cloudSqlIpv4CidrBlock": { "type": "string" }, + "connectionType": { + "type": "string" + }, "enablePrivateEndpoint": { "type": "boolean" }, @@ -20090,6 +20160,7 @@ "cloudComposerConnectionSubnetwork", "cloudComposerNetworkIpv4CidrBlock", "cloudSqlIpv4CidrBlock", + "connectionType", "enablePrivateEndpoint", "enablePrivatelyUsedPublicIps", "masterIpv4CidrBlock", @@ -24551,6 +24622,10 @@ "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n", "willReplaceOnChanges": true }, + "provisionedIops": { + "type": "integer", + "willReplaceOnChanges": true + }, "resourcePolicies": { "type": "string", "description": "- A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.\n", @@ -24597,6 +24672,7 @@ "diskType", "interface", "mode", + "provisionedIops", "sourceImage", "type" ] @@ -27230,6 +27306,10 @@ "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n", "willReplaceOnChanges": true }, + "provisionedIops": { + "type": "integer", + "willReplaceOnChanges": true + }, "resourcePolicies": { "type": "string", "description": "- A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.\n", @@ -27276,6 +27356,7 @@ "diskType", "interface", "mode", + "provisionedIops", "sourceImage", "type" ] @@ -28104,6 +28185,136 @@ "ddosProtection" ] }, + "gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch": { + "properties": { + "config": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatchConfig:RegionSecurityPolicyRuleMatchConfig", + "description": "The configuration options available when specifying versionedExpr.\nThis field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified.\nStructure is documented below.\n" + }, + "versionedExpr": { + "type": "string", + "description": "Preconfigured versioned expression. If this field is specified, config must also be specified.\nAvailable preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config.\nPossible values are: `SRC_IPS_V1`.\n" + } + }, + "type": "object" + }, + "gcp:compute/RegionSecurityPolicyRuleMatchConfig:RegionSecurityPolicyRuleMatchConfig": { + "properties": { + "srcIpRanges": { + "type": "array", + "items": { + "type": "string" + }, + "description": "CIDR IP address range. Maximum number of srcIpRanges allowed is 10.\n" + } + }, + "type": "object" + }, + "gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch": { + "properties": { + "destIpRanges": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format.\n" + }, + "destPorts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. \"80\") or range (e.g. \"0-1023\").\n" + }, + "ipProtocols": { + "type": "array", + "items": { + "type": "string" + }, + "description": "IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. \"6\"), range (e.g. \"253-254\"), or one of the following protocol names: \"tcp\", \"udp\", \"icmp\", \"esp\", \"ah\", \"ipip\", or \"sctp\".\n" + }, + "srcAsns": { + "type": "array", + "items": { + "type": "integer" + }, + "description": "BGP Autonomous System Number associated with the source IP address.\n" + }, + "srcIpRanges": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format.\n" + }, + "srcPorts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. \"80\") or range (e.g. \"0-1023\").\n" + }, + "srcRegionCodes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address.\n" + }, + "userDefinedFields": { + "type": "array", + "items": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleNetworkMatchUserDefinedField:RegionSecurityPolicyRuleNetworkMatchUserDefinedField" + }, + "description": "User-defined fields. Each element names a defined field and lists the matching values for that field.\nStructure is documented below.\n" + } + }, + "type": "object" + }, + "gcp:compute/RegionSecurityPolicyRuleNetworkMatchUserDefinedField:RegionSecurityPolicyRuleNetworkMatchUserDefinedField": { + "properties": { + "name": { + "type": "string", + "description": "Name of the user-defined field, as given in the definition.\n" + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with \"0x\") number (e.g. \"64\") or range (e.g. \"0x400-0x7ff\").\n" + } + }, + "type": "object" + }, + "gcp:compute/RegionSecurityPolicyUserDefinedField:RegionSecurityPolicyUserDefinedField": { + "properties": { + "base": { + "type": "string", + "description": "The base relative to which 'offset' is measured. Possible values are:\n- IPV4: Points to the beginning of the IPv4 header.\n- IPV6: Points to the beginning of the IPv6 header.\n- TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments.\n- UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments.\nPossible values are: `IPV4`, `IPV6`, `TCP`, `UDP`.\n" + }, + "mask": { + "type": "string", + "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching.\nEncoded as a hexadecimal number (starting with \"0x\").\nThe last byte of the field (in network byte order) corresponds to the least significant byte of the mask.\n" + }, + "name": { + "type": "string", + "description": "The name of this field. Must be unique within the policy.\n" + }, + "offset": { + "type": "integer", + "description": "Offset of the first byte of the field (in network byte order) relative to 'base'.\n" + }, + "size": { + "type": "integer", + "description": "Size of the field in bytes. Valid values: 1-4.\n" + } + }, + "type": "object", + "required": [ + "base" + ] + }, "gcp:compute/RegionUrlMapDefaultRouteAction:RegionUrlMapDefaultRouteAction": { "properties": { "corsPolicy": { @@ -30368,6 +30579,13 @@ "logLevel": { "type": "string", "description": "Log level to use. Defaults to `NORMAL`.\n* NORMAL - Normal log level.\n* VERBOSE - Verbose log level.\n" + }, + "userIpRequestHeaders": { + "type": "array", + "items": { + "type": "string" + }, + "description": ") An optional list of case-insensitive request header names to use for resolving the callers client IP address.\n" } }, "type": "object", @@ -35321,6 +35539,9 @@ "type": "string", "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n" }, + "provisionedIops": { + "type": "integer" + }, "resourcePolicies": { "type": "array", "items": { @@ -35368,6 +35589,7 @@ "interface", "labels", "mode", + "provisionedIops", "resourcePolicies", "source", "sourceImage", @@ -36019,6 +36241,9 @@ "type": "string", "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n" }, + "provisionedIops": { + "type": "integer" + }, "resourcePolicies": { "type": "array", "items": { @@ -36066,6 +36291,7 @@ "interface", "labels", "mode", + "provisionedIops", "resourcePolicies", "source", "sourceImage", @@ -45497,6 +45723,10 @@ "type": "string", "description": "The database engine type and version.\nCurrently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion\n" }, + "edition": { + "type": "string", + "description": "The edition of the given Cloud SQL instance.\nPossible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`.\n" + }, "ipConfig": { "$ref": "#/types/gcp:databasemigrationservice/ConnectionProfileCloudsqlSettingsIpConfig:ConnectionProfileCloudsqlSettingsIpConfig", "description": "The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.\nStructure is documented below.\n" @@ -55813,6 +56043,19 @@ } } }, + "gcp:dataproc/MetastoreServiceScalingConfig:MetastoreServiceScalingConfig": { + "properties": { + "instanceSize": { + "type": "string", + "description": "Metastore instance sizes.\nPossible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`.\n" + }, + "scalingFactor": { + "type": "number", + "description": "Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0.\n" + } + }, + "type": "object" + }, "gcp:dataproc/MetastoreServiceTelemetryConfig:MetastoreServiceTelemetryConfig": { "properties": { "logFormat": { @@ -60012,10 +60255,7 @@ } } }, - "type": "object", - "required": [ - "networks" - ] + "type": "object" }, "gcp:dns/ManagedZonePrivateVisibilityConfigGkeCluster:ManagedZonePrivateVisibilityConfigGkeCluster": { "properties": { @@ -60185,7 +60425,7 @@ }, "loadBalancerType": { "type": "string", - "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\"]\n" + "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\", \"globalL7ilb\"]\n" }, "networkUrl": { "type": "string", @@ -60291,7 +60531,7 @@ }, "loadBalancerType": { "type": "string", - "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\"]\n" + "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\", \"globalL7ilb\"]\n" }, "networkUrl": { "type": "string", @@ -60347,7 +60587,7 @@ }, "loadBalancerType": { "type": "string", - "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\"]\n" + "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\", \"globalL7ilb\"]\n" }, "networkUrl": { "type": "string", @@ -60426,7 +60666,7 @@ }, "loadBalancerType": { "type": "string", - "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\"]\n" + "description": "The type of load balancer. This value is case-sensitive. Possible values: [\"regionalL4ilb\", \"regionalL7ilb\", \"globalL7ilb\"]\n" }, "networkUrl": { "type": "string", @@ -64570,14 +64810,19 @@ "properties": { "datastore": { "type": "string", - "description": "(Output)\nThe Vsphere datastore used by the Control Plane Node.\n\n- - -\n" + "description": "(Output)\nThe Vsphere datastore used by the Control Plane Node.\n" + }, + "storagePolicyName": { + "type": "string", + "description": "(Output)\nThe Vsphere storage policy used by the control plane Node.\n\n- - -\n" } }, "type": "object", "language": { "nodejs": { "requiredOutputs": [ - "datastore" + "datastore", + "storagePolicyName" ] } } @@ -65138,7 +65383,7 @@ }, "datastore": { "type": "string", - "description": "(Output)\nThe Vsphere datastore used by the Control Plane Node.\n\n- - -\n" + "description": "(Output)\nThe Vsphere datastore used by the Control Plane Node.\n" }, "folder": { "type": "string", @@ -65147,6 +65392,10 @@ "resourcePool": { "type": "string", "description": "(Output)\nThe name of the vCenter resource pool for the user cluster.\n" + }, + "storagePolicyName": { + "type": "string", + "description": "(Output)\nThe Vsphere storage policy used by the control plane Node.\n\n- - -\n" } }, "type": "object", @@ -65159,7 +65408,8 @@ "datacenter", "datastore", "folder", - "resourcePool" + "resourcePool", + "storagePolicyName" ] } } @@ -82135,6 +82385,9 @@ "assuredWorkloadsCustomEndpoint": { "type": "string" }, + "backupDrCustomEndpoint": { + "type": "string" + }, "batching": { "$ref": "#/types/gcp:index/ProviderBatching:ProviderBatching" }, @@ -82578,6 +82831,9 @@ "assuredWorkloadsCustomEndpoint": { "type": "string" }, + "backupDrCustomEndpoint": { + "type": "string" + }, "batching": { "$ref": "#/types/gcp:index/ProviderBatching:ProviderBatching" }, @@ -85581,7 +85837,7 @@ } }, "gcp:apigateway/apiConfig:ApiConfig": { - "description": "An API Configuration is an association of an API Controller Config and a Gateway Config\n\nTo get more information about ApiConfig, see:\n\n* [API documentation](https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis.configs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/api-gateway/docs/creating-api-config)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Apigateway Api Config Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst apiCfgApi = new gcp.apigateway.Api(\"apiCfgApi\", {apiId: \"my-api\"}, {\n provider: google_beta,\n});\nconst apiCfgApiConfig = new gcp.apigateway.ApiConfig(\"apiCfgApiConfig\", {\n api: apiCfgApi.apiId,\n apiConfigId: \"my-config\",\n openapiDocuments: [{\n document: {\n path: \"spec.yaml\",\n contents: Buffer.from(fs.readFileSync(\"test-fixtures/apigateway/openapi.yaml\"), 'binary').toString('base64'),\n },\n }],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport base64\nimport pulumi_gcp as gcp\n\napi_cfg_api = gcp.apigateway.Api(\"apiCfgApi\", api_id=\"my-api\",\nopts=pulumi.ResourceOptions(provider=google_beta))\napi_cfg_api_config = gcp.apigateway.ApiConfig(\"apiCfgApiConfig\",\n api=api_cfg_api.api_id,\n api_config_id=\"my-config\",\n openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs(\n document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs(\n path=\"spec.yaml\",\n contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())(\"test-fixtures/apigateway/openapi.yaml\"),\n ),\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\n\tprivate static string ReadFileBase64(string path) {\n\t\treturn Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path)));\n\t}\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var apiCfgApi = new Gcp.ApiGateway.Api(\"apiCfgApi\", new()\n {\n ApiId = \"my-api\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var apiCfgApiConfig = new Gcp.ApiGateway.ApiConfig(\"apiCfgApiConfig\", new()\n {\n Api = apiCfgApi.ApiId,\n ApiConfigId = \"my-config\",\n OpenapiDocuments = new[]\n {\n new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentArgs\n {\n Document = new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentDocumentArgs\n {\n Path = \"spec.yaml\",\n Contents = ReadFileBase64(\"test-fixtures/apigateway/openapi.yaml\"),\n },\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/base64\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc filebase64OrPanic(path string) pulumi.StringPtrInput {\n\tif fileData, err := os.ReadFile(path); err == nil {\n\t\treturn pulumi.String(base64.StdEncoding.EncodeToString(fileData[:]))\n\t} else {\n\t\tpanic(err.Error())\n\t}\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapiCfgApi, err := apigateway.NewApi(ctx, \"apiCfgApi\", \u0026apigateway.ApiArgs{\n\t\t\tApiId: pulumi.String(\"my-api\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewApiConfig(ctx, \"apiCfgApiConfig\", \u0026apigateway.ApiConfigArgs{\n\t\t\tApi: apiCfgApi.ApiId,\n\t\t\tApiConfigId: pulumi.String(\"my-config\"),\n\t\t\tOpenapiDocuments: apigateway.ApiConfigOpenapiDocumentArray{\n\t\t\t\t\u0026apigateway.ApiConfigOpenapiDocumentArgs{\n\t\t\t\t\tDocument: \u0026apigateway.ApiConfigOpenapiDocumentDocumentArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"spec.yaml\"),\n\t\t\t\t\t\tContents: filebase64OrPanic(\"test-fixtures/apigateway/openapi.yaml\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apigateway.Api;\nimport com.pulumi.gcp.apigateway.ApiArgs;\nimport com.pulumi.gcp.apigateway.ApiConfig;\nimport com.pulumi.gcp.apigateway.ApiConfigArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentDocumentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var apiCfgApi = new Api(\"apiCfgApi\", ApiArgs.builder() \n .apiId(\"my-api\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var apiCfgApiConfig = new ApiConfig(\"apiCfgApiConfig\", ApiConfigArgs.builder() \n .api(apiCfgApi.apiId())\n .apiConfigId(\"my-config\")\n .openapiDocuments(ApiConfigOpenapiDocumentArgs.builder()\n .document(ApiConfigOpenapiDocumentDocumentArgs.builder()\n .path(\"spec.yaml\")\n .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get(\"test-fixtures/apigateway/openapi.yaml\"))))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nApiConfig can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:apigateway/apiConfig:ApiConfig default projects/{{project}}/locations/global/apis/{{api}}/configs/{{api_config_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/apiConfig:ApiConfig default {{project}}/{{api}}/{{api_config_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/apiConfig:ApiConfig default {{api}}/{{api_config_id}}\n```\n\n ", + "description": "An API Configuration is an association of an API Controller Config and a Gateway Config\n\nTo get more information about ApiConfig, see:\n\n* [API documentation](https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis.configs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/api-gateway/docs/creating-api-config)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Apigateway Api Config Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst apiCfgApi = new gcp.apigateway.Api(\"apiCfgApi\", {apiId: \"my-api\"}, {\n provider: google_beta,\n});\nconst apiCfgApiConfig = new gcp.apigateway.ApiConfig(\"apiCfgApiConfig\", {\n api: apiCfgApi.apiId,\n apiConfigId: \"my-config\",\n openapiDocuments: [{\n document: {\n path: \"spec.yaml\",\n contents: Buffer.from(fs.readFileSync(\"test-fixtures/openapi.yaml\"), 'binary').toString('base64'),\n },\n }],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport base64\nimport pulumi_gcp as gcp\n\napi_cfg_api = gcp.apigateway.Api(\"apiCfgApi\", api_id=\"my-api\",\nopts=pulumi.ResourceOptions(provider=google_beta))\napi_cfg_api_config = gcp.apigateway.ApiConfig(\"apiCfgApiConfig\",\n api=api_cfg_api.api_id,\n api_config_id=\"my-config\",\n openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs(\n document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs(\n path=\"spec.yaml\",\n contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())(\"test-fixtures/openapi.yaml\"),\n ),\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\n\tprivate static string ReadFileBase64(string path) {\n\t\treturn Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path)));\n\t}\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var apiCfgApi = new Gcp.ApiGateway.Api(\"apiCfgApi\", new()\n {\n ApiId = \"my-api\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var apiCfgApiConfig = new Gcp.ApiGateway.ApiConfig(\"apiCfgApiConfig\", new()\n {\n Api = apiCfgApi.ApiId,\n ApiConfigId = \"my-config\",\n OpenapiDocuments = new[]\n {\n new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentArgs\n {\n Document = new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentDocumentArgs\n {\n Path = \"spec.yaml\",\n Contents = ReadFileBase64(\"test-fixtures/openapi.yaml\"),\n },\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/base64\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc filebase64OrPanic(path string) pulumi.StringPtrInput {\n\tif fileData, err := os.ReadFile(path); err == nil {\n\t\treturn pulumi.String(base64.StdEncoding.EncodeToString(fileData[:]))\n\t} else {\n\t\tpanic(err.Error())\n\t}\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapiCfgApi, err := apigateway.NewApi(ctx, \"apiCfgApi\", \u0026apigateway.ApiArgs{\n\t\t\tApiId: pulumi.String(\"my-api\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewApiConfig(ctx, \"apiCfgApiConfig\", \u0026apigateway.ApiConfigArgs{\n\t\t\tApi: apiCfgApi.ApiId,\n\t\t\tApiConfigId: pulumi.String(\"my-config\"),\n\t\t\tOpenapiDocuments: apigateway.ApiConfigOpenapiDocumentArray{\n\t\t\t\t\u0026apigateway.ApiConfigOpenapiDocumentArgs{\n\t\t\t\t\tDocument: \u0026apigateway.ApiConfigOpenapiDocumentDocumentArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"spec.yaml\"),\n\t\t\t\t\t\tContents: filebase64OrPanic(\"test-fixtures/openapi.yaml\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apigateway.Api;\nimport com.pulumi.gcp.apigateway.ApiArgs;\nimport com.pulumi.gcp.apigateway.ApiConfig;\nimport com.pulumi.gcp.apigateway.ApiConfigArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentDocumentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var apiCfgApi = new Api(\"apiCfgApi\", ApiArgs.builder() \n .apiId(\"my-api\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var apiCfgApiConfig = new ApiConfig(\"apiCfgApiConfig\", ApiConfigArgs.builder() \n .api(apiCfgApi.apiId())\n .apiConfigId(\"my-config\")\n .openapiDocuments(ApiConfigOpenapiDocumentArgs.builder()\n .document(ApiConfigOpenapiDocumentDocumentArgs.builder()\n .path(\"spec.yaml\")\n .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get(\"test-fixtures/openapi.yaml\"))))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nApiConfig can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:apigateway/apiConfig:ApiConfig default projects/{{project}}/locations/global/apis/{{api}}/configs/{{api_config_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/apiConfig:ApiConfig default {{project}}/{{api}}/{{api_config_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/apiConfig:ApiConfig default {{api}}/{{api_config_id}}\n```\n\n ", "properties": { "api": { "type": "string", @@ -86362,7 +86618,7 @@ } }, "gcp:apigateway/gateway:Gateway": { - "description": "A consumable API that can be used by multiple Gateways.\n\nTo get more information about Gateway, see:\n\n* [API documentation](https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/api-gateway/docs/quickstart)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Apigateway Gateway Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst apiGwApi = new gcp.apigateway.Api(\"apiGwApi\", {apiId: \"my-api\"}, {\n provider: google_beta,\n});\nconst apiGwApiConfig = new gcp.apigateway.ApiConfig(\"apiGwApiConfig\", {\n api: apiGwApi.apiId,\n apiConfigId: \"my-config\",\n openapiDocuments: [{\n document: {\n path: \"spec.yaml\",\n contents: Buffer.from(fs.readFileSync(\"test-fixtures/apigateway/openapi.yaml\"), 'binary').toString('base64'),\n },\n }],\n}, {\n provider: google_beta,\n});\nconst apiGwGateway = new gcp.apigateway.Gateway(\"apiGwGateway\", {\n apiConfig: apiGwApiConfig.id,\n gatewayId: \"my-gateway\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport base64\nimport pulumi_gcp as gcp\n\napi_gw_api = gcp.apigateway.Api(\"apiGwApi\", api_id=\"my-api\",\nopts=pulumi.ResourceOptions(provider=google_beta))\napi_gw_api_config = gcp.apigateway.ApiConfig(\"apiGwApiConfig\",\n api=api_gw_api.api_id,\n api_config_id=\"my-config\",\n openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs(\n document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs(\n path=\"spec.yaml\",\n contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())(\"test-fixtures/apigateway/openapi.yaml\"),\n ),\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\napi_gw_gateway = gcp.apigateway.Gateway(\"apiGwGateway\",\n api_config=api_gw_api_config.id,\n gateway_id=\"my-gateway\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\n\tprivate static string ReadFileBase64(string path) {\n\t\treturn Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path)));\n\t}\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var apiGwApi = new Gcp.ApiGateway.Api(\"apiGwApi\", new()\n {\n ApiId = \"my-api\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var apiGwApiConfig = new Gcp.ApiGateway.ApiConfig(\"apiGwApiConfig\", new()\n {\n Api = apiGwApi.ApiId,\n ApiConfigId = \"my-config\",\n OpenapiDocuments = new[]\n {\n new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentArgs\n {\n Document = new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentDocumentArgs\n {\n Path = \"spec.yaml\",\n Contents = ReadFileBase64(\"test-fixtures/apigateway/openapi.yaml\"),\n },\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var apiGwGateway = new Gcp.ApiGateway.Gateway(\"apiGwGateway\", new()\n {\n ApiConfig = apiGwApiConfig.Id,\n GatewayId = \"my-gateway\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/base64\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc filebase64OrPanic(path string) pulumi.StringPtrInput {\n\tif fileData, err := os.ReadFile(path); err == nil {\n\t\treturn pulumi.String(base64.StdEncoding.EncodeToString(fileData[:]))\n\t} else {\n\t\tpanic(err.Error())\n\t}\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapiGwApi, err := apigateway.NewApi(ctx, \"apiGwApi\", \u0026apigateway.ApiArgs{\n\t\t\tApiId: pulumi.String(\"my-api\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapiGwApiConfig, err := apigateway.NewApiConfig(ctx, \"apiGwApiConfig\", \u0026apigateway.ApiConfigArgs{\n\t\t\tApi: apiGwApi.ApiId,\n\t\t\tApiConfigId: pulumi.String(\"my-config\"),\n\t\t\tOpenapiDocuments: apigateway.ApiConfigOpenapiDocumentArray{\n\t\t\t\t\u0026apigateway.ApiConfigOpenapiDocumentArgs{\n\t\t\t\t\tDocument: \u0026apigateway.ApiConfigOpenapiDocumentDocumentArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"spec.yaml\"),\n\t\t\t\t\t\tContents: filebase64OrPanic(\"test-fixtures/apigateway/openapi.yaml\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewGateway(ctx, \"apiGwGateway\", \u0026apigateway.GatewayArgs{\n\t\t\tApiConfig: apiGwApiConfig.ID(),\n\t\t\tGatewayId: pulumi.String(\"my-gateway\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apigateway.Api;\nimport com.pulumi.gcp.apigateway.ApiArgs;\nimport com.pulumi.gcp.apigateway.ApiConfig;\nimport com.pulumi.gcp.apigateway.ApiConfigArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentDocumentArgs;\nimport com.pulumi.gcp.apigateway.Gateway;\nimport com.pulumi.gcp.apigateway.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var apiGwApi = new Api(\"apiGwApi\", ApiArgs.builder() \n .apiId(\"my-api\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var apiGwApiConfig = new ApiConfig(\"apiGwApiConfig\", ApiConfigArgs.builder() \n .api(apiGwApi.apiId())\n .apiConfigId(\"my-config\")\n .openapiDocuments(ApiConfigOpenapiDocumentArgs.builder()\n .document(ApiConfigOpenapiDocumentDocumentArgs.builder()\n .path(\"spec.yaml\")\n .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get(\"test-fixtures/apigateway/openapi.yaml\"))))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var apiGwGateway = new Gateway(\"apiGwGateway\", GatewayArgs.builder() \n .apiConfig(apiGwApiConfig.id())\n .gatewayId(\"my-gateway\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGateway can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default projects/{{project}}/locations/{{region}}/gateways/{{gateway_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default {{project}}/{{region}}/{{gateway_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default {{region}}/{{gateway_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default {{gateway_id}}\n```\n\n ", + "description": "A consumable API that can be used by multiple Gateways.\n\nTo get more information about Gateway, see:\n\n* [API documentation](https://cloud.google.com/api-gateway/docs/reference/rest/v1beta/projects.locations.apis)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/api-gateway/docs/quickstart)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Apigateway Gateway Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst apiGwApi = new gcp.apigateway.Api(\"apiGwApi\", {apiId: \"my-api\"}, {\n provider: google_beta,\n});\nconst apiGwApiConfig = new gcp.apigateway.ApiConfig(\"apiGwApiConfig\", {\n api: apiGwApi.apiId,\n apiConfigId: \"my-config\",\n openapiDocuments: [{\n document: {\n path: \"spec.yaml\",\n contents: Buffer.from(fs.readFileSync(\"test-fixtures/openapi.yaml\"), 'binary').toString('base64'),\n },\n }],\n}, {\n provider: google_beta,\n});\nconst apiGwGateway = new gcp.apigateway.Gateway(\"apiGwGateway\", {\n apiConfig: apiGwApiConfig.id,\n gatewayId: \"my-gateway\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport base64\nimport pulumi_gcp as gcp\n\napi_gw_api = gcp.apigateway.Api(\"apiGwApi\", api_id=\"my-api\",\nopts=pulumi.ResourceOptions(provider=google_beta))\napi_gw_api_config = gcp.apigateway.ApiConfig(\"apiGwApiConfig\",\n api=api_gw_api.api_id,\n api_config_id=\"my-config\",\n openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs(\n document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs(\n path=\"spec.yaml\",\n contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())(\"test-fixtures/openapi.yaml\"),\n ),\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\napi_gw_gateway = gcp.apigateway.Gateway(\"apiGwGateway\",\n api_config=api_gw_api_config.id,\n gateway_id=\"my-gateway\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\n\tprivate static string ReadFileBase64(string path) {\n\t\treturn Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path)));\n\t}\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var apiGwApi = new Gcp.ApiGateway.Api(\"apiGwApi\", new()\n {\n ApiId = \"my-api\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var apiGwApiConfig = new Gcp.ApiGateway.ApiConfig(\"apiGwApiConfig\", new()\n {\n Api = apiGwApi.ApiId,\n ApiConfigId = \"my-config\",\n OpenapiDocuments = new[]\n {\n new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentArgs\n {\n Document = new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentDocumentArgs\n {\n Path = \"spec.yaml\",\n Contents = ReadFileBase64(\"test-fixtures/openapi.yaml\"),\n },\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var apiGwGateway = new Gcp.ApiGateway.Gateway(\"apiGwGateway\", new()\n {\n ApiConfig = apiGwApiConfig.Id,\n GatewayId = \"my-gateway\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/base64\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/apigateway\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc filebase64OrPanic(path string) pulumi.StringPtrInput {\n\tif fileData, err := os.ReadFile(path); err == nil {\n\t\treturn pulumi.String(base64.StdEncoding.EncodeToString(fileData[:]))\n\t} else {\n\t\tpanic(err.Error())\n\t}\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapiGwApi, err := apigateway.NewApi(ctx, \"apiGwApi\", \u0026apigateway.ApiArgs{\n\t\t\tApiId: pulumi.String(\"my-api\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapiGwApiConfig, err := apigateway.NewApiConfig(ctx, \"apiGwApiConfig\", \u0026apigateway.ApiConfigArgs{\n\t\t\tApi: apiGwApi.ApiId,\n\t\t\tApiConfigId: pulumi.String(\"my-config\"),\n\t\t\tOpenapiDocuments: apigateway.ApiConfigOpenapiDocumentArray{\n\t\t\t\t\u0026apigateway.ApiConfigOpenapiDocumentArgs{\n\t\t\t\t\tDocument: \u0026apigateway.ApiConfigOpenapiDocumentDocumentArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"spec.yaml\"),\n\t\t\t\t\t\tContents: filebase64OrPanic(\"test-fixtures/openapi.yaml\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigateway.NewGateway(ctx, \"apiGwGateway\", \u0026apigateway.GatewayArgs{\n\t\t\tApiConfig: apiGwApiConfig.ID(),\n\t\t\tGatewayId: pulumi.String(\"my-gateway\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apigateway.Api;\nimport com.pulumi.gcp.apigateway.ApiArgs;\nimport com.pulumi.gcp.apigateway.ApiConfig;\nimport com.pulumi.gcp.apigateway.ApiConfigArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentArgs;\nimport com.pulumi.gcp.apigateway.inputs.ApiConfigOpenapiDocumentDocumentArgs;\nimport com.pulumi.gcp.apigateway.Gateway;\nimport com.pulumi.gcp.apigateway.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var apiGwApi = new Api(\"apiGwApi\", ApiArgs.builder() \n .apiId(\"my-api\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var apiGwApiConfig = new ApiConfig(\"apiGwApiConfig\", ApiConfigArgs.builder() \n .api(apiGwApi.apiId())\n .apiConfigId(\"my-config\")\n .openapiDocuments(ApiConfigOpenapiDocumentArgs.builder()\n .document(ApiConfigOpenapiDocumentDocumentArgs.builder()\n .path(\"spec.yaml\")\n .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get(\"test-fixtures/openapi.yaml\"))))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var apiGwGateway = new Gateway(\"apiGwGateway\", GatewayArgs.builder() \n .apiConfig(apiGwApiConfig.id())\n .gatewayId(\"my-gateway\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGateway can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default projects/{{project}}/locations/{{region}}/gateways/{{gateway_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default {{project}}/{{region}}/{{gateway_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default {{region}}/{{gateway_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:apigateway/gateway:Gateway default {{gateway_id}}\n```\n\n ", "properties": { "apiConfig": { "type": "string", @@ -89191,7 +89447,7 @@ } }, "gcp:appengine/applicationUrlDispatchRules:ApplicationUrlDispatchRules": { - "description": "Rules to match an HTTP request and dispatch that request to a service.\n\n\nTo get more information about ApplicationUrlDispatchRules, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps#UrlDispatchRule)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Application Url Dispatch Rules Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst adminV3 = new gcp.appengine.StandardAppVersion(\"adminV3\", {\n versionId: \"v3\",\n service: \"admin\",\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n deleteServiceOnDestroy: true,\n});\nconst webService = new gcp.appengine.ApplicationUrlDispatchRules(\"webService\", {dispatchRules: [\n {\n domain: \"*\",\n path: \"/*\",\n service: \"default\",\n },\n {\n domain: \"*\",\n path: \"/admin/*\",\n service: adminV3.service,\n },\n]});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\nadmin_v3 = gcp.appengine.StandardAppVersion(\"adminV3\",\n version_id=\"v3\",\n service=\"admin\",\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n delete_service_on_destroy=True)\nweb_service = gcp.appengine.ApplicationUrlDispatchRules(\"webService\", dispatch_rules=[\n gcp.appengine.ApplicationUrlDispatchRulesDispatchRuleArgs(\n domain=\"*\",\n path=\"/*\",\n service=\"default\",\n ),\n gcp.appengine.ApplicationUrlDispatchRulesDispatchRuleArgs(\n domain=\"*\",\n path=\"/admin/*\",\n service=admin_v3.service,\n ),\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var adminV3 = new Gcp.AppEngine.StandardAppVersion(\"adminV3\", new()\n {\n VersionId = \"v3\",\n Service = \"admin\",\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n DeleteServiceOnDestroy = true,\n });\n\n var webService = new Gcp.AppEngine.ApplicationUrlDispatchRules(\"webService\", new()\n {\n DispatchRules = new[]\n {\n new Gcp.AppEngine.Inputs.ApplicationUrlDispatchRulesDispatchRuleArgs\n {\n Domain = \"*\",\n Path = \"/*\",\n Service = \"default\",\n },\n new Gcp.AppEngine.Inputs.ApplicationUrlDispatchRulesDispatchRuleArgs\n {\n Domain = \"*\",\n Path = \"/admin/*\",\n Service = adminV3.Service,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadminV3, err := appengine.NewStandardAppVersion(ctx, \"adminV3\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v3\"),\n\t\t\tService: pulumi.String(\"admin\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewApplicationUrlDispatchRules(ctx, \"webService\", \u0026appengine.ApplicationUrlDispatchRulesArgs{\n\t\t\tDispatchRules: appengine.ApplicationUrlDispatchRulesDispatchRuleArray{\n\t\t\t\t\u0026appengine.ApplicationUrlDispatchRulesDispatchRuleArgs{\n\t\t\t\t\tDomain: pulumi.String(\"*\"),\n\t\t\t\t\tPath: pulumi.String(\"/*\"),\n\t\t\t\t\tService: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t\t\u0026appengine.ApplicationUrlDispatchRulesDispatchRuleArgs{\n\t\t\t\t\tDomain: pulumi.String(\"*\"),\n\t\t\t\t\tPath: pulumi.String(\"/admin/*\"),\n\t\t\t\t\tService: adminV3.Service,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.ApplicationUrlDispatchRules;\nimport com.pulumi.gcp.appengine.ApplicationUrlDispatchRulesArgs;\nimport com.pulumi.gcp.appengine.inputs.ApplicationUrlDispatchRulesDispatchRuleArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\n .build());\n\n var adminV3 = new StandardAppVersion(\"adminV3\", StandardAppVersionArgs.builder() \n .versionId(\"v3\")\n .service(\"admin\")\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .deleteServiceOnDestroy(true)\n .build());\n\n var webService = new ApplicationUrlDispatchRules(\"webService\", ApplicationUrlDispatchRulesArgs.builder() \n .dispatchRules( \n ApplicationUrlDispatchRulesDispatchRuleArgs.builder()\n .domain(\"*\")\n .path(\"/*\")\n .service(\"default\")\n .build(),\n ApplicationUrlDispatchRulesDispatchRuleArgs.builder()\n .domain(\"*\")\n .path(\"/admin/*\")\n .service(adminV3.service())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webService:\n type: gcp:appengine:ApplicationUrlDispatchRules\n properties:\n dispatchRules:\n - domain: '*'\n path: /*\n service: default\n - domain: '*'\n path: /admin/*\n service: ${adminV3.service}\n adminV3:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v3\n service: admin\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n deleteServiceOnDestroy: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nApplicationUrlDispatchRules can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/applicationUrlDispatchRules:ApplicationUrlDispatchRules default {{project}}\n```\n\n ", + "description": "Rules to match an HTTP request and dispatch that request to a service.\n\n\nTo get more information about ApplicationUrlDispatchRules, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps#UrlDispatchRule)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Application Url Dispatch Rules Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst adminV3 = new gcp.appengine.StandardAppVersion(\"adminV3\", {\n versionId: \"v3\",\n service: \"admin\",\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n deleteServiceOnDestroy: true,\n});\nconst webService = new gcp.appengine.ApplicationUrlDispatchRules(\"webService\", {dispatchRules: [\n {\n domain: \"*\",\n path: \"/*\",\n service: \"default\",\n },\n {\n domain: \"*\",\n path: \"/admin/*\",\n service: adminV3.service,\n },\n]});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nadmin_v3 = gcp.appengine.StandardAppVersion(\"adminV3\",\n version_id=\"v3\",\n service=\"admin\",\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n delete_service_on_destroy=True)\nweb_service = gcp.appengine.ApplicationUrlDispatchRules(\"webService\", dispatch_rules=[\n gcp.appengine.ApplicationUrlDispatchRulesDispatchRuleArgs(\n domain=\"*\",\n path=\"/*\",\n service=\"default\",\n ),\n gcp.appengine.ApplicationUrlDispatchRulesDispatchRuleArgs(\n domain=\"*\",\n path=\"/admin/*\",\n service=admin_v3.service,\n ),\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var adminV3 = new Gcp.AppEngine.StandardAppVersion(\"adminV3\", new()\n {\n VersionId = \"v3\",\n Service = \"admin\",\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n DeleteServiceOnDestroy = true,\n });\n\n var webService = new Gcp.AppEngine.ApplicationUrlDispatchRules(\"webService\", new()\n {\n DispatchRules = new[]\n {\n new Gcp.AppEngine.Inputs.ApplicationUrlDispatchRulesDispatchRuleArgs\n {\n Domain = \"*\",\n Path = \"/*\",\n Service = \"default\",\n },\n new Gcp.AppEngine.Inputs.ApplicationUrlDispatchRulesDispatchRuleArgs\n {\n Domain = \"*\",\n Path = \"/admin/*\",\n Service = adminV3.Service,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadminV3, err := appengine.NewStandardAppVersion(ctx, \"adminV3\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v3\"),\n\t\t\tService: pulumi.String(\"admin\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewApplicationUrlDispatchRules(ctx, \"webService\", \u0026appengine.ApplicationUrlDispatchRulesArgs{\n\t\t\tDispatchRules: appengine.ApplicationUrlDispatchRulesDispatchRuleArray{\n\t\t\t\t\u0026appengine.ApplicationUrlDispatchRulesDispatchRuleArgs{\n\t\t\t\t\tDomain: pulumi.String(\"*\"),\n\t\t\t\t\tPath: pulumi.String(\"/*\"),\n\t\t\t\t\tService: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t\t\u0026appengine.ApplicationUrlDispatchRulesDispatchRuleArgs{\n\t\t\t\t\tDomain: pulumi.String(\"*\"),\n\t\t\t\t\tPath: pulumi.String(\"/admin/*\"),\n\t\t\t\t\tService: adminV3.Service,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.ApplicationUrlDispatchRules;\nimport com.pulumi.gcp.appengine.ApplicationUrlDispatchRulesArgs;\nimport com.pulumi.gcp.appengine.inputs.ApplicationUrlDispatchRulesDispatchRuleArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var adminV3 = new StandardAppVersion(\"adminV3\", StandardAppVersionArgs.builder() \n .versionId(\"v3\")\n .service(\"admin\")\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .deleteServiceOnDestroy(true)\n .build());\n\n var webService = new ApplicationUrlDispatchRules(\"webService\", ApplicationUrlDispatchRulesArgs.builder() \n .dispatchRules( \n ApplicationUrlDispatchRulesDispatchRuleArgs.builder()\n .domain(\"*\")\n .path(\"/*\")\n .service(\"default\")\n .build(),\n ApplicationUrlDispatchRulesDispatchRuleArgs.builder()\n .domain(\"*\")\n .path(\"/admin/*\")\n .service(adminV3.service())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webService:\n type: gcp:appengine:ApplicationUrlDispatchRules\n properties:\n dispatchRules:\n - domain: '*'\n path: /*\n service: default\n - domain: '*'\n path: /admin/*\n service: ${adminV3.service}\n adminV3:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v3\n service: admin\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n deleteServiceOnDestroy: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nApplicationUrlDispatchRules can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/applicationUrlDispatchRules:ApplicationUrlDispatchRules default {{project}}\n```\n\n ", "properties": { "dispatchRules": { "type": "array", @@ -89342,7 +89598,7 @@ } }, "gcp:appengine/engineSplitTraffic:EngineSplitTraffic": { - "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.\n\n\nTo get more information about ServiceSplitTraffic, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Service Split Traffic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveappV1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveappV2 = new gcp.appengine.StandardAppVersion(\"liveappV2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveapp = new gcp.appengine.EngineSplitTraffic(\"liveapp\", {\n service: liveappV2.service,\n migrateTraffic: false,\n split: {\n shardBy: \"IP\",\n allocations: pulumi.all([liveappV1.versionId, liveappV2.versionId]).apply(([liveappV1VersionId, liveappV2VersionId]) =\u003e {\n [liveappV1VersionId]: 0.75,\n [liveappV2VersionId]: 0.25,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveappV1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n })\nliveapp_v2 = gcp.appengine.StandardAppVersion(\"liveappV2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n })\nliveapp = gcp.appengine.EngineSplitTraffic(\"liveapp\",\n service=liveapp_v2.service,\n migrate_traffic=False,\n split=gcp.appengine.EngineSplitTrafficSplitArgs(\n shard_by=\"IP\",\n allocations=pulumi.Output.all(liveapp_v1.version_id, liveapp_v2.version_id).apply(lambda liveappV1Version_id, liveappV2Version_id: {\n liveapp_v1_version_id: 0.75,\n liveapp_v2_version_id: 0.25,\n }),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveappV1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveappV2 = new Gcp.AppEngine.StandardAppVersion(\"liveappV2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveapp = new Gcp.AppEngine.EngineSplitTraffic(\"liveapp\", new()\n {\n Service = liveappV2.Service,\n MigrateTraffic = false,\n Split = new Gcp.AppEngine.Inputs.EngineSplitTrafficSplitArgs\n {\n ShardBy = \"IP\",\n Allocations = Output.Tuple(liveappV1.VersionId, liveappV2.VersionId).Apply(values =\u003e\n {\n var liveappV1VersionId = values.Item1;\n var liveappV2VersionId = values.Item2;\n return \n {\n { liveappV1VersionId, 0.75 },\n { liveappV2VersionId, 0.25 },\n };\n }),\n },\n });\n\n});\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveappV2:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveapp:\n type: gcp:appengine:EngineSplitTraffic\n properties:\n service: ${liveappV2.service}\n migrateTraffic: false\n split:\n shardBy: IP\n allocations:\n ${liveappV1.versionId}: 0.75\n ${liveappV2.versionId}: 0.25\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n ", + "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.\n\n\nTo get more information about ServiceSplitTraffic, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Service Split Traffic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveappV1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveappV2 = new gcp.appengine.StandardAppVersion(\"liveappV2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveapp = new gcp.appengine.EngineSplitTraffic(\"liveapp\", {\n service: liveappV2.service,\n migrateTraffic: false,\n split: {\n shardBy: \"IP\",\n allocations: pulumi.all([liveappV1.versionId, liveappV2.versionId]).apply(([liveappV1VersionId, liveappV2VersionId]) =\u003e {\n [liveappV1VersionId]: 0.75,\n [liveappV2VersionId]: 0.25,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveappV1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n })\nliveapp_v2 = gcp.appengine.StandardAppVersion(\"liveappV2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n })\nliveapp = gcp.appengine.EngineSplitTraffic(\"liveapp\",\n service=liveapp_v2.service,\n migrate_traffic=False,\n split=gcp.appengine.EngineSplitTrafficSplitArgs(\n shard_by=\"IP\",\n allocations=pulumi.Output.all(liveapp_v1.version_id, liveapp_v2.version_id).apply(lambda liveappV1Version_id, liveappV2Version_id: {\n liveapp_v1_version_id: 0.75,\n liveapp_v2_version_id: 0.25,\n }),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveappV1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveappV2 = new Gcp.AppEngine.StandardAppVersion(\"liveappV2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveapp = new Gcp.AppEngine.EngineSplitTraffic(\"liveapp\", new()\n {\n Service = liveappV2.Service,\n MigrateTraffic = false,\n Split = new Gcp.AppEngine.Inputs.EngineSplitTrafficSplitArgs\n {\n ShardBy = \"IP\",\n Allocations = Output.Tuple(liveappV1.VersionId, liveappV2.VersionId).Apply(values =\u003e\n {\n var liveappV1VersionId = values.Item1;\n var liveappV2VersionId = values.Item2;\n return \n {\n { liveappV1VersionId, 0.75 },\n { liveappV2VersionId, 0.25 },\n };\n }),\n },\n });\n\n});\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveappV2:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveapp:\n type: gcp:appengine:EngineSplitTraffic\n properties:\n service: ${liveappV2.service}\n migrateTraffic: false\n split:\n shardBy: IP\n allocations:\n ${liveappV1.versionId}: 0.75\n ${liveappV2.versionId}: 0.25\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n ", "properties": { "migrateTraffic": { "type": "boolean", @@ -89498,7 +89754,7 @@ } }, "gcp:appengine/flexibleAppVersion:FlexibleAppVersion": { - "description": "Flexible App Version resource to create a new version of flexible GAE Application. Based on Google Compute Engine,\nthe App Engine flexible environment automatically scales your app up and down while also balancing the load.\nLearn about the differences between the standard environment and the flexible environment\nat https://cloud.google.com/appengine/docs/the-appengine-environments.\n\n\u003e **Note:** The App Engine flexible environment service account uses the member ID `service-[YOUR_PROJECT_NUMBER]@gae-api-prod.google.com.iam.gserviceaccount.com`\nIt should have the App Engine Flexible Environment Service Agent role, which will be applied when the `appengineflex.googleapis.com` service is enabled.\n\n\nTo get more information about FlexibleAppVersion, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/appengine/docs/flexible)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Flexible App Version\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myProject = new gcp.organizations.Project(\"myProject\", {\n projectId: \"appeng-flex\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst app = new gcp.appengine.Application(\"app\", {\n project: myProject.projectId,\n locationId: \"us-central\",\n});\nconst service = new gcp.projects.Service(\"service\", {\n project: myProject.projectId,\n service: \"appengineflex.googleapis.com\",\n disableDependentServices: false,\n});\nconst customServiceAccount = new gcp.serviceaccount.Account(\"customServiceAccount\", {\n project: service.project,\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gaeApi\", {\n project: service.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logsWriter\", {\n project: service.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storageViewer\", {\n project: service.project,\n role: \"roles/storage.objectViewer\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n project: myProject.projectId,\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.FlexibleAppVersion(\"myappV1\", {\n versionId: \"v1\",\n project: gaeApi.project,\n service: \"default\",\n runtime: \"nodejs\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n livenessCheck: {\n path: \"/\",\n },\n readinessCheck: {\n path: \"/\",\n },\n envVariables: {\n port: \"8080\",\n },\n handlers: [{\n urlRegex: \".*\\\\/my-path\\\\/*\",\n securityLevel: \"SECURE_ALWAYS\",\n login: \"LOGIN_REQUIRED\",\n authFailAction: \"AUTH_FAIL_ACTION_REDIRECT\",\n staticFiles: {\n path: \"my-other-path\",\n uploadPathRegex: \".*\\\\/my-path\\\\/*\",\n },\n }],\n automaticScaling: {\n coolDownPeriod: \"120s\",\n cpuUtilization: {\n targetUtilization: 0.5,\n },\n },\n noopOnDestroy: true,\n serviceAccount: customServiceAccount.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_project = gcp.organizations.Project(\"myProject\",\n project_id=\"appeng-flex\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\napp = gcp.appengine.Application(\"app\",\n project=my_project.project_id,\n location_id=\"us-central\")\nservice = gcp.projects.Service(\"service\",\n project=my_project.project_id,\n service=\"appengineflex.googleapis.com\",\n disable_dependent_services=False)\ncustom_service_account = gcp.service_account.Account(\"customServiceAccount\",\n project=service.project,\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gaeApi\",\n project=service.project,\n role=\"roles/compute.networkUser\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logsWriter\",\n project=service.project,\n role=\"roles/logging.logWriter\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_viewer = gcp.projects.IAMMember(\"storageViewer\",\n project=service.project,\n role=\"roles/storage.objectViewer\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n project=my_project.project_id,\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.FlexibleAppVersion(\"myappV1\",\n version_id=\"v1\",\n project=gae_api.project,\n service=\"default\",\n runtime=\"nodejs\",\n entrypoint=gcp.appengine.FlexibleAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.FlexibleAppVersionDeploymentArgs(\n zip=gcp.appengine.FlexibleAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n liveness_check=gcp.appengine.FlexibleAppVersionLivenessCheckArgs(\n path=\"/\",\n ),\n readiness_check=gcp.appengine.FlexibleAppVersionReadinessCheckArgs(\n path=\"/\",\n ),\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[gcp.appengine.FlexibleAppVersionHandlerArgs(\n url_regex=\".*\\\\/my-path\\\\/*\",\n security_level=\"SECURE_ALWAYS\",\n login=\"LOGIN_REQUIRED\",\n auth_fail_action=\"AUTH_FAIL_ACTION_REDIRECT\",\n static_files=gcp.appengine.FlexibleAppVersionHandlerStaticFilesArgs(\n path=\"my-other-path\",\n upload_path_regex=\".*\\\\/my-path\\\\/*\",\n ),\n )],\n automatic_scaling=gcp.appengine.FlexibleAppVersionAutomaticScalingArgs(\n cool_down_period=\"120s\",\n cpu_utilization=gcp.appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs(\n target_utilization=0.5,\n ),\n ),\n noop_on_destroy=True,\n service_account=custom_service_account.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"myProject\", new()\n {\n ProjectId = \"appeng-flex\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var app = new Gcp.AppEngine.Application(\"app\", new()\n {\n Project = myProject.ProjectId,\n LocationId = \"us-central\",\n });\n\n var service = new Gcp.Projects.Service(\"service\", new()\n {\n Project = myProject.ProjectId,\n ServiceName = \"appengineflex.googleapis.com\",\n DisableDependentServices = false,\n });\n\n var customServiceAccount = new Gcp.ServiceAccount.Account(\"customServiceAccount\", new()\n {\n Project = service.Project,\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gaeApi\", new()\n {\n Project = service.Project,\n Role = \"roles/compute.networkUser\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logsWriter\", new()\n {\n Project = service.Project,\n Role = \"roles/logging.logWriter\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageViewer = new Gcp.Projects.IAMMember(\"storageViewer\", new()\n {\n Project = service.Project,\n Role = \"roles/storage.objectViewer\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Project = myProject.ProjectId,\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.FlexibleAppVersion(\"myappV1\", new()\n {\n VersionId = \"v1\",\n Project = gaeApi.Project,\n Service = \"default\",\n Runtime = \"nodejs\",\n Entrypoint = new Gcp.AppEngine.Inputs.FlexibleAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n LivenessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionLivenessCheckArgs\n {\n Path = \"/\",\n },\n ReadinessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionReadinessCheckArgs\n {\n Path = \"/\",\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n Handlers = new[]\n {\n new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerArgs\n {\n UrlRegex = \".*\\\\/my-path\\\\/*\",\n SecurityLevel = \"SECURE_ALWAYS\",\n Login = \"LOGIN_REQUIRED\",\n AuthFailAction = \"AUTH_FAIL_ACTION_REDIRECT\",\n StaticFiles = new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerStaticFilesArgs\n {\n Path = \"my-other-path\",\n UploadPathRegex = \".*\\\\/my-path\\\\/*\",\n },\n },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingArgs\n {\n CoolDownPeriod = \"120s\",\n CpuUtilization = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs\n {\n TargetUtilization = 0.5,\n },\n },\n NoopOnDestroy = true,\n ServiceAccount = customServiceAccount.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyProject, err := organizations.NewProject(ctx, \"myProject\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"appeng-flex\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewApplication(ctx, \"app\", \u0026appengine.ApplicationArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tLocationId: pulumi.String(\"us-central\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice, err := projects.NewService(ctx, \"service\", \u0026projects.ServiceArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"appengineflex.googleapis.com\"),\n\t\t\tDisableDependentServices: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomServiceAccount, err := serviceAccount.NewAccount(ctx, \"customServiceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tProject: service.Project,\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Custom Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgaeApi, err := projects.NewIAMMember(ctx, \"gaeApi\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: service.Project,\n\t\t\tRole: pulumi.String(\"roles/compute.networkUser\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"logsWriter\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: service.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"storageViewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: service.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewFlexibleAppVersion(ctx, \"myappV1\", \u0026appengine.FlexibleAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tProject: gaeApi.Project,\n\t\t\tService: pulumi.String(\"default\"),\n\t\t\tRuntime: pulumi.String(\"nodejs\"),\n\t\t\tEntrypoint: \u0026appengine.FlexibleAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.FlexibleAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.FlexibleAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLivenessCheck: \u0026appengine.FlexibleAppVersionLivenessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tReadinessCheck: \u0026appengine.FlexibleAppVersionReadinessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tHandlers: appengine.FlexibleAppVersionHandlerArray{\n\t\t\t\t\u0026appengine.FlexibleAppVersionHandlerArgs{\n\t\t\t\t\tUrlRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\tSecurityLevel: pulumi.String(\"SECURE_ALWAYS\"),\n\t\t\t\t\tLogin: pulumi.String(\"LOGIN_REQUIRED\"),\n\t\t\t\t\tAuthFailAction: pulumi.String(\"AUTH_FAIL_ACTION_REDIRECT\"),\n\t\t\t\t\tStaticFiles: \u0026appengine.FlexibleAppVersionHandlerStaticFilesArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"my-other-path\"),\n\t\t\t\t\t\tUploadPathRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.FlexibleAppVersionAutomaticScalingArgs{\n\t\t\t\tCoolDownPeriod: pulumi.String(\"120s\"),\n\t\t\t\tCpuUtilization: \u0026appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs{\n\t\t\t\t\tTargetUtilization: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNoopOnDestroy: pulumi.Bool(true),\n\t\t\tServiceAccount: customServiceAccount.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.appengine.Application;\nimport com.pulumi.gcp.appengine.ApplicationArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.FlexibleAppVersion;\nimport com.pulumi.gcp.appengine.FlexibleAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionLivenessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionReadinessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerStaticFilesArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myProject = new Project(\"myProject\", ProjectArgs.builder() \n .projectId(\"appeng-flex\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var app = new Application(\"app\", ApplicationArgs.builder() \n .project(myProject.projectId())\n .locationId(\"us-central\")\n .build());\n\n var service = new Service(\"service\", ServiceArgs.builder() \n .project(myProject.projectId())\n .service(\"appengineflex.googleapis.com\")\n .disableDependentServices(false)\n .build());\n\n var customServiceAccount = new Account(\"customServiceAccount\", AccountArgs.builder() \n .project(service.project())\n .accountId(\"my-account\")\n .displayName(\"Custom Service Account\")\n .build());\n\n var gaeApi = new IAMMember(\"gaeApi\", IAMMemberArgs.builder() \n .project(service.project())\n .role(\"roles/compute.networkUser\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder() \n .project(service.project())\n .role(\"roles/logging.logWriter\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageViewer = new IAMMember(\"storageViewer\", IAMMemberArgs.builder() \n .project(service.project())\n .role(\"roles/storage.objectViewer\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .project(myProject.projectId())\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\n .build());\n\n var myappV1 = new FlexibleAppVersion(\"myappV1\", FlexibleAppVersionArgs.builder() \n .versionId(\"v1\")\n .project(gaeApi.project())\n .service(\"default\")\n .runtime(\"nodejs\")\n .entrypoint(FlexibleAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(FlexibleAppVersionDeploymentArgs.builder()\n .zip(FlexibleAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .livenessCheck(FlexibleAppVersionLivenessCheckArgs.builder()\n .path(\"/\")\n .build())\n .readinessCheck(FlexibleAppVersionReadinessCheckArgs.builder()\n .path(\"/\")\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .handlers(FlexibleAppVersionHandlerArgs.builder()\n .urlRegex(\".*\\\\/my-path\\\\/*\")\n .securityLevel(\"SECURE_ALWAYS\")\n .login(\"LOGIN_REQUIRED\")\n .authFailAction(\"AUTH_FAIL_ACTION_REDIRECT\")\n .staticFiles(FlexibleAppVersionHandlerStaticFilesArgs.builder()\n .path(\"my-other-path\")\n .uploadPathRegex(\".*\\\\/my-path\\\\/*\")\n .build())\n .build())\n .automaticScaling(FlexibleAppVersionAutomaticScalingArgs.builder()\n .coolDownPeriod(\"120s\")\n .cpuUtilization(FlexibleAppVersionAutomaticScalingCpuUtilizationArgs.builder()\n .targetUtilization(0.5)\n .build())\n .build())\n .noopOnDestroy(true)\n .serviceAccount(customServiceAccount.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n properties:\n projectId: appeng-flex\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n app:\n type: gcp:appengine:Application\n properties:\n project: ${myProject.projectId}\n locationId: us-central\n service:\n type: gcp:projects:Service\n properties:\n project: ${myProject.projectId}\n service: appengineflex.googleapis.com\n disableDependentServices: false\n customServiceAccount:\n type: gcp:serviceAccount:Account\n properties:\n project: ${service.project}\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n properties:\n project: ${service.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n properties:\n project: ${service.project}\n role: roles/logging.logWriter\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${service.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:FlexibleAppVersion\n properties:\n versionId: v1\n project: ${gaeApi.project}\n service: default\n runtime: nodejs\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n livenessCheck:\n path: /\n readinessCheck:\n path: /\n envVariables:\n port: '8080'\n handlers:\n - urlRegex: .*\\/my-path\\/*\n securityLevel: SECURE_ALWAYS\n login: LOGIN_REQUIRED\n authFailAction: AUTH_FAIL_ACTION_REDIRECT\n staticFiles:\n path: my-other-path\n uploadPathRegex: .*\\/my-path\\/*\n automaticScaling:\n coolDownPeriod: 120s\n cpuUtilization:\n targetUtilization: 0.5\n noopOnDestroy: true\n serviceAccount: ${customServiceAccount.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n project: ${myProject.projectId}\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nFlexibleAppVersion can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default {{project}}/{{service}}/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default {{service}}/{{version_id}}\n```\n\n ", + "description": "Flexible App Version resource to create a new version of flexible GAE Application. Based on Google Compute Engine,\nthe App Engine flexible environment automatically scales your app up and down while also balancing the load.\nLearn about the differences between the standard environment and the flexible environment\nat https://cloud.google.com/appengine/docs/the-appengine-environments.\n\n\u003e **Note:** The App Engine flexible environment service account uses the member ID `service-[YOUR_PROJECT_NUMBER]@gae-api-prod.google.com.iam.gserviceaccount.com`\nIt should have the App Engine Flexible Environment Service Agent role, which will be applied when the `appengineflex.googleapis.com` service is enabled.\n\n\nTo get more information about FlexibleAppVersion, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/appengine/docs/flexible)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Flexible App Version\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myProject = new gcp.organizations.Project(\"myProject\", {\n projectId: \"appeng-flex\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst app = new gcp.appengine.Application(\"app\", {\n project: myProject.projectId,\n locationId: \"us-central\",\n});\nconst service = new gcp.projects.Service(\"service\", {\n project: myProject.projectId,\n service: \"appengineflex.googleapis.com\",\n disableDependentServices: false,\n});\nconst customServiceAccount = new gcp.serviceaccount.Account(\"customServiceAccount\", {\n project: service.project,\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gaeApi\", {\n project: service.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logsWriter\", {\n project: service.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storageViewer\", {\n project: service.project,\n role: \"roles/storage.objectViewer\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n project: myProject.projectId,\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.FlexibleAppVersion(\"myappV1\", {\n versionId: \"v1\",\n project: gaeApi.project,\n service: \"default\",\n runtime: \"nodejs\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n livenessCheck: {\n path: \"/\",\n },\n readinessCheck: {\n path: \"/\",\n },\n envVariables: {\n port: \"8080\",\n },\n handlers: [{\n urlRegex: \".*\\\\/my-path\\\\/*\",\n securityLevel: \"SECURE_ALWAYS\",\n login: \"LOGIN_REQUIRED\",\n authFailAction: \"AUTH_FAIL_ACTION_REDIRECT\",\n staticFiles: {\n path: \"my-other-path\",\n uploadPathRegex: \".*\\\\/my-path\\\\/*\",\n },\n }],\n automaticScaling: {\n coolDownPeriod: \"120s\",\n cpuUtilization: {\n targetUtilization: 0.5,\n },\n },\n noopOnDestroy: true,\n serviceAccount: customServiceAccount.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_project = gcp.organizations.Project(\"myProject\",\n project_id=\"appeng-flex\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\")\napp = gcp.appengine.Application(\"app\",\n project=my_project.project_id,\n location_id=\"us-central\")\nservice = gcp.projects.Service(\"service\",\n project=my_project.project_id,\n service=\"appengineflex.googleapis.com\",\n disable_dependent_services=False)\ncustom_service_account = gcp.service_account.Account(\"customServiceAccount\",\n project=service.project,\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gaeApi\",\n project=service.project,\n role=\"roles/compute.networkUser\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logsWriter\",\n project=service.project,\n role=\"roles/logging.logWriter\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_viewer = gcp.projects.IAMMember(\"storageViewer\",\n project=service.project,\n role=\"roles/storage.objectViewer\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n project=my_project.project_id,\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.FlexibleAppVersion(\"myappV1\",\n version_id=\"v1\",\n project=gae_api.project,\n service=\"default\",\n runtime=\"nodejs\",\n entrypoint=gcp.appengine.FlexibleAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.FlexibleAppVersionDeploymentArgs(\n zip=gcp.appengine.FlexibleAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n liveness_check=gcp.appengine.FlexibleAppVersionLivenessCheckArgs(\n path=\"/\",\n ),\n readiness_check=gcp.appengine.FlexibleAppVersionReadinessCheckArgs(\n path=\"/\",\n ),\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[gcp.appengine.FlexibleAppVersionHandlerArgs(\n url_regex=\".*\\\\/my-path\\\\/*\",\n security_level=\"SECURE_ALWAYS\",\n login=\"LOGIN_REQUIRED\",\n auth_fail_action=\"AUTH_FAIL_ACTION_REDIRECT\",\n static_files=gcp.appengine.FlexibleAppVersionHandlerStaticFilesArgs(\n path=\"my-other-path\",\n upload_path_regex=\".*\\\\/my-path\\\\/*\",\n ),\n )],\n automatic_scaling=gcp.appengine.FlexibleAppVersionAutomaticScalingArgs(\n cool_down_period=\"120s\",\n cpu_utilization=gcp.appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs(\n target_utilization=0.5,\n ),\n ),\n noop_on_destroy=True,\n service_account=custom_service_account.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myProject = new Gcp.Organizations.Project(\"myProject\", new()\n {\n ProjectId = \"appeng-flex\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var app = new Gcp.AppEngine.Application(\"app\", new()\n {\n Project = myProject.ProjectId,\n LocationId = \"us-central\",\n });\n\n var service = new Gcp.Projects.Service(\"service\", new()\n {\n Project = myProject.ProjectId,\n ServiceName = \"appengineflex.googleapis.com\",\n DisableDependentServices = false,\n });\n\n var customServiceAccount = new Gcp.ServiceAccount.Account(\"customServiceAccount\", new()\n {\n Project = service.Project,\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gaeApi\", new()\n {\n Project = service.Project,\n Role = \"roles/compute.networkUser\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logsWriter\", new()\n {\n Project = service.Project,\n Role = \"roles/logging.logWriter\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageViewer = new Gcp.Projects.IAMMember(\"storageViewer\", new()\n {\n Project = service.Project,\n Role = \"roles/storage.objectViewer\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Project = myProject.ProjectId,\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.FlexibleAppVersion(\"myappV1\", new()\n {\n VersionId = \"v1\",\n Project = gaeApi.Project,\n Service = \"default\",\n Runtime = \"nodejs\",\n Entrypoint = new Gcp.AppEngine.Inputs.FlexibleAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n LivenessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionLivenessCheckArgs\n {\n Path = \"/\",\n },\n ReadinessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionReadinessCheckArgs\n {\n Path = \"/\",\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n Handlers = new[]\n {\n new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerArgs\n {\n UrlRegex = \".*\\\\/my-path\\\\/*\",\n SecurityLevel = \"SECURE_ALWAYS\",\n Login = \"LOGIN_REQUIRED\",\n AuthFailAction = \"AUTH_FAIL_ACTION_REDIRECT\",\n StaticFiles = new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerStaticFilesArgs\n {\n Path = \"my-other-path\",\n UploadPathRegex = \".*\\\\/my-path\\\\/*\",\n },\n },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingArgs\n {\n CoolDownPeriod = \"120s\",\n CpuUtilization = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs\n {\n TargetUtilization = 0.5,\n },\n },\n NoopOnDestroy = true,\n ServiceAccount = customServiceAccount.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyProject, err := organizations.NewProject(ctx, \"myProject\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"appeng-flex\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewApplication(ctx, \"app\", \u0026appengine.ApplicationArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tLocationId: pulumi.String(\"us-central\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice, err := projects.NewService(ctx, \"service\", \u0026projects.ServiceArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tService: pulumi.String(\"appengineflex.googleapis.com\"),\n\t\t\tDisableDependentServices: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomServiceAccount, err := serviceAccount.NewAccount(ctx, \"customServiceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tProject: service.Project,\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Custom Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgaeApi, err := projects.NewIAMMember(ctx, \"gaeApi\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: service.Project,\n\t\t\tRole: pulumi.String(\"roles/compute.networkUser\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"logsWriter\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: service.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"storageViewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: service.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tProject: myProject.ProjectId,\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewFlexibleAppVersion(ctx, \"myappV1\", \u0026appengine.FlexibleAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tProject: gaeApi.Project,\n\t\t\tService: pulumi.String(\"default\"),\n\t\t\tRuntime: pulumi.String(\"nodejs\"),\n\t\t\tEntrypoint: \u0026appengine.FlexibleAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.FlexibleAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.FlexibleAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLivenessCheck: \u0026appengine.FlexibleAppVersionLivenessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tReadinessCheck: \u0026appengine.FlexibleAppVersionReadinessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tHandlers: appengine.FlexibleAppVersionHandlerArray{\n\t\t\t\t\u0026appengine.FlexibleAppVersionHandlerArgs{\n\t\t\t\t\tUrlRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\tSecurityLevel: pulumi.String(\"SECURE_ALWAYS\"),\n\t\t\t\t\tLogin: pulumi.String(\"LOGIN_REQUIRED\"),\n\t\t\t\t\tAuthFailAction: pulumi.String(\"AUTH_FAIL_ACTION_REDIRECT\"),\n\t\t\t\t\tStaticFiles: \u0026appengine.FlexibleAppVersionHandlerStaticFilesArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"my-other-path\"),\n\t\t\t\t\t\tUploadPathRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.FlexibleAppVersionAutomaticScalingArgs{\n\t\t\t\tCoolDownPeriod: pulumi.String(\"120s\"),\n\t\t\t\tCpuUtilization: \u0026appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs{\n\t\t\t\t\tTargetUtilization: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNoopOnDestroy: pulumi.Bool(true),\n\t\t\tServiceAccount: customServiceAccount.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.appengine.Application;\nimport com.pulumi.gcp.appengine.ApplicationArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.FlexibleAppVersion;\nimport com.pulumi.gcp.appengine.FlexibleAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionLivenessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionReadinessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerStaticFilesArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myProject = new Project(\"myProject\", ProjectArgs.builder() \n .projectId(\"appeng-flex\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var app = new Application(\"app\", ApplicationArgs.builder() \n .project(myProject.projectId())\n .locationId(\"us-central\")\n .build());\n\n var service = new Service(\"service\", ServiceArgs.builder() \n .project(myProject.projectId())\n .service(\"appengineflex.googleapis.com\")\n .disableDependentServices(false)\n .build());\n\n var customServiceAccount = new Account(\"customServiceAccount\", AccountArgs.builder() \n .project(service.project())\n .accountId(\"my-account\")\n .displayName(\"Custom Service Account\")\n .build());\n\n var gaeApi = new IAMMember(\"gaeApi\", IAMMemberArgs.builder() \n .project(service.project())\n .role(\"roles/compute.networkUser\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder() \n .project(service.project())\n .role(\"roles/logging.logWriter\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageViewer = new IAMMember(\"storageViewer\", IAMMemberArgs.builder() \n .project(service.project())\n .role(\"roles/storage.objectViewer\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .project(myProject.projectId())\n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var myappV1 = new FlexibleAppVersion(\"myappV1\", FlexibleAppVersionArgs.builder() \n .versionId(\"v1\")\n .project(gaeApi.project())\n .service(\"default\")\n .runtime(\"nodejs\")\n .entrypoint(FlexibleAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(FlexibleAppVersionDeploymentArgs.builder()\n .zip(FlexibleAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .livenessCheck(FlexibleAppVersionLivenessCheckArgs.builder()\n .path(\"/\")\n .build())\n .readinessCheck(FlexibleAppVersionReadinessCheckArgs.builder()\n .path(\"/\")\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .handlers(FlexibleAppVersionHandlerArgs.builder()\n .urlRegex(\".*\\\\/my-path\\\\/*\")\n .securityLevel(\"SECURE_ALWAYS\")\n .login(\"LOGIN_REQUIRED\")\n .authFailAction(\"AUTH_FAIL_ACTION_REDIRECT\")\n .staticFiles(FlexibleAppVersionHandlerStaticFilesArgs.builder()\n .path(\"my-other-path\")\n .uploadPathRegex(\".*\\\\/my-path\\\\/*\")\n .build())\n .build())\n .automaticScaling(FlexibleAppVersionAutomaticScalingArgs.builder()\n .coolDownPeriod(\"120s\")\n .cpuUtilization(FlexibleAppVersionAutomaticScalingCpuUtilizationArgs.builder()\n .targetUtilization(0.5)\n .build())\n .build())\n .noopOnDestroy(true)\n .serviceAccount(customServiceAccount.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myProject:\n type: gcp:organizations:Project\n properties:\n projectId: appeng-flex\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n app:\n type: gcp:appengine:Application\n properties:\n project: ${myProject.projectId}\n locationId: us-central\n service:\n type: gcp:projects:Service\n properties:\n project: ${myProject.projectId}\n service: appengineflex.googleapis.com\n disableDependentServices: false\n customServiceAccount:\n type: gcp:serviceAccount:Account\n properties:\n project: ${service.project}\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n properties:\n project: ${service.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n properties:\n project: ${service.project}\n role: roles/logging.logWriter\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${service.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:FlexibleAppVersion\n properties:\n versionId: v1\n project: ${gaeApi.project}\n service: default\n runtime: nodejs\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n livenessCheck:\n path: /\n readinessCheck:\n path: /\n envVariables:\n port: '8080'\n handlers:\n - urlRegex: .*\\/my-path\\/*\n securityLevel: SECURE_ALWAYS\n login: LOGIN_REQUIRED\n authFailAction: AUTH_FAIL_ACTION_REDIRECT\n staticFiles:\n path: my-other-path\n uploadPathRegex: .*\\/my-path\\/*\n automaticScaling:\n coolDownPeriod: 120s\n cpuUtilization:\n targetUtilization: 0.5\n noopOnDestroy: true\n serviceAccount: ${customServiceAccount.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n project: ${myProject.projectId}\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nFlexibleAppVersion can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default {{project}}/{{service}}/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/flexibleAppVersion:FlexibleAppVersion default {{service}}/{{version_id}}\n```\n\n ", "properties": { "apiConfig": { "$ref": "#/types/gcp:appengine/FlexibleAppVersionApiConfig:FlexibleAppVersionApiConfig", @@ -89924,7 +90180,7 @@ } }, "gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings": { - "description": "A NetworkSettings resource is a container for ingress settings for a version or service.\n\n\nTo get more information about ServiceNetworkSettings, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Service Network Settings\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst internalappStandardAppVersion = new gcp.appengine.StandardAppVersion(\"internalappStandardAppVersion\", {\n versionId: \"v1\",\n service: \"internalapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst internalappServiceNetworkSettings = new gcp.appengine.ServiceNetworkSettings(\"internalappServiceNetworkSettings\", {\n service: internalappStandardAppVersion.service,\n networkSettings: {\n ingressTrafficAllowed: \"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\ninternalapp_standard_app_version = gcp.appengine.StandardAppVersion(\"internalappStandardAppVersion\",\n version_id=\"v1\",\n service=\"internalapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n })\ninternalapp_service_network_settings = gcp.appengine.ServiceNetworkSettings(\"internalappServiceNetworkSettings\",\n service=internalapp_standard_app_version.service,\n network_settings=gcp.appengine.ServiceNetworkSettingsNetworkSettingsArgs(\n ingress_traffic_allowed=\"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var internalappStandardAppVersion = new Gcp.AppEngine.StandardAppVersion(\"internalappStandardAppVersion\", new()\n {\n VersionId = \"v1\",\n Service = \"internalapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var internalappServiceNetworkSettings = new Gcp.AppEngine.ServiceNetworkSettings(\"internalappServiceNetworkSettings\", new()\n {\n Service = internalappStandardAppVersion.Service,\n NetworkSettings = new Gcp.AppEngine.Inputs.ServiceNetworkSettingsNetworkSettingsArgs\n {\n IngressTrafficAllowed = \"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalappStandardAppVersion, err := appengine.NewStandardAppVersion(ctx, \"internalappStandardAppVersion\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"internalapp\"),\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewServiceNetworkSettings(ctx, \"internalappServiceNetworkSettings\", \u0026appengine.ServiceNetworkSettingsArgs{\n\t\t\tService: internalappStandardAppVersion.Service,\n\t\t\tNetworkSettings: \u0026appengine.ServiceNetworkSettingsNetworkSettingsArgs{\n\t\t\t\tIngressTrafficAllowed: pulumi.String(\"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.ServiceNetworkSettings;\nimport com.pulumi.gcp.appengine.ServiceNetworkSettingsArgs;\nimport com.pulumi.gcp.appengine.inputs.ServiceNetworkSettingsNetworkSettingsArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\n .build());\n\n var internalappStandardAppVersion = new StandardAppVersion(\"internalappStandardAppVersion\", StandardAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"internalapp\")\n .deleteServiceOnDestroy(true)\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .build());\n\n var internalappServiceNetworkSettings = new ServiceNetworkSettings(\"internalappServiceNetworkSettings\", ServiceNetworkSettingsArgs.builder() \n .service(internalappStandardAppVersion.service())\n .networkSettings(ServiceNetworkSettingsNetworkSettingsArgs.builder()\n .ingressTrafficAllowed(\"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\n internalappStandardAppVersion:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: internalapp\n deleteServiceOnDestroy: true\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n internalappServiceNetworkSettings:\n type: gcp:appengine:ServiceNetworkSettings\n properties:\n service: ${internalappStandardAppVersion.service}\n networkSettings:\n ingressTrafficAllowed: INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nServiceNetworkSettings can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default apps/{{project}}/services/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{project}}/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{service}}\n```\n\n ", + "description": "A NetworkSettings resource is a container for ingress settings for a version or service.\n\n\nTo get more information about ServiceNetworkSettings, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Service Network Settings\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst internalappStandardAppVersion = new gcp.appengine.StandardAppVersion(\"internalappStandardAppVersion\", {\n versionId: \"v1\",\n service: \"internalapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst internalappServiceNetworkSettings = new gcp.appengine.ServiceNetworkSettings(\"internalappServiceNetworkSettings\", {\n service: internalappStandardAppVersion.service,\n networkSettings: {\n ingressTrafficAllowed: \"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\ninternalapp_standard_app_version = gcp.appengine.StandardAppVersion(\"internalappStandardAppVersion\",\n version_id=\"v1\",\n service=\"internalapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n })\ninternalapp_service_network_settings = gcp.appengine.ServiceNetworkSettings(\"internalappServiceNetworkSettings\",\n service=internalapp_standard_app_version.service,\n network_settings=gcp.appengine.ServiceNetworkSettingsNetworkSettingsArgs(\n ingress_traffic_allowed=\"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var internalappStandardAppVersion = new Gcp.AppEngine.StandardAppVersion(\"internalappStandardAppVersion\", new()\n {\n VersionId = \"v1\",\n Service = \"internalapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var internalappServiceNetworkSettings = new Gcp.AppEngine.ServiceNetworkSettings(\"internalappServiceNetworkSettings\", new()\n {\n Service = internalappStandardAppVersion.Service,\n NetworkSettings = new Gcp.AppEngine.Inputs.ServiceNetworkSettingsNetworkSettingsArgs\n {\n IngressTrafficAllowed = \"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalappStandardAppVersion, err := appengine.NewStandardAppVersion(ctx, \"internalappStandardAppVersion\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"internalapp\"),\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewServiceNetworkSettings(ctx, \"internalappServiceNetworkSettings\", \u0026appengine.ServiceNetworkSettingsArgs{\n\t\t\tService: internalappStandardAppVersion.Service,\n\t\t\tNetworkSettings: \u0026appengine.ServiceNetworkSettingsNetworkSettingsArgs{\n\t\t\t\tIngressTrafficAllowed: pulumi.String(\"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.ServiceNetworkSettings;\nimport com.pulumi.gcp.appengine.ServiceNetworkSettingsArgs;\nimport com.pulumi.gcp.appengine.inputs.ServiceNetworkSettingsNetworkSettingsArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var internalappStandardAppVersion = new StandardAppVersion(\"internalappStandardAppVersion\", StandardAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"internalapp\")\n .deleteServiceOnDestroy(true)\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .build());\n\n var internalappServiceNetworkSettings = new ServiceNetworkSettings(\"internalappServiceNetworkSettings\", ServiceNetworkSettingsArgs.builder() \n .service(internalappStandardAppVersion.service())\n .networkSettings(ServiceNetworkSettingsNetworkSettingsArgs.builder()\n .ingressTrafficAllowed(\"INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n internalappStandardAppVersion:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: internalapp\n deleteServiceOnDestroy: true\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n internalappServiceNetworkSettings:\n type: gcp:appengine:ServiceNetworkSettings\n properties:\n service: ${internalappStandardAppVersion.service}\n networkSettings:\n ingressTrafficAllowed: INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nServiceNetworkSettings can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default apps/{{project}}/services/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{project}}/{{service}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/serviceNetworkSettings:ServiceNetworkSettings default {{service}}\n```\n\n ", "properties": { "networkSettings": { "$ref": "#/types/gcp:appengine/ServiceNetworkSettingsNetworkSettings:ServiceNetworkSettingsNetworkSettings", @@ -89984,7 +90240,7 @@ } }, "gcp:appengine/standardAppVersion:StandardAppVersion": { - "description": "Standard App Version resource to create a new version of standard GAE Application.\nLearn about the differences between the standard environment and the flexible environment\nat https://cloud.google.com/appengine/docs/the-appengine-environments.\nCurrently supporting Zip and File Containers.\n\n\nTo get more information about StandardAppVersion, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/appengine/docs/standard)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Standard App Version\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customServiceAccount = new gcp.serviceaccount.Account(\"customServiceAccount\", {\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gaeApi\", {\n project: customServiceAccount.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storageViewer\", {\n project: customServiceAccount.project,\n role: \"roles/storage.objectViewer\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.StandardAppVersion(\"myappV1\", {\n versionId: \"v1\",\n service: \"myapp\",\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n automaticScaling: {\n maxConcurrentRequests: 10,\n minIdleInstances: 1,\n maxIdleInstances: 3,\n minPendingLatency: \"1s\",\n maxPendingLatency: \"5s\",\n standardSchedulerSettings: {\n targetCpuUtilization: 0.5,\n targetThroughputUtilization: 0.75,\n minInstances: 2,\n maxInstances: 10,\n },\n },\n deleteServiceOnDestroy: true,\n serviceAccount: customServiceAccount.email,\n});\nconst myappV2 = new gcp.appengine.StandardAppVersion(\"myappV2\", {\n versionId: \"v2\",\n service: \"myapp\",\n runtime: \"nodejs10\",\n appEngineApis: true,\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n basicScaling: {\n maxInstances: 5,\n },\n noopOnDestroy: true,\n serviceAccount: customServiceAccount.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_service_account = gcp.service_account.Account(\"customServiceAccount\",\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gaeApi\",\n project=custom_service_account.project,\n role=\"roles/compute.networkUser\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_viewer = gcp.projects.IAMMember(\"storageViewer\",\n project=custom_service_account.project,\n role=\"roles/storage.objectViewer\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.StandardAppVersion(\"myappV1\",\n version_id=\"v1\",\n service=\"myapp\",\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n automatic_scaling=gcp.appengine.StandardAppVersionAutomaticScalingArgs(\n max_concurrent_requests=10,\n min_idle_instances=1,\n max_idle_instances=3,\n min_pending_latency=\"1s\",\n max_pending_latency=\"5s\",\n standard_scheduler_settings=gcp.appengine.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs(\n target_cpu_utilization=0.5,\n target_throughput_utilization=0.75,\n min_instances=2,\n max_instances=10,\n ),\n ),\n delete_service_on_destroy=True,\n service_account=custom_service_account.email)\nmyapp_v2 = gcp.appengine.StandardAppVersion(\"myappV2\",\n version_id=\"v2\",\n service=\"myapp\",\n runtime=\"nodejs10\",\n app_engine_apis=True,\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n basic_scaling=gcp.appengine.StandardAppVersionBasicScalingArgs(\n max_instances=5,\n ),\n noop_on_destroy=True,\n service_account=custom_service_account.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customServiceAccount = new Gcp.ServiceAccount.Account(\"customServiceAccount\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gaeApi\", new()\n {\n Project = customServiceAccount.Project,\n Role = \"roles/compute.networkUser\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageViewer = new Gcp.Projects.IAMMember(\"storageViewer\", new()\n {\n Project = customServiceAccount.Project,\n Role = \"roles/storage.objectViewer\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.StandardAppVersion(\"myappV1\", new()\n {\n VersionId = \"v1\",\n Service = \"myapp\",\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.StandardAppVersionAutomaticScalingArgs\n {\n MaxConcurrentRequests = 10,\n MinIdleInstances = 1,\n MaxIdleInstances = 3,\n MinPendingLatency = \"1s\",\n MaxPendingLatency = \"5s\",\n StandardSchedulerSettings = new Gcp.AppEngine.Inputs.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs\n {\n TargetCpuUtilization = 0.5,\n TargetThroughputUtilization = 0.75,\n MinInstances = 2,\n MaxInstances = 10,\n },\n },\n DeleteServiceOnDestroy = true,\n ServiceAccount = customServiceAccount.Email,\n });\n\n var myappV2 = new Gcp.AppEngine.StandardAppVersion(\"myappV2\", new()\n {\n VersionId = \"v2\",\n Service = \"myapp\",\n Runtime = \"nodejs10\",\n AppEngineApis = true,\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n BasicScaling = new Gcp.AppEngine.Inputs.StandardAppVersionBasicScalingArgs\n {\n MaxInstances = 5,\n },\n NoopOnDestroy = true,\n ServiceAccount = customServiceAccount.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomServiceAccount, err := serviceAccount.NewAccount(ctx, \"customServiceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Custom Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"gaeApi\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: customServiceAccount.Project,\n\t\t\tRole: pulumi.String(\"roles/compute.networkUser\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"storageViewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: customServiceAccount.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewStandardAppVersion(ctx, \"myappV1\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.StandardAppVersionAutomaticScalingArgs{\n\t\t\t\tMaxConcurrentRequests: pulumi.Int(10),\n\t\t\t\tMinIdleInstances: pulumi.Int(1),\n\t\t\t\tMaxIdleInstances: pulumi.Int(3),\n\t\t\t\tMinPendingLatency: pulumi.String(\"1s\"),\n\t\t\t\tMaxPendingLatency: pulumi.String(\"5s\"),\n\t\t\t\tStandardSchedulerSettings: \u0026appengine.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs{\n\t\t\t\t\tTargetCpuUtilization: pulumi.Float64(0.5),\n\t\t\t\t\tTargetThroughputUtilization: pulumi.Float64(0.75),\n\t\t\t\t\tMinInstances: pulumi.Int(2),\n\t\t\t\t\tMaxInstances: pulumi.Int(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t\tServiceAccount: customServiceAccount.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewStandardAppVersion(ctx, \"myappV2\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v2\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tAppEngineApis: pulumi.Bool(true),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tBasicScaling: \u0026appengine.StandardAppVersionBasicScalingArgs{\n\t\t\t\tMaxInstances: pulumi.Int(5),\n\t\t\t},\n\t\t\tNoopOnDestroy: pulumi.Bool(true),\n\t\t\tServiceAccount: customServiceAccount.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionBasicScalingArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customServiceAccount = new Account(\"customServiceAccount\", AccountArgs.builder() \n .accountId(\"my-account\")\n .displayName(\"Custom Service Account\")\n .build());\n\n var gaeApi = new IAMMember(\"gaeApi\", IAMMemberArgs.builder() \n .project(customServiceAccount.project())\n .role(\"roles/compute.networkUser\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageViewer = new IAMMember(\"storageViewer\", IAMMemberArgs.builder() \n .project(customServiceAccount.project())\n .role(\"roles/storage.objectViewer\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\n .build());\n\n var myappV1 = new StandardAppVersion(\"myappV1\", StandardAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"myapp\")\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .automaticScaling(StandardAppVersionAutomaticScalingArgs.builder()\n .maxConcurrentRequests(10)\n .minIdleInstances(1)\n .maxIdleInstances(3)\n .minPendingLatency(\"1s\")\n .maxPendingLatency(\"5s\")\n .standardSchedulerSettings(StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs.builder()\n .targetCpuUtilization(0.5)\n .targetThroughputUtilization(0.75)\n .minInstances(2)\n .maxInstances(10)\n .build())\n .build())\n .deleteServiceOnDestroy(true)\n .serviceAccount(customServiceAccount.email())\n .build());\n\n var myappV2 = new StandardAppVersion(\"myappV2\", StandardAppVersionArgs.builder() \n .versionId(\"v2\")\n .service(\"myapp\")\n .runtime(\"nodejs10\")\n .appEngineApis(true)\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .basicScaling(StandardAppVersionBasicScalingArgs.builder()\n .maxInstances(5)\n .build())\n .noopOnDestroy(true)\n .serviceAccount(customServiceAccount.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customServiceAccount:\n type: gcp:serviceAccount:Account\n properties:\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n properties:\n project: ${customServiceAccount.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${customServiceAccount.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: myapp\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n automaticScaling:\n maxConcurrentRequests: 10\n minIdleInstances: 1\n maxIdleInstances: 3\n minPendingLatency: 1s\n maxPendingLatency: 5s\n standardSchedulerSettings:\n targetCpuUtilization: 0.5\n targetThroughputUtilization: 0.75\n minInstances: 2\n maxInstances: 10\n deleteServiceOnDestroy: true\n serviceAccount: ${customServiceAccount.email}\n myappV2:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v2\n service: myapp\n runtime: nodejs10\n appEngineApis: true\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n basicScaling:\n maxInstances: 5\n noopOnDestroy: true\n serviceAccount: ${customServiceAccount.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nStandardAppVersion can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{project}}/{{service}}/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{service}}/{{version_id}}\n```\n\n ", + "description": "Standard App Version resource to create a new version of standard GAE Application.\nLearn about the differences between the standard environment and the flexible environment\nat https://cloud.google.com/appengine/docs/the-appengine-environments.\nCurrently supporting Zip and File Containers.\n\n\nTo get more information about StandardAppVersion, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/appengine/docs/standard)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### App Engine Standard App Version\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customServiceAccount = new gcp.serviceaccount.Account(\"customServiceAccount\", {\n accountId: \"my-account\",\n displayName: \"Custom Service Account\",\n});\nconst gaeApi = new gcp.projects.IAMMember(\"gaeApi\", {\n project: customServiceAccount.project,\n role: \"roles/compute.networkUser\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst storageViewer = new gcp.projects.IAMMember(\"storageViewer\", {\n project: customServiceAccount.project,\n role: \"roles/storage.objectViewer\",\n member: pulumi.interpolate`serviceAccount:${customServiceAccount.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myappV1 = new gcp.appengine.StandardAppVersion(\"myappV1\", {\n versionId: \"v1\",\n service: \"myapp\",\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n automaticScaling: {\n maxConcurrentRequests: 10,\n minIdleInstances: 1,\n maxIdleInstances: 3,\n minPendingLatency: \"1s\",\n maxPendingLatency: \"5s\",\n standardSchedulerSettings: {\n targetCpuUtilization: 0.5,\n targetThroughputUtilization: 0.75,\n minInstances: 2,\n maxInstances: 10,\n },\n },\n deleteServiceOnDestroy: true,\n serviceAccount: customServiceAccount.email,\n});\nconst myappV2 = new gcp.appengine.StandardAppVersion(\"myappV2\", {\n versionId: \"v2\",\n service: \"myapp\",\n runtime: \"nodejs10\",\n appEngineApis: true,\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n basicScaling: {\n maxInstances: 5,\n },\n noopOnDestroy: true,\n serviceAccount: customServiceAccount.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_service_account = gcp.service_account.Account(\"customServiceAccount\",\n account_id=\"my-account\",\n display_name=\"Custom Service Account\")\ngae_api = gcp.projects.IAMMember(\"gaeApi\",\n project=custom_service_account.project,\n role=\"roles/compute.networkUser\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_viewer = gcp.projects.IAMMember(\"storageViewer\",\n project=custom_service_account.project,\n role=\"roles/storage.objectViewer\",\n member=custom_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp_v1 = gcp.appengine.StandardAppVersion(\"myappV1\",\n version_id=\"v1\",\n service=\"myapp\",\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n automatic_scaling=gcp.appengine.StandardAppVersionAutomaticScalingArgs(\n max_concurrent_requests=10,\n min_idle_instances=1,\n max_idle_instances=3,\n min_pending_latency=\"1s\",\n max_pending_latency=\"5s\",\n standard_scheduler_settings=gcp.appengine.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs(\n target_cpu_utilization=0.5,\n target_throughput_utilization=0.75,\n min_instances=2,\n max_instances=10,\n ),\n ),\n delete_service_on_destroy=True,\n service_account=custom_service_account.email)\nmyapp_v2 = gcp.appengine.StandardAppVersion(\"myappV2\",\n version_id=\"v2\",\n service=\"myapp\",\n runtime=\"nodejs10\",\n app_engine_apis=True,\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n basic_scaling=gcp.appengine.StandardAppVersionBasicScalingArgs(\n max_instances=5,\n ),\n noop_on_destroy=True,\n service_account=custom_service_account.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customServiceAccount = new Gcp.ServiceAccount.Account(\"customServiceAccount\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Custom Service Account\",\n });\n\n var gaeApi = new Gcp.Projects.IAMMember(\"gaeApi\", new()\n {\n Project = customServiceAccount.Project,\n Role = \"roles/compute.networkUser\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageViewer = new Gcp.Projects.IAMMember(\"storageViewer\", new()\n {\n Project = customServiceAccount.Project,\n Role = \"roles/storage.objectViewer\",\n Member = customServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myappV1 = new Gcp.AppEngine.StandardAppVersion(\"myappV1\", new()\n {\n VersionId = \"v1\",\n Service = \"myapp\",\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.StandardAppVersionAutomaticScalingArgs\n {\n MaxConcurrentRequests = 10,\n MinIdleInstances = 1,\n MaxIdleInstances = 3,\n MinPendingLatency = \"1s\",\n MaxPendingLatency = \"5s\",\n StandardSchedulerSettings = new Gcp.AppEngine.Inputs.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs\n {\n TargetCpuUtilization = 0.5,\n TargetThroughputUtilization = 0.75,\n MinInstances = 2,\n MaxInstances = 10,\n },\n },\n DeleteServiceOnDestroy = true,\n ServiceAccount = customServiceAccount.Email,\n });\n\n var myappV2 = new Gcp.AppEngine.StandardAppVersion(\"myappV2\", new()\n {\n VersionId = \"v2\",\n Service = \"myapp\",\n Runtime = \"nodejs10\",\n AppEngineApis = true,\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n BasicScaling = new Gcp.AppEngine.Inputs.StandardAppVersionBasicScalingArgs\n {\n MaxInstances = 5,\n },\n NoopOnDestroy = true,\n ServiceAccount = customServiceAccount.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomServiceAccount, err := serviceAccount.NewAccount(ctx, \"customServiceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Custom Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"gaeApi\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: customServiceAccount.Project,\n\t\t\tRole: pulumi.String(\"roles/compute.networkUser\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"storageViewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: customServiceAccount.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: customServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewStandardAppVersion(ctx, \"myappV1\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.StandardAppVersionAutomaticScalingArgs{\n\t\t\t\tMaxConcurrentRequests: pulumi.Int(10),\n\t\t\t\tMinIdleInstances: pulumi.Int(1),\n\t\t\t\tMaxIdleInstances: pulumi.Int(3),\n\t\t\t\tMinPendingLatency: pulumi.String(\"1s\"),\n\t\t\t\tMaxPendingLatency: pulumi.String(\"5s\"),\n\t\t\t\tStandardSchedulerSettings: \u0026appengine.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs{\n\t\t\t\t\tTargetCpuUtilization: pulumi.Float64(0.5),\n\t\t\t\t\tTargetThroughputUtilization: pulumi.Float64(0.75),\n\t\t\t\t\tMinInstances: pulumi.Int(2),\n\t\t\t\t\tMaxInstances: pulumi.Int(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t\tServiceAccount: customServiceAccount.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appengine.NewStandardAppVersion(ctx, \"myappV2\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v2\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tAppEngineApis: pulumi.Bool(true),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tBasicScaling: \u0026appengine.StandardAppVersionBasicScalingArgs{\n\t\t\t\tMaxInstances: pulumi.Int(5),\n\t\t\t},\n\t\t\tNoopOnDestroy: pulumi.Bool(true),\n\t\t\tServiceAccount: customServiceAccount.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionBasicScalingArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customServiceAccount = new Account(\"customServiceAccount\", AccountArgs.builder() \n .accountId(\"my-account\")\n .displayName(\"Custom Service Account\")\n .build());\n\n var gaeApi = new IAMMember(\"gaeApi\", IAMMemberArgs.builder() \n .project(customServiceAccount.project())\n .role(\"roles/compute.networkUser\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageViewer = new IAMMember(\"storageViewer\", IAMMemberArgs.builder() \n .project(customServiceAccount.project())\n .role(\"roles/storage.objectViewer\")\n .member(customServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var myappV1 = new StandardAppVersion(\"myappV1\", StandardAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"myapp\")\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .automaticScaling(StandardAppVersionAutomaticScalingArgs.builder()\n .maxConcurrentRequests(10)\n .minIdleInstances(1)\n .maxIdleInstances(3)\n .minPendingLatency(\"1s\")\n .maxPendingLatency(\"5s\")\n .standardSchedulerSettings(StandardAppVersionAutomaticScalingStandardSchedulerSettingsArgs.builder()\n .targetCpuUtilization(0.5)\n .targetThroughputUtilization(0.75)\n .minInstances(2)\n .maxInstances(10)\n .build())\n .build())\n .deleteServiceOnDestroy(true)\n .serviceAccount(customServiceAccount.email())\n .build());\n\n var myappV2 = new StandardAppVersion(\"myappV2\", StandardAppVersionArgs.builder() \n .versionId(\"v2\")\n .service(\"myapp\")\n .runtime(\"nodejs10\")\n .appEngineApis(true)\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .basicScaling(StandardAppVersionBasicScalingArgs.builder()\n .maxInstances(5)\n .build())\n .noopOnDestroy(true)\n .serviceAccount(customServiceAccount.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customServiceAccount:\n type: gcp:serviceAccount:Account\n properties:\n accountId: my-account\n displayName: Custom Service Account\n gaeApi:\n type: gcp:projects:IAMMember\n properties:\n project: ${customServiceAccount.project}\n role: roles/compute.networkUser\n member: serviceAccount:${customServiceAccount.email}\n storageViewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${customServiceAccount.project}\n role: roles/storage.objectViewer\n member: serviceAccount:${customServiceAccount.email}\n myappV1:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: myapp\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n automaticScaling:\n maxConcurrentRequests: 10\n minIdleInstances: 1\n maxIdleInstances: 3\n minPendingLatency: 1s\n maxPendingLatency: 5s\n standardSchedulerSettings:\n targetCpuUtilization: 0.5\n targetThroughputUtilization: 0.75\n minInstances: 2\n maxInstances: 10\n deleteServiceOnDestroy: true\n serviceAccount: ${customServiceAccount.email}\n myappV2:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v2\n service: myapp\n runtime: nodejs10\n appEngineApis: true\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n basicScaling:\n maxInstances: 5\n noopOnDestroy: true\n serviceAccount: ${customServiceAccount.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nStandardAppVersion can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default apps/{{project}}/services/{{service}}/versions/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{project}}/{{service}}/{{version_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:appengine/standardAppVersion:StandardAppVersion default {{service}}/{{version_id}}\n```\n\n ", "properties": { "appEngineApis": { "type": "boolean", @@ -91047,6 +91303,132 @@ "type": "object" } }, + "gcp:backupdisasterrecovery/managementServer:ManagementServer": { + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Backup Dr Management Server\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"defaultNetwork\", {}, {\n provider: google_beta,\n});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"privateIpAddress\", {\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 20,\n network: defaultNetwork.id,\n}, {\n provider: google_beta,\n});\nconst defaultConnection = new gcp.servicenetworking.Connection(\"defaultConnection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n}, {\n provider: google_beta,\n});\nconst ms_console = new gcp.backupdisasterrecovery.ManagementServer(\"ms-console\", {\n location: \"us-central1\",\n type: \"BACKUP_RESTORE\",\n networks: [{\n network: defaultNetwork.id,\n peeringMode: \"PRIVATE_SERVICE_ACCESS\",\n }],\n}, {\n provider: google_beta,\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"defaultNetwork\", opts=pulumi.ResourceOptions(provider=google_beta))\nprivate_ip_address = gcp.compute.GlobalAddress(\"privateIpAddress\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=20,\n network=default_network.id,\n opts=pulumi.ResourceOptions(provider=google_beta))\ndefault_connection = gcp.servicenetworking.Connection(\"defaultConnection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name],\n opts=pulumi.ResourceOptions(provider=google_beta))\nms_console = gcp.backupdisasterrecovery.ManagementServer(\"ms-console\",\n location=\"us-central1\",\n type=\"BACKUP_RESTORE\",\n networks=[gcp.backupdisasterrecovery.ManagementServerNetworkArgs(\n network=default_network.id,\n peering_mode=\"PRIVATE_SERVICE_ACCESS\",\n )],\n opts=pulumi.ResourceOptions(provider=google_beta,\n depends_on=[default_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"defaultNetwork\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"privateIpAddress\", new()\n {\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 20,\n Network = defaultNetwork.Id,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"defaultConnection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var ms_console = new Gcp.BackupDisasterRecovery.ManagementServer(\"ms-console\", new()\n {\n Location = \"us-central1\",\n Type = \"BACKUP_RESTORE\",\n Networks = new[]\n {\n new Gcp.BackupDisasterRecovery.Inputs.ManagementServerNetworkArgs\n {\n Network = defaultNetwork.Id,\n PeeringMode = \"PRIVATE_SERVICE_ACCESS\",\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n DependsOn = new[]\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"defaultNetwork\", nil, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"privateIpAddress\", \u0026compute.GlobalAddressArgs{\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"defaultConnection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAddress.Name,\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backupdisasterrecovery.NewManagementServer(ctx, \"ms-console\", \u0026backupdisasterrecovery.ManagementServerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BACKUP_RESTORE\"),\n\t\t\tNetworks: backupdisasterrecovery.ManagementServerNetworkArray{\n\t\t\t\t\u0026backupdisasterrecovery.ManagementServerNetworkArgs{\n\t\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t\t\tPeeringMode: pulumi.String(\"PRIVATE_SERVICE_ACCESS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta), pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.backupdisasterrecovery.ManagementServer;\nimport com.pulumi.gcp.backupdisasterrecovery.ManagementServerArgs;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.ManagementServerNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.Empty, CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder() \n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(20)\n .network(defaultNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder() \n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var ms_console = new ManagementServer(\"ms-console\", ManagementServerArgs.builder() \n .location(\"us-central1\")\n .type(\"BACKUP_RESTORE\")\n .networks(ManagementServerNetworkArgs.builder()\n .network(defaultNetwork.id())\n .peeringMode(\"PRIVATE_SERVICE_ACCESS\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNetwork:\n type: gcp:compute:Network\n options:\n provider: ${[\"google-beta\"]}\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n properties:\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 20\n network: ${defaultNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultConnection:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n options:\n provider: ${[\"google-beta\"]}\n ms-console:\n type: gcp:backupdisasterrecovery:ManagementServer\n properties:\n location: us-central1\n type: BACKUP_RESTORE\n networks:\n - network: ${defaultNetwork.id}\n peeringMode: PRIVATE_SERVICE_ACCESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${defaultConnection}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nManagementServer can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}}\n```\n\n ", + "properties": { + "location": { + "type": "string", + "description": "The location for the management server (management console)\n" + }, + "managementUris": { + "type": "array", + "items": { + "$ref": "#/types/gcp:backupdisasterrecovery/ManagementServerManagementUri:ManagementServerManagementUri" + }, + "description": "The management console URI\nStructure is documented below.\n" + }, + "name": { + "type": "string", + "description": "The name of management server (management console)\n" + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/gcp:backupdisasterrecovery/ManagementServerNetwork:ManagementServerNetwork" + }, + "description": "Network details to create management server (management console).\nStructure is documented below.\n" + }, + "oauth2ClientId": { + "type": "string", + "description": "The oauth2ClientId of management console.\n" + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n" + }, + "type": { + "type": "string", + "description": "The type of management server (management console).\nDefault value is `BACKUP_RESTORE`.\nPossible values are: `BACKUP_RESTORE`.\n" + } + }, + "required": [ + "location", + "managementUris", + "name", + "networks", + "oauth2ClientId", + "project" + ], + "inputProperties": { + "location": { + "type": "string", + "description": "The location for the management server (management console)\n", + "willReplaceOnChanges": true + }, + "name": { + "type": "string", + "description": "The name of management server (management console)\n", + "willReplaceOnChanges": true + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/gcp:backupdisasterrecovery/ManagementServerNetwork:ManagementServerNetwork" + }, + "description": "Network details to create management server (management console).\nStructure is documented below.\n", + "willReplaceOnChanges": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n", + "willReplaceOnChanges": true + }, + "type": { + "type": "string", + "description": "The type of management server (management console).\nDefault value is `BACKUP_RESTORE`.\nPossible values are: `BACKUP_RESTORE`.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "location", + "networks" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering ManagementServer resources.\n", + "properties": { + "location": { + "type": "string", + "description": "The location for the management server (management console)\n", + "willReplaceOnChanges": true + }, + "managementUris": { + "type": "array", + "items": { + "$ref": "#/types/gcp:backupdisasterrecovery/ManagementServerManagementUri:ManagementServerManagementUri" + }, + "description": "The management console URI\nStructure is documented below.\n" + }, + "name": { + "type": "string", + "description": "The name of management server (management console)\n", + "willReplaceOnChanges": true + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/gcp:backupdisasterrecovery/ManagementServerNetwork:ManagementServerNetwork" + }, + "description": "Network details to create management server (management console).\nStructure is documented below.\n", + "willReplaceOnChanges": true + }, + "oauth2ClientId": { + "type": "string", + "description": "The oauth2ClientId of management console.\n" + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n", + "willReplaceOnChanges": true + }, + "type": { + "type": "string", + "description": "The type of management server (management console).\nDefault value is `BACKUP_RESTORE`.\nPossible values are: `BACKUP_RESTORE`.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + } + }, "gcp:beyondcorp/appConnection:AppConnection": { "description": "A BeyondCorp AppConnection resource represents a BeyondCorp protected AppConnection to a remote application.\nIt creates all the necessary GCP components needed for creating a BeyondCorp protected AppConnection. \nMultiple connectors can be authorised for a single AppConnection.\n\n\nTo get more information about AppConnection, see:\n\n* [API documentation](https://cloud.google.com/beyondcorp/docs/reference/rest#rest-resource:-v1.projects.locations.appconnections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/beyondcorp-enterprise/docs/enable-app-connector)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Beyondcorp App Connection Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"serviceAccount\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"appConnector\", {principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n}});\nconst appConnection = new gcp.beyondcorp.AppConnection(\"appConnection\", {\n type: \"TCP_PROXY\",\n applicationEndpoint: {\n host: \"foo-host\",\n port: 8080,\n },\n connectors: [appConnector.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservice_account = gcp.service_account.Account(\"serviceAccount\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_connector = gcp.beyondcorp.AppConnector(\"appConnector\", principal_info=gcp.beyondcorp.AppConnectorPrincipalInfoArgs(\n service_account=gcp.beyondcorp.AppConnectorPrincipalInfoServiceAccountArgs(\n email=service_account.email,\n ),\n))\napp_connection = gcp.beyondcorp.AppConnection(\"appConnection\",\n type=\"TCP_PROXY\",\n application_endpoint=gcp.beyondcorp.AppConnectionApplicationEndpointArgs(\n host=\"foo-host\",\n port=8080,\n ),\n connectors=[app_connector.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serviceAccount = new Gcp.ServiceAccount.Account(\"serviceAccount\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"appConnector\", new()\n {\n PrincipalInfo = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoArgs\n {\n ServiceAccount = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoServiceAccountArgs\n {\n Email = serviceAccount.Email,\n },\n },\n });\n\n var appConnection = new Gcp.Beyondcorp.AppConnection(\"appConnection\", new()\n {\n Type = \"TCP_PROXY\",\n ApplicationEndpoint = new Gcp.Beyondcorp.Inputs.AppConnectionApplicationEndpointArgs\n {\n Host = \"foo-host\",\n Port = 8080,\n },\n Connectors = new[]\n {\n appConnector.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tserviceAccount, err := serviceAccount.NewAccount(ctx, \"serviceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappConnector, err := beyondcorp.NewAppConnector(ctx, \"appConnector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tPrincipalInfo: \u0026beyondcorp.AppConnectorPrincipalInfoArgs{\n\t\t\t\tServiceAccount: \u0026beyondcorp.AppConnectorPrincipalInfoServiceAccountArgs{\n\t\t\t\t\tEmail: serviceAccount.Email,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = beyondcorp.NewAppConnection(ctx, \"appConnection\", \u0026beyondcorp.AppConnectionArgs{\n\t\t\tType: pulumi.String(\"TCP_PROXY\"),\n\t\t\tApplicationEndpoint: \u0026beyondcorp.AppConnectionApplicationEndpointArgs{\n\t\t\t\tHost: pulumi.String(\"foo-host\"),\n\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t},\n\t\t\tConnectors: pulumi.StringArray{\n\t\t\t\tappConnector.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.beyondcorp.AppConnector;\nimport com.pulumi.gcp.beyondcorp.AppConnectorArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoServiceAccountArgs;\nimport com.pulumi.gcp.beyondcorp.AppConnection;\nimport com.pulumi.gcp.beyondcorp.AppConnectionArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectionApplicationEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder() \n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var appConnector = new AppConnector(\"appConnector\", AppConnectorArgs.builder() \n .principalInfo(AppConnectorPrincipalInfoArgs.builder()\n .serviceAccount(AppConnectorPrincipalInfoServiceAccountArgs.builder()\n .email(serviceAccount.email())\n .build())\n .build())\n .build());\n\n var appConnection = new AppConnection(\"appConnection\", AppConnectionArgs.builder() \n .type(\"TCP_PROXY\")\n .applicationEndpoint(AppConnectionApplicationEndpointArgs.builder()\n .host(\"foo-host\")\n .port(8080)\n .build())\n .connectors(appConnector.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serviceAccount:\n type: gcp:serviceAccount:Account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appConnector:\n type: gcp:beyondcorp:AppConnector\n properties:\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n appConnection:\n type: gcp:beyondcorp:AppConnection\n properties:\n type: TCP_PROXY\n applicationEndpoint:\n host: foo-host\n port: 8080\n connectors:\n - ${appConnector.id}\n```\n{{% /example %}}\n{{% example %}}\n### Beyondcorp App Connection Full\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serviceAccount = new gcp.serviceaccount.Account(\"serviceAccount\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst appGateway = new gcp.beyondcorp.AppGateway(\"appGateway\", {\n type: \"TCP_PROXY\",\n hostType: \"GCP_REGIONAL_MIG\",\n});\nconst appConnector = new gcp.beyondcorp.AppConnector(\"appConnector\", {principalInfo: {\n serviceAccount: {\n email: serviceAccount.email,\n },\n}});\nconst appConnection = new gcp.beyondcorp.AppConnection(\"appConnection\", {\n type: \"TCP_PROXY\",\n displayName: \"some display name\",\n applicationEndpoint: {\n host: \"foo-host\",\n port: 8080,\n },\n connectors: [appConnector.id],\n gateway: {\n appGateway: appGateway.id,\n },\n labels: {\n foo: \"bar\",\n bar: \"baz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nservice_account = gcp.service_account.Account(\"serviceAccount\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\napp_gateway = gcp.beyondcorp.AppGateway(\"appGateway\",\n type=\"TCP_PROXY\",\n host_type=\"GCP_REGIONAL_MIG\")\napp_connector = gcp.beyondcorp.AppConnector(\"appConnector\", principal_info=gcp.beyondcorp.AppConnectorPrincipalInfoArgs(\n service_account=gcp.beyondcorp.AppConnectorPrincipalInfoServiceAccountArgs(\n email=service_account.email,\n ),\n))\napp_connection = gcp.beyondcorp.AppConnection(\"appConnection\",\n type=\"TCP_PROXY\",\n display_name=\"some display name\",\n application_endpoint=gcp.beyondcorp.AppConnectionApplicationEndpointArgs(\n host=\"foo-host\",\n port=8080,\n ),\n connectors=[app_connector.id],\n gateway=gcp.beyondcorp.AppConnectionGatewayArgs(\n app_gateway=app_gateway.id,\n ),\n labels={\n \"foo\": \"bar\",\n \"bar\": \"baz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serviceAccount = new Gcp.ServiceAccount.Account(\"serviceAccount\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var appGateway = new Gcp.Beyondcorp.AppGateway(\"appGateway\", new()\n {\n Type = \"TCP_PROXY\",\n HostType = \"GCP_REGIONAL_MIG\",\n });\n\n var appConnector = new Gcp.Beyondcorp.AppConnector(\"appConnector\", new()\n {\n PrincipalInfo = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoArgs\n {\n ServiceAccount = new Gcp.Beyondcorp.Inputs.AppConnectorPrincipalInfoServiceAccountArgs\n {\n Email = serviceAccount.Email,\n },\n },\n });\n\n var appConnection = new Gcp.Beyondcorp.AppConnection(\"appConnection\", new()\n {\n Type = \"TCP_PROXY\",\n DisplayName = \"some display name\",\n ApplicationEndpoint = new Gcp.Beyondcorp.Inputs.AppConnectionApplicationEndpointArgs\n {\n Host = \"foo-host\",\n Port = 8080,\n },\n Connectors = new[]\n {\n appConnector.Id,\n },\n Gateway = new Gcp.Beyondcorp.Inputs.AppConnectionGatewayArgs\n {\n AppGateway = appGateway.Id,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n { \"bar\", \"baz\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tserviceAccount, err := serviceAccount.NewAccount(ctx, \"serviceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappGateway, err := beyondcorp.NewAppGateway(ctx, \"appGateway\", \u0026beyondcorp.AppGatewayArgs{\n\t\t\tType: pulumi.String(\"TCP_PROXY\"),\n\t\t\tHostType: pulumi.String(\"GCP_REGIONAL_MIG\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappConnector, err := beyondcorp.NewAppConnector(ctx, \"appConnector\", \u0026beyondcorp.AppConnectorArgs{\n\t\t\tPrincipalInfo: \u0026beyondcorp.AppConnectorPrincipalInfoArgs{\n\t\t\t\tServiceAccount: \u0026beyondcorp.AppConnectorPrincipalInfoServiceAccountArgs{\n\t\t\t\t\tEmail: serviceAccount.Email,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = beyondcorp.NewAppConnection(ctx, \"appConnection\", \u0026beyondcorp.AppConnectionArgs{\n\t\t\tType: pulumi.String(\"TCP_PROXY\"),\n\t\t\tDisplayName: pulumi.String(\"some display name\"),\n\t\t\tApplicationEndpoint: \u0026beyondcorp.AppConnectionApplicationEndpointArgs{\n\t\t\t\tHost: pulumi.String(\"foo-host\"),\n\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t},\n\t\t\tConnectors: pulumi.StringArray{\n\t\t\t\tappConnector.ID(),\n\t\t\t},\n\t\t\tGateway: \u0026beyondcorp.AppConnectionGatewayArgs{\n\t\t\t\tAppGateway: appGateway.ID(),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\"bar\": pulumi.String(\"baz\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.beyondcorp.AppGateway;\nimport com.pulumi.gcp.beyondcorp.AppGatewayArgs;\nimport com.pulumi.gcp.beyondcorp.AppConnector;\nimport com.pulumi.gcp.beyondcorp.AppConnectorArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectorPrincipalInfoServiceAccountArgs;\nimport com.pulumi.gcp.beyondcorp.AppConnection;\nimport com.pulumi.gcp.beyondcorp.AppConnectionArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectionApplicationEndpointArgs;\nimport com.pulumi.gcp.beyondcorp.inputs.AppConnectionGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder() \n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var appGateway = new AppGateway(\"appGateway\", AppGatewayArgs.builder() \n .type(\"TCP_PROXY\")\n .hostType(\"GCP_REGIONAL_MIG\")\n .build());\n\n var appConnector = new AppConnector(\"appConnector\", AppConnectorArgs.builder() \n .principalInfo(AppConnectorPrincipalInfoArgs.builder()\n .serviceAccount(AppConnectorPrincipalInfoServiceAccountArgs.builder()\n .email(serviceAccount.email())\n .build())\n .build())\n .build());\n\n var appConnection = new AppConnection(\"appConnection\", AppConnectionArgs.builder() \n .type(\"TCP_PROXY\")\n .displayName(\"some display name\")\n .applicationEndpoint(AppConnectionApplicationEndpointArgs.builder()\n .host(\"foo-host\")\n .port(8080)\n .build())\n .connectors(appConnector.id())\n .gateway(AppConnectionGatewayArgs.builder()\n .appGateway(appGateway.id())\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"bar\", \"baz\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n serviceAccount:\n type: gcp:serviceAccount:Account\n properties:\n accountId: my-account\n displayName: Test Service Account\n appGateway:\n type: gcp:beyondcorp:AppGateway\n properties:\n type: TCP_PROXY\n hostType: GCP_REGIONAL_MIG\n appConnector:\n type: gcp:beyondcorp:AppConnector\n properties:\n principalInfo:\n serviceAccount:\n email: ${serviceAccount.email}\n appConnection:\n type: gcp:beyondcorp:AppConnection\n properties:\n type: TCP_PROXY\n displayName: some display name\n applicationEndpoint:\n host: foo-host\n port: 8080\n connectors:\n - ${appConnector.id}\n gateway:\n appGateway: ${appGateway.id}\n labels:\n foo: bar\n bar: baz\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAppConnection can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:beyondcorp/appConnection:AppConnection default projects/{{project}}/locations/{{region}}/appConnections/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:beyondcorp/appConnection:AppConnection default {{name}}\n```\n\n ", "properties": { @@ -93507,7 +93889,7 @@ } }, "gcp:bigquery/job:Job": { - "description": "Jobs are actions that BigQuery runs on your behalf to load data, export data, query data, or copy data.\nOnce a BigQuery job is created, it cannot be changed or deleted.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs)\n* How-to Guides\n * [BigQuery Jobs Intro](https://cloud.google.com/bigquery/docs/jobs-overview)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Bigquery Job Query\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query=gcp.bigquery.JobQueryArgs(\n query=\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destination_table=gcp.bigquery.JobQueryDestinationTableArgs(\n project_id=foo.project,\n dataset_id=foo.dataset_id,\n table_id=foo.table_id,\n ),\n allow_large_results=True,\n flatten_results=True,\n script_options=gcp.bigquery.JobQueryScriptOptionsArgs(\n key_result_statement=\"LAST\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder() \n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Query Table Reference\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n tableId: foo.id,\n },\n defaultDataset: {\n datasetId: bar.id,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query=gcp.bigquery.JobQueryArgs(\n query=\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destination_table=gcp.bigquery.JobQueryDestinationTableArgs(\n table_id=foo.id,\n ),\n default_dataset=gcp.bigquery.JobQueryDefaultDatasetArgs(\n dataset_id=bar.id,\n ),\n allow_large_results=True,\n flatten_results=True,\n script_options=gcp.bigquery.JobQueryScriptOptionsArgs(\n key_result_statement=\"LAST\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n TableId = foo.Id,\n },\n DefaultDataset = new Gcp.BigQuery.Inputs.JobQueryDefaultDatasetArgs\n {\n DatasetId = bar.Id,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tTableId: foo.ID(),\n\t\t\t\t},\n\t\t\t\tDefaultDataset: \u0026bigquery.JobQueryDefaultDatasetArgs{\n\t\t\t\t\tDatasetId: bar.ID(),\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDefaultDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder() \n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .tableId(foo.id())\n .build())\n .defaultDataset(JobQueryDefaultDatasetArgs.builder()\n .datasetId(bar.id())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n tableId: ${foo.id}\n defaultDataset:\n datasetId: ${bar.id}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Load\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_load_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n skipLeadingRows: 1,\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n autodetect: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_load_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load=gcp.bigquery.JobLoadArgs(\n source_uris=[\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n destination_table=gcp.bigquery.JobLoadDestinationTableArgs(\n project_id=foo.project,\n dataset_id=foo.dataset_id,\n table_id=foo.table_id,\n ),\n skip_leading_rows=1,\n schema_update_options=[\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n write_disposition=\"WRITE_APPEND\",\n autodetect=True,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_load_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n \"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\",\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n SkipLeadingRows = 1,\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n Autodetect = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder() \n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_load_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\")\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .skipLeadingRows(1)\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .autodetect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_load_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n skipLeadingRows: 1\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n autodetect: true\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Load Parquet\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testBucket = new gcp.storage.Bucket(\"testBucket\", {\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst testBucketObject = new gcp.storage.BucketObject(\"testBucketObject\", {\n source: new pulumi.asset.FileAsset(\"./test-fixtures/bigquerytable/test.parquet.gzip\"),\n bucket: testBucket.name,\n});\nconst testDataset = new gcp.bigquery.Dataset(\"testDataset\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst testTable = new gcp.bigquery.Table(\"testTable\", {\n deletionProtection: false,\n tableId: \"job_load_table\",\n datasetId: testDataset.datasetId,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [pulumi.interpolate`gs://${testBucketObject.bucket}/${testBucketObject.name}`],\n destinationTable: {\n projectId: testTable.project,\n datasetId: testTable.datasetId,\n tableId: testTable.tableId,\n },\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n sourceFormat: \"PARQUET\",\n autodetect: true,\n parquetOptions: {\n enumAsString: true,\n enableListInference: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_bucket = gcp.storage.Bucket(\"testBucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ntest_bucket_object = gcp.storage.BucketObject(\"testBucketObject\",\n source=pulumi.FileAsset(\"./test-fixtures/bigquerytable/test.parquet.gzip\"),\n bucket=test_bucket.name)\ntest_dataset = gcp.bigquery.Dataset(\"testDataset\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntest_table = gcp.bigquery.Table(\"testTable\",\n deletion_protection=False,\n table_id=\"job_load_table\",\n dataset_id=test_dataset.dataset_id)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load=gcp.bigquery.JobLoadArgs(\n source_uris=[pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f\"gs://{bucket}/{name}\")],\n destination_table=gcp.bigquery.JobLoadDestinationTableArgs(\n project_id=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id,\n ),\n schema_update_options=[\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n write_disposition=\"WRITE_APPEND\",\n source_format=\"PARQUET\",\n autodetect=True,\n parquet_options=gcp.bigquery.JobLoadParquetOptionsArgs(\n enum_as_string=True,\n enable_list_inference=True,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testBucket = new Gcp.Storage.Bucket(\"testBucket\", new()\n {\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var testBucketObject = new Gcp.Storage.BucketObject(\"testBucketObject\", new()\n {\n Source = new FileAsset(\"./test-fixtures/bigquerytable/test.parquet.gzip\"),\n Bucket = testBucket.Name,\n });\n\n var testDataset = new Gcp.BigQuery.Dataset(\"testDataset\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"testTable\", new()\n {\n DeletionProtection = false,\n TableId = \"job_load_table\",\n DatasetId = testDataset.DatasetId,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n Output.Tuple(testBucketObject.Bucket, testBucketObject.Name).Apply(values =\u003e\n {\n var bucket = values.Item1;\n var name = values.Item2;\n return $\"gs://{bucket}/{name}\";\n }),\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = testTable.Project,\n DatasetId = testTable.DatasetId,\n TableId = testTable.TableId,\n },\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n SourceFormat = \"PARQUET\",\n Autodetect = true,\n ParquetOptions = new Gcp.BigQuery.Inputs.JobLoadParquetOptionsArgs\n {\n EnumAsString = true,\n EnableListInference = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestBucket, err := storage.NewBucket(ctx, \"testBucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestBucketObject, err := storage.NewBucketObject(ctx, \"testBucketObject\", \u0026storage.BucketObjectArgs{\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/bigquerytable/test.parquet.gzip\"),\n\t\t\tBucket: testBucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataset, err := bigquery.NewDataset(ctx, \"testDataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"testTable\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tDatasetId: testDataset.DatasetId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.All(testBucketObject.Bucket, testBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucket := _args[0].(string)\n\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucket, name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: testTable.Project,\n\t\t\t\t\tDatasetId: testTable.DatasetId,\n\t\t\t\t\tTableId: testTable.TableId,\n\t\t\t\t},\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tSourceFormat: pulumi.String(\"PARQUET\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tParquetOptions: \u0026bigquery.JobLoadParquetOptionsArgs{\n\t\t\t\t\tEnumAsString: pulumi.Bool(true),\n\t\t\t\t\tEnableListInference: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadParquetOptionsArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testBucket = new Bucket(\"testBucket\", BucketArgs.builder() \n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var testBucketObject = new BucketObject(\"testBucketObject\", BucketObjectArgs.builder() \n .source(new FileAsset(\"./test-fixtures/bigquerytable/test.parquet.gzip\"))\n .bucket(testBucket.name())\n .build());\n\n var testDataset = new Dataset(\"testDataset\", DatasetArgs.builder() \n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder() \n .deletionProtection(false)\n .tableId(\"job_load_table\")\n .datasetId(testDataset.datasetId())\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(Output.tuple(testBucketObject.bucket(), testBucketObject.name()).applyValue(values -\u003e {\n var bucket = values.t1;\n var name = values.t2;\n return String.format(\"gs://%s/%s\", bucket,name);\n }))\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(testTable.project())\n .datasetId(testTable.datasetId())\n .tableId(testTable.tableId())\n .build())\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .sourceFormat(\"PARQUET\")\n .autodetect(true)\n .parquetOptions(JobLoadParquetOptionsArgs.builder()\n .enumAsString(true)\n .enableListInference(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testBucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n uniformBucketLevelAccess: true\n testBucketObject:\n type: gcp:storage:BucketObject\n properties:\n source:\n fn::FileAsset: ./test-fixtures/bigquerytable/test.parquet.gzip\n bucket: ${testBucket.name}\n testDataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n testTable:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n tableId: job_load_table\n datasetId: ${testDataset.datasetId}\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://${testBucketObject.bucket}/${testBucketObject.name}\n destinationTable:\n projectId: ${testTable.project}\n datasetId: ${testTable.datasetId}\n tableId: ${testTable.tableId}\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n sourceFormat: PARQUET\n autodetect: true\n parquetOptions:\n enumAsString: true\n enableListInference: true\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Extract\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_oneDataset = new gcp.bigquery.Dataset(\"source-oneDataset\", {\n datasetId: \"job_extract_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst source_oneTable = new gcp.bigquery.Table(\"source-oneTable\", {\n deletionProtection: false,\n datasetId: source_oneDataset.datasetId,\n tableId: \"job_extract_table\",\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst dest = new gcp.storage.Bucket(\"dest\", {\n location: \"US\",\n forceDestroy: true,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_extract\",\n extract: {\n destinationUris: [pulumi.interpolate`${dest.url}/extract`],\n sourceTable: {\n projectId: source_oneTable.project,\n datasetId: source_oneTable.datasetId,\n tableId: source_oneTable.tableId,\n },\n destinationFormat: \"NEWLINE_DELIMITED_JSON\",\n compression: \"GZIP\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_one_dataset = gcp.bigquery.Dataset(\"source-oneDataset\",\n dataset_id=\"job_extract_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsource_one_table = gcp.bigquery.Table(\"source-oneTable\",\n deletion_protection=False,\n dataset_id=source_one_dataset.dataset_id,\n table_id=\"job_extract_table\",\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\ndest = gcp.storage.Bucket(\"dest\",\n location=\"US\",\n force_destroy=True)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_extract\",\n extract=gcp.bigquery.JobExtractArgs(\n destination_uris=[dest.url.apply(lambda url: f\"{url}/extract\")],\n source_table=gcp.bigquery.JobExtractSourceTableArgs(\n project_id=source_one_table.project,\n dataset_id=source_one_table.dataset_id,\n table_id=source_one_table.table_id,\n ),\n destination_format=\"NEWLINE_DELIMITED_JSON\",\n compression=\"GZIP\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_oneDataset = new Gcp.BigQuery.Dataset(\"source-oneDataset\", new()\n {\n DatasetId = \"job_extract_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var source_oneTable = new Gcp.BigQuery.Table(\"source-oneTable\", new()\n {\n DeletionProtection = false,\n DatasetId = source_oneDataset.DatasetId,\n TableId = \"job_extract_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_extract\",\n Extract = new Gcp.BigQuery.Inputs.JobExtractArgs\n {\n DestinationUris = new[]\n {\n dest.Url.Apply(url =\u003e $\"{url}/extract\"),\n },\n SourceTable = new Gcp.BigQuery.Inputs.JobExtractSourceTableArgs\n {\n ProjectId = source_oneTable.Project,\n DatasetId = source_oneTable.DatasetId,\n TableId = source_oneTable.TableId,\n },\n DestinationFormat = \"NEWLINE_DELIMITED_JSON\",\n Compression = \"GZIP\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"source-oneDataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_extract_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"source-oneTable\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: source_oneDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_extract_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_extract\"),\n\t\t\tExtract: \u0026bigquery.JobExtractArgs{\n\t\t\t\tDestinationUris: pulumi.StringArray{\n\t\t\t\t\tdest.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/extract\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tSourceTable: \u0026bigquery.JobExtractSourceTableArgs{\n\t\t\t\t\tProjectId: source_oneTable.Project,\n\t\t\t\t\tDatasetId: source_oneTable.DatasetId,\n\t\t\t\t\tTableId: source_oneTable.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractSourceTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_oneDataset = new Dataset(\"source-oneDataset\", DatasetArgs.builder() \n .datasetId(\"job_extract_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var source_oneTable = new Table(\"source-oneTable\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(source_oneDataset.datasetId())\n .tableId(\"job_extract_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var dest = new Bucket(\"dest\", BucketArgs.builder() \n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_extract\")\n .extract(JobExtractArgs.builder()\n .destinationUris(dest.url().applyValue(url -\u003e String.format(\"%s/extract\", url)))\n .sourceTable(JobExtractSourceTableArgs.builder()\n .projectId(source_oneTable.project())\n .datasetId(source_oneTable.datasetId())\n .tableId(source_oneTable.tableId())\n .build())\n .destinationFormat(\"NEWLINE_DELIMITED_JSON\")\n .compression(\"GZIP\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-oneTable:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"source-oneDataset\"].datasetId}\n tableId: job_extract_table\n schema: |\n [\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n ]\n source-oneDataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_extract_dataset\n friendlyName: test\n description: This is a test description\n location: US\n dest:\n type: gcp:storage:Bucket\n properties:\n location: US\n forceDestroy: true\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_extract\n extract:\n destinationUris:\n - ${dest.url}/extract\n sourceTable:\n projectId: ${[\"source-oneTable\"].project}\n datasetId: ${[\"source-oneTable\"].datasetId}\n tableId: ${[\"source-oneTable\"].tableId}\n destinationFormat: NEWLINE_DELIMITED_JSON\n compression: GZIP\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nJob can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}/location/{{location}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}/{{location}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{job_id}}/{{location}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{job_id}}\n```\n\n ", + "description": "Jobs are actions that BigQuery runs on your behalf to load data, export data, query data, or copy data.\nOnce a BigQuery job is created, it cannot be changed or deleted.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs)\n* How-to Guides\n * [BigQuery Jobs Intro](https://cloud.google.com/bigquery/docs/jobs-overview)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Bigquery Job Query\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query=gcp.bigquery.JobQueryArgs(\n query=\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destination_table=gcp.bigquery.JobQueryDestinationTableArgs(\n project_id=foo.project,\n dataset_id=foo.dataset_id,\n table_id=foo.table_id,\n ),\n allow_large_results=True,\n flatten_results=True,\n script_options=gcp.bigquery.JobQueryScriptOptionsArgs(\n key_result_statement=\"LAST\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder() \n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Query Table Reference\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n tableId: foo.id,\n },\n defaultDataset: {\n datasetId: bar.id,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query=gcp.bigquery.JobQueryArgs(\n query=\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destination_table=gcp.bigquery.JobQueryDestinationTableArgs(\n table_id=foo.id,\n ),\n default_dataset=gcp.bigquery.JobQueryDefaultDatasetArgs(\n dataset_id=bar.id,\n ),\n allow_large_results=True,\n flatten_results=True,\n script_options=gcp.bigquery.JobQueryScriptOptionsArgs(\n key_result_statement=\"LAST\",\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n TableId = foo.Id,\n },\n DefaultDataset = new Gcp.BigQuery.Inputs.JobQueryDefaultDatasetArgs\n {\n DatasetId = bar.Id,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tTableId: foo.ID(),\n\t\t\t\t},\n\t\t\t\tDefaultDataset: \u0026bigquery.JobQueryDefaultDatasetArgs{\n\t\t\t\t\tDatasetId: bar.ID(),\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDefaultDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder() \n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .tableId(foo.id())\n .build())\n .defaultDataset(JobQueryDefaultDatasetArgs.builder()\n .datasetId(bar.id())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n tableId: ${foo.id}\n defaultDataset:\n datasetId: ${bar.id}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Load\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_load_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n skipLeadingRows: 1,\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n autodetect: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_load_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load=gcp.bigquery.JobLoadArgs(\n source_uris=[\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n destination_table=gcp.bigquery.JobLoadDestinationTableArgs(\n project_id=foo.project,\n dataset_id=foo.dataset_id,\n table_id=foo.table_id,\n ),\n skip_leading_rows=1,\n schema_update_options=[\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n write_disposition=\"WRITE_APPEND\",\n autodetect=True,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_load_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n \"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\",\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n SkipLeadingRows = 1,\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n Autodetect = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder() \n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_load_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\")\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .skipLeadingRows(1)\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .autodetect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_load_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n skipLeadingRows: 1\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n autodetect: true\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Load Parquet\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testBucket = new gcp.storage.Bucket(\"testBucket\", {\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst testBucketObject = new gcp.storage.BucketObject(\"testBucketObject\", {\n source: new pulumi.asset.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket: testBucket.name,\n});\nconst testDataset = new gcp.bigquery.Dataset(\"testDataset\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst testTable = new gcp.bigquery.Table(\"testTable\", {\n deletionProtection: false,\n tableId: \"job_load_table\",\n datasetId: testDataset.datasetId,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [pulumi.interpolate`gs://${testBucketObject.bucket}/${testBucketObject.name}`],\n destinationTable: {\n projectId: testTable.project,\n datasetId: testTable.datasetId,\n tableId: testTable.tableId,\n },\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n sourceFormat: \"PARQUET\",\n autodetect: true,\n parquetOptions: {\n enumAsString: true,\n enableListInference: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_bucket = gcp.storage.Bucket(\"testBucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ntest_bucket_object = gcp.storage.BucketObject(\"testBucketObject\",\n source=pulumi.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket=test_bucket.name)\ntest_dataset = gcp.bigquery.Dataset(\"testDataset\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntest_table = gcp.bigquery.Table(\"testTable\",\n deletion_protection=False,\n table_id=\"job_load_table\",\n dataset_id=test_dataset.dataset_id)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load=gcp.bigquery.JobLoadArgs(\n source_uris=[pulumi.Output.all(test_bucket_object.bucket, test_bucket_object.name).apply(lambda bucket, name: f\"gs://{bucket}/{name}\")],\n destination_table=gcp.bigquery.JobLoadDestinationTableArgs(\n project_id=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id,\n ),\n schema_update_options=[\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n write_disposition=\"WRITE_APPEND\",\n source_format=\"PARQUET\",\n autodetect=True,\n parquet_options=gcp.bigquery.JobLoadParquetOptionsArgs(\n enum_as_string=True,\n enable_list_inference=True,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testBucket = new Gcp.Storage.Bucket(\"testBucket\", new()\n {\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var testBucketObject = new Gcp.Storage.BucketObject(\"testBucketObject\", new()\n {\n Source = new FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n Bucket = testBucket.Name,\n });\n\n var testDataset = new Gcp.BigQuery.Dataset(\"testDataset\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"testTable\", new()\n {\n DeletionProtection = false,\n TableId = \"job_load_table\",\n DatasetId = testDataset.DatasetId,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n Output.Tuple(testBucketObject.Bucket, testBucketObject.Name).Apply(values =\u003e\n {\n var bucket = values.Item1;\n var name = values.Item2;\n return $\"gs://{bucket}/{name}\";\n }),\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = testTable.Project,\n DatasetId = testTable.DatasetId,\n TableId = testTable.TableId,\n },\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n SourceFormat = \"PARQUET\",\n Autodetect = true,\n ParquetOptions = new Gcp.BigQuery.Inputs.JobLoadParquetOptionsArgs\n {\n EnumAsString = true,\n EnableListInference = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestBucket, err := storage.NewBucket(ctx, \"testBucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestBucketObject, err := storage.NewBucketObject(ctx, \"testBucketObject\", \u0026storage.BucketObjectArgs{\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/test.parquet.gzip\"),\n\t\t\tBucket: testBucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataset, err := bigquery.NewDataset(ctx, \"testDataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"testTable\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tDatasetId: testDataset.DatasetId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.All(testBucketObject.Bucket, testBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucket := _args[0].(string)\n\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucket, name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: testTable.Project,\n\t\t\t\t\tDatasetId: testTable.DatasetId,\n\t\t\t\t\tTableId: testTable.TableId,\n\t\t\t\t},\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tSourceFormat: pulumi.String(\"PARQUET\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tParquetOptions: \u0026bigquery.JobLoadParquetOptionsArgs{\n\t\t\t\t\tEnumAsString: pulumi.Bool(true),\n\t\t\t\t\tEnableListInference: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadParquetOptionsArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testBucket = new Bucket(\"testBucket\", BucketArgs.builder() \n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var testBucketObject = new BucketObject(\"testBucketObject\", BucketObjectArgs.builder() \n .source(new FileAsset(\"./test-fixtures/test.parquet.gzip\"))\n .bucket(testBucket.name())\n .build());\n\n var testDataset = new Dataset(\"testDataset\", DatasetArgs.builder() \n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder() \n .deletionProtection(false)\n .tableId(\"job_load_table\")\n .datasetId(testDataset.datasetId())\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(Output.tuple(testBucketObject.bucket(), testBucketObject.name()).applyValue(values -\u003e {\n var bucket = values.t1;\n var name = values.t2;\n return String.format(\"gs://%s/%s\", bucket,name);\n }))\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(testTable.project())\n .datasetId(testTable.datasetId())\n .tableId(testTable.tableId())\n .build())\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .sourceFormat(\"PARQUET\")\n .autodetect(true)\n .parquetOptions(JobLoadParquetOptionsArgs.builder()\n .enumAsString(true)\n .enableListInference(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testBucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n uniformBucketLevelAccess: true\n testBucketObject:\n type: gcp:storage:BucketObject\n properties:\n source:\n fn::FileAsset: ./test-fixtures/test.parquet.gzip\n bucket: ${testBucket.name}\n testDataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n testTable:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n tableId: job_load_table\n datasetId: ${testDataset.datasetId}\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://${testBucketObject.bucket}/${testBucketObject.name}\n destinationTable:\n projectId: ${testTable.project}\n datasetId: ${testTable.datasetId}\n tableId: ${testTable.tableId}\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n sourceFormat: PARQUET\n autodetect: true\n parquetOptions:\n enumAsString: true\n enableListInference: true\n```\n{{% /example %}}\n{{% example %}}\n### Bigquery Job Extract\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_oneDataset = new gcp.bigquery.Dataset(\"source-oneDataset\", {\n datasetId: \"job_extract_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst source_oneTable = new gcp.bigquery.Table(\"source-oneTable\", {\n deletionProtection: false,\n datasetId: source_oneDataset.datasetId,\n tableId: \"job_extract_table\",\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst dest = new gcp.storage.Bucket(\"dest\", {\n location: \"US\",\n forceDestroy: true,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_extract\",\n extract: {\n destinationUris: [pulumi.interpolate`${dest.url}/extract`],\n sourceTable: {\n projectId: source_oneTable.project,\n datasetId: source_oneTable.datasetId,\n tableId: source_oneTable.tableId,\n },\n destinationFormat: \"NEWLINE_DELIMITED_JSON\",\n compression: \"GZIP\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_one_dataset = gcp.bigquery.Dataset(\"source-oneDataset\",\n dataset_id=\"job_extract_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsource_one_table = gcp.bigquery.Table(\"source-oneTable\",\n deletion_protection=False,\n dataset_id=source_one_dataset.dataset_id,\n table_id=\"job_extract_table\",\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\ndest = gcp.storage.Bucket(\"dest\",\n location=\"US\",\n force_destroy=True)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_extract\",\n extract=gcp.bigquery.JobExtractArgs(\n destination_uris=[dest.url.apply(lambda url: f\"{url}/extract\")],\n source_table=gcp.bigquery.JobExtractSourceTableArgs(\n project_id=source_one_table.project,\n dataset_id=source_one_table.dataset_id,\n table_id=source_one_table.table_id,\n ),\n destination_format=\"NEWLINE_DELIMITED_JSON\",\n compression=\"GZIP\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_oneDataset = new Gcp.BigQuery.Dataset(\"source-oneDataset\", new()\n {\n DatasetId = \"job_extract_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var source_oneTable = new Gcp.BigQuery.Table(\"source-oneTable\", new()\n {\n DeletionProtection = false,\n DatasetId = source_oneDataset.DatasetId,\n TableId = \"job_extract_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_extract\",\n Extract = new Gcp.BigQuery.Inputs.JobExtractArgs\n {\n DestinationUris = new[]\n {\n dest.Url.Apply(url =\u003e $\"{url}/extract\"),\n },\n SourceTable = new Gcp.BigQuery.Inputs.JobExtractSourceTableArgs\n {\n ProjectId = source_oneTable.Project,\n DatasetId = source_oneTable.DatasetId,\n TableId = source_oneTable.TableId,\n },\n DestinationFormat = \"NEWLINE_DELIMITED_JSON\",\n Compression = \"GZIP\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"source-oneDataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_extract_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"source-oneTable\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: source_oneDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_extract_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_extract\"),\n\t\t\tExtract: \u0026bigquery.JobExtractArgs{\n\t\t\t\tDestinationUris: pulumi.StringArray{\n\t\t\t\t\tdest.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/extract\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tSourceTable: \u0026bigquery.JobExtractSourceTableArgs{\n\t\t\t\t\tProjectId: source_oneTable.Project,\n\t\t\t\t\tDatasetId: source_oneTable.DatasetId,\n\t\t\t\t\tTableId: source_oneTable.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractSourceTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_oneDataset = new Dataset(\"source-oneDataset\", DatasetArgs.builder() \n .datasetId(\"job_extract_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var source_oneTable = new Table(\"source-oneTable\", TableArgs.builder() \n .deletionProtection(false)\n .datasetId(source_oneDataset.datasetId())\n .tableId(\"job_extract_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var dest = new Bucket(\"dest\", BucketArgs.builder() \n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder() \n .jobId(\"job_extract\")\n .extract(JobExtractArgs.builder()\n .destinationUris(dest.url().applyValue(url -\u003e String.format(\"%s/extract\", url)))\n .sourceTable(JobExtractSourceTableArgs.builder()\n .projectId(source_oneTable.project())\n .datasetId(source_oneTable.datasetId())\n .tableId(source_oneTable.tableId())\n .build())\n .destinationFormat(\"NEWLINE_DELIMITED_JSON\")\n .compression(\"GZIP\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-oneTable:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"source-oneDataset\"].datasetId}\n tableId: job_extract_table\n schema: |\n [\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n ]\n source-oneDataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_extract_dataset\n friendlyName: test\n description: This is a test description\n location: US\n dest:\n type: gcp:storage:Bucket\n properties:\n location: US\n forceDestroy: true\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_extract\n extract:\n destinationUris:\n - ${dest.url}/extract\n sourceTable:\n projectId: ${[\"source-oneTable\"].project}\n datasetId: ${[\"source-oneTable\"].datasetId}\n tableId: ${[\"source-oneTable\"].tableId}\n destinationFormat: NEWLINE_DELIMITED_JSON\n compression: GZIP\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nJob can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}/location/{{location}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}/{{location}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{job_id}}/{{location}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:bigquery/job:Job default {{job_id}}\n```\n\n ", "properties": { "copy": { "$ref": "#/types/gcp:bigquery/JobCopy:JobCopy", @@ -99393,7 +99775,7 @@ } }, "gcp:certificatemanager/certificate:Certificate": { - "description": "Certificate represents a HTTP-reachable backend for a Certificate.\n\n\n\n\u003e **Warning:** All arguments including the following potentially sensitive\nvalues will be stored in the raw state as plain text: `self_managed.certificate_pem`, `self_managed.private_key_pem`, `self_managed.pem_private_key`.\nRead more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Certificate Manager Google Managed Certificate Dns\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"The default cert\",\n scope: \"EDGE_CACHE\",\n managed: {\n domains: [\n instance.domain,\n instance2.domain,\n ],\n dnsAuthorizations: [\n instance.id,\n instance2.id,\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n managed=gcp.certificatemanager.CertificateManagedArgs(\n domains=[\n instance.domain,\n instance2.domain,\n ],\n dns_authorizations=[\n instance.id,\n instance2.id,\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"The default cert\",\n Scope = \"EDGE_CACHE\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n instance.Domain,\n instance2.Domain,\n },\n DnsAuthorizations = new[]\n {\n instance.Id,\n instance2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := certificatemanager.NewDnsAuthorization(ctx, \"instance\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance2, err := certificatemanager.NewDnsAuthorization(ctx, \"instance2\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain2.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tManaged: \u0026certificatemanager.CertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tinstance.Domain,\n\t\t\t\t\tinstance2.Domain,\n\t\t\t\t},\n\t\t\t\tDnsAuthorizations: pulumi.StringArray{\n\t\t\t\t\tinstance.ID(),\n\t\t\t\t\tinstance2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DnsAuthorization(\"instance\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"The default cert\")\n .scope(\"EDGE_CACHE\")\n .managed(CertificateManagedArgs.builder()\n .domains( \n instance.domain(),\n instance2.domain())\n .dnsAuthorizations( \n instance.id(),\n instance2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: The default cert\n scope: EDGE_CACHE\n managed:\n domains:\n - ${instance.domain}\n - ${instance2.domain}\n dnsAuthorizations:\n - ${instance.id}\n - ${instance2.id}\n instance:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n{{% /example %}}\n{{% example %}}\n### Certificate Manager Google Managed Certificate Issuance Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"caAuthority\", {\n location: \"us-central1\",\n pool: pool.name,\n certificateAuthorityId: \"my-ca\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\n// creating certificate_issuance_config to use it in the managed certificate\nconst issuanceconfig = new gcp.certificatemanager.CertificateIssuanceConfig(\"issuanceconfig\", {\n description: \"sample description for the certificate issuanceConfigs\",\n certificateAuthorityConfig: {\n certificateAuthorityServiceConfig: {\n caPool: pool.id,\n },\n },\n lifetime: \"1814400s\",\n rotationWindowPercentage: 34,\n keyAlgorithm: \"ECDSA_P256\",\n}, {\n dependsOn: [caAuthority],\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"The default cert\",\n scope: \"EDGE_CACHE\",\n managed: {\n domains: [\"terraform.subdomain1.com\"],\n issuanceConfig: issuanceconfig.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.certificateauthority.CaPool(\"pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"caAuthority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"my-ca\",\n config=gcp.certificateauthority.AuthorityConfigArgs(\n subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs(\n subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs(\n organization=\"HashiCorp\",\n common_name=\"my-certificate-authority\",\n ),\n subject_alt_name=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs(\n dns_names=[\"hashicorp.com\"],\n ),\n ),\n x509_config=gcp.certificateauthority.AuthorityConfigX509ConfigArgs(\n ca_options=gcp.certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs(\n is_ca=True,\n ),\n key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs(\n base_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs(\n cert_sign=True,\n crl_sign=True,\n ),\n extended_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs(\n server_auth=True,\n ),\n ),\n ),\n ),\n key_spec=gcp.certificateauthority.AuthorityKeySpecArgs(\n algorithm=\"RSA_PKCS1_4096_SHA256\",\n ),\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\n# creating certificate_issuance_config to use it in the managed certificate\nissuanceconfig = gcp.certificatemanager.CertificateIssuanceConfig(\"issuanceconfig\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs(\n certificate_authority_service_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs(\n ca_pool=pool.id,\n ),\n ),\n lifetime=\"1814400s\",\n rotation_window_percentage=34,\n key_algorithm=\"ECDSA_P256\",\n opts=pulumi.ResourceOptions(depends_on=[ca_authority]))\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n managed=gcp.certificatemanager.CertificateManagedArgs(\n domains=[\"terraform.subdomain1.com\"],\n issuance_config=issuanceconfig.id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.CertificateAuthority.CaPool(\"pool\", new()\n {\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"caAuthority\", new()\n {\n Location = \"us-central1\",\n Pool = pool.Name,\n CertificateAuthorityId = \"my-ca\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n // creating certificate_issuance_config to use it in the managed certificate\n var issuanceconfig = new Gcp.CertificateManager.CertificateIssuanceConfig(\"issuanceconfig\", new()\n {\n Description = \"sample description for the certificate issuanceConfigs\",\n CertificateAuthorityConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs\n {\n CertificateAuthorityServiceConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs\n {\n CaPool = pool.Id,\n },\n },\n Lifetime = \"1814400s\",\n RotationWindowPercentage = 34,\n KeyAlgorithm = \"ECDSA_P256\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n caAuthority,\n },\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"The default cert\",\n Scope = \"EDGE_CACHE\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n \"terraform.subdomain1.com\",\n },\n IssuanceConfig = issuanceconfig.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpool, err := certificateauthority.NewCaPool(ctx, \"pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaAuthority, err := certificateauthority.NewAuthority(ctx, \"caAuthority\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: pool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-ca\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tissuanceconfig, err := certificatemanager.NewCertificateIssuanceConfig(ctx, \"issuanceconfig\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tDescription: pulumi.String(\"sample description for the certificate issuanceConfigs\"),\n\t\t\tCertificateAuthorityConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs{\n\t\t\t\tCertificateAuthorityServiceConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs{\n\t\t\t\t\tCaPool: pool.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"1814400s\"),\n\t\t\tRotationWindowPercentage: pulumi.Int(34),\n\t\t\tKeyAlgorithm: pulumi.String(\"ECDSA_P256\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tManaged: \u0026certificatemanager.CertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"terraform.subdomain1.com\"),\n\t\t\t\t},\n\t\t\t\tIssuanceConfig: issuanceconfig.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfig;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateManagedArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pool = new CaPool(\"pool\", CaPoolArgs.builder() \n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var caAuthority = new Authority(\"caAuthority\", AuthorityArgs.builder() \n .location(\"us-central1\")\n .pool(pool.name())\n .certificateAuthorityId(\"my-ca\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var issuanceconfig = new CertificateIssuanceConfig(\"issuanceconfig\", CertificateIssuanceConfigArgs.builder() \n .description(\"sample description for the certificate issuanceConfigs\")\n .certificateAuthorityConfig(CertificateIssuanceConfigCertificateAuthorityConfigArgs.builder()\n .certificateAuthorityServiceConfig(CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs.builder()\n .caPool(pool.id())\n .build())\n .build())\n .lifetime(\"1814400s\")\n .rotationWindowPercentage(34)\n .keyAlgorithm(\"ECDSA_P256\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caAuthority)\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"The default cert\")\n .scope(\"EDGE_CACHE\")\n .managed(CertificateManagedArgs.builder()\n .domains(\"terraform.subdomain1.com\")\n .issuanceConfig(issuanceconfig.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: The default cert\n scope: EDGE_CACHE\n managed:\n domains:\n - terraform.subdomain1.com\n issuanceConfig: ${issuanceconfig.id}\n # creating certificate_issuance_config to use it in the managed certificate\n issuanceconfig:\n type: gcp:certificatemanager:CertificateIssuanceConfig\n properties:\n description: sample description for the certificate issuanceConfigs\n certificateAuthorityConfig:\n certificateAuthorityServiceConfig:\n caPool: ${pool.id}\n lifetime: 1814400s\n rotationWindowPercentage: 34\n keyAlgorithm: ECDSA_P256\n options:\n dependson:\n - ${caAuthority}\n pool:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n properties:\n location: us-central1\n pool: ${pool.name}\n certificateAuthorityId: my-ca\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n # Disable CA deletion related safe checks for easier cleanup.\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n{{% /example %}}\n{{% example %}}\n### Certificate Manager Certificate Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"Global cert\",\n scope: \"EDGE_CACHE\",\n managed: {\n domains: [\n instance.domain,\n instance2.domain,\n ],\n dnsAuthorizations: [\n instance.id,\n instance2.id,\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"Global cert\",\n scope=\"EDGE_CACHE\",\n managed=gcp.certificatemanager.CertificateManagedArgs(\n domains=[\n instance.domain,\n instance2.domain,\n ],\n dns_authorizations=[\n instance.id,\n instance2.id,\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"Global cert\",\n Scope = \"EDGE_CACHE\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n instance.Domain,\n instance2.Domain,\n },\n DnsAuthorizations = new[]\n {\n instance.Id,\n instance2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := certificatemanager.NewDnsAuthorization(ctx, \"instance\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance2, err := certificatemanager.NewDnsAuthorization(ctx, \"instance2\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain2.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"Global cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tManaged: \u0026certificatemanager.CertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tinstance.Domain,\n\t\t\t\t\tinstance2.Domain,\n\t\t\t\t},\n\t\t\t\tDnsAuthorizations: pulumi.StringArray{\n\t\t\t\t\tinstance.ID(),\n\t\t\t\t\tinstance2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DnsAuthorization(\"instance\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"Global cert\")\n .scope(\"EDGE_CACHE\")\n .managed(CertificateManagedArgs.builder()\n .domains( \n instance.domain(),\n instance2.domain())\n .dnsAuthorizations( \n instance.id(),\n instance2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: Global cert\n scope: EDGE_CACHE\n managed:\n domains:\n - ${instance.domain}\n - ${instance2.domain}\n dnsAuthorizations:\n - ${instance.id}\n - ${instance2.id}\n instance:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n{{% /example %}}\n{{% example %}}\n### Certificate Manager Self Managed Certificate Regional\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"Regional cert\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: fs.readFileSync(\"test-fixtures/certificatemanager/cert.pem\"),\n pemPrivateKey: fs.readFileSync(\"test-fixtures/certificatemanager/private-key.pem\"),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"Regional cert\",\n location=\"us-central1\",\n self_managed=gcp.certificatemanager.CertificateSelfManagedArgs(\n pem_certificate=(lambda path: open(path).read())(\"test-fixtures/certificatemanager/cert.pem\"),\n pem_private_key=(lambda path: open(path).read())(\"test-fixtures/certificatemanager/private-key.pem\"),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"Regional cert\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = File.ReadAllText(\"test-fixtures/certificatemanager/cert.pem\"),\n PemPrivateKey = File.ReadAllText(\"test-fixtures/certificatemanager/private-key.pem\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"Regional cert\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: readFileOrPanic(\"test-fixtures/certificatemanager/cert.pem\"),\n\t\t\t\tPemPrivateKey: readFileOrPanic(\"test-fixtures/certificatemanager/private-key.pem\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"Regional cert\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(Files.readString(Paths.get(\"test-fixtures/certificatemanager/cert.pem\")))\n .pemPrivateKey(Files.readString(Paths.get(\"test-fixtures/certificatemanager/private-key.pem\")))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: Regional cert\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::readFile: test-fixtures/certificatemanager/cert.pem\n pemPrivateKey:\n fn::readFile: test-fixtures/certificatemanager/private-key.pem\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCertificate can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:certificatemanager/certificate:Certificate default projects/{{project}}/locations/{{location}}/certificates/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificate:Certificate default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificate:Certificate default {{location}}/{{name}}\n```\n\n ", + "description": "Certificate represents a HTTP-reachable backend for a Certificate.\n\n\n\n\u003e **Warning:** All arguments including the following potentially sensitive\nvalues will be stored in the raw state as plain text: `self_managed.certificate_pem`, `self_managed.private_key_pem`, `self_managed.pem_private_key`.\nRead more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Certificate Manager Google Managed Certificate Dns\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"The default cert\",\n scope: \"EDGE_CACHE\",\n managed: {\n domains: [\n instance.domain,\n instance2.domain,\n ],\n dnsAuthorizations: [\n instance.id,\n instance2.id,\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n managed=gcp.certificatemanager.CertificateManagedArgs(\n domains=[\n instance.domain,\n instance2.domain,\n ],\n dns_authorizations=[\n instance.id,\n instance2.id,\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"The default cert\",\n Scope = \"EDGE_CACHE\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n instance.Domain,\n instance2.Domain,\n },\n DnsAuthorizations = new[]\n {\n instance.Id,\n instance2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := certificatemanager.NewDnsAuthorization(ctx, \"instance\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance2, err := certificatemanager.NewDnsAuthorization(ctx, \"instance2\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain2.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tManaged: \u0026certificatemanager.CertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tinstance.Domain,\n\t\t\t\t\tinstance2.Domain,\n\t\t\t\t},\n\t\t\t\tDnsAuthorizations: pulumi.StringArray{\n\t\t\t\t\tinstance.ID(),\n\t\t\t\t\tinstance2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DnsAuthorization(\"instance\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"The default cert\")\n .scope(\"EDGE_CACHE\")\n .managed(CertificateManagedArgs.builder()\n .domains( \n instance.domain(),\n instance2.domain())\n .dnsAuthorizations( \n instance.id(),\n instance2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: The default cert\n scope: EDGE_CACHE\n managed:\n domains:\n - ${instance.domain}\n - ${instance2.domain}\n dnsAuthorizations:\n - ${instance.id}\n - ${instance2.id}\n instance:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n{{% /example %}}\n{{% example %}}\n### Certificate Manager Google Managed Certificate Issuance Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"caAuthority\", {\n location: \"us-central1\",\n pool: pool.name,\n certificateAuthorityId: \"ca-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\n// creating certificate_issuance_config to use it in the managed certificate\nconst issuanceconfig = new gcp.certificatemanager.CertificateIssuanceConfig(\"issuanceconfig\", {\n description: \"sample description for the certificate issuanceConfigs\",\n certificateAuthorityConfig: {\n certificateAuthorityServiceConfig: {\n caPool: pool.id,\n },\n },\n lifetime: \"1814400s\",\n rotationWindowPercentage: 34,\n keyAlgorithm: \"ECDSA_P256\",\n}, {\n dependsOn: [caAuthority],\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"The default cert\",\n scope: \"EDGE_CACHE\",\n managed: {\n domains: [\"terraform.subdomain1.com\"],\n issuanceConfig: issuanceconfig.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.certificateauthority.CaPool(\"pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"caAuthority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"ca-authority\",\n config=gcp.certificateauthority.AuthorityConfigArgs(\n subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs(\n subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs(\n organization=\"HashiCorp\",\n common_name=\"my-certificate-authority\",\n ),\n subject_alt_name=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs(\n dns_names=[\"hashicorp.com\"],\n ),\n ),\n x509_config=gcp.certificateauthority.AuthorityConfigX509ConfigArgs(\n ca_options=gcp.certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs(\n is_ca=True,\n ),\n key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs(\n base_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs(\n cert_sign=True,\n crl_sign=True,\n ),\n extended_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs(\n server_auth=True,\n ),\n ),\n ),\n ),\n key_spec=gcp.certificateauthority.AuthorityKeySpecArgs(\n algorithm=\"RSA_PKCS1_4096_SHA256\",\n ),\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\n# creating certificate_issuance_config to use it in the managed certificate\nissuanceconfig = gcp.certificatemanager.CertificateIssuanceConfig(\"issuanceconfig\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs(\n certificate_authority_service_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs(\n ca_pool=pool.id,\n ),\n ),\n lifetime=\"1814400s\",\n rotation_window_percentage=34,\n key_algorithm=\"ECDSA_P256\",\n opts=pulumi.ResourceOptions(depends_on=[ca_authority]))\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"The default cert\",\n scope=\"EDGE_CACHE\",\n managed=gcp.certificatemanager.CertificateManagedArgs(\n domains=[\"terraform.subdomain1.com\"],\n issuance_config=issuanceconfig.id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.CertificateAuthority.CaPool(\"pool\", new()\n {\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"caAuthority\", new()\n {\n Location = \"us-central1\",\n Pool = pool.Name,\n CertificateAuthorityId = \"ca-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n // creating certificate_issuance_config to use it in the managed certificate\n var issuanceconfig = new Gcp.CertificateManager.CertificateIssuanceConfig(\"issuanceconfig\", new()\n {\n Description = \"sample description for the certificate issuanceConfigs\",\n CertificateAuthorityConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs\n {\n CertificateAuthorityServiceConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs\n {\n CaPool = pool.Id,\n },\n },\n Lifetime = \"1814400s\",\n RotationWindowPercentage = 34,\n KeyAlgorithm = \"ECDSA_P256\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n caAuthority,\n },\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"The default cert\",\n Scope = \"EDGE_CACHE\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n \"terraform.subdomain1.com\",\n },\n IssuanceConfig = issuanceconfig.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpool, err := certificateauthority.NewCaPool(ctx, \"pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaAuthority, err := certificateauthority.NewAuthority(ctx, \"caAuthority\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: pool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"ca-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tissuanceconfig, err := certificatemanager.NewCertificateIssuanceConfig(ctx, \"issuanceconfig\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tDescription: pulumi.String(\"sample description for the certificate issuanceConfigs\"),\n\t\t\tCertificateAuthorityConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs{\n\t\t\t\tCertificateAuthorityServiceConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs{\n\t\t\t\t\tCaPool: pool.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"1814400s\"),\n\t\t\tRotationWindowPercentage: pulumi.Int(34),\n\t\t\tKeyAlgorithm: pulumi.String(\"ECDSA_P256\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"The default cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tManaged: \u0026certificatemanager.CertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"terraform.subdomain1.com\"),\n\t\t\t\t},\n\t\t\t\tIssuanceConfig: issuanceconfig.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfig;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateManagedArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pool = new CaPool(\"pool\", CaPoolArgs.builder() \n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var caAuthority = new Authority(\"caAuthority\", AuthorityArgs.builder() \n .location(\"us-central1\")\n .pool(pool.name())\n .certificateAuthorityId(\"ca-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var issuanceconfig = new CertificateIssuanceConfig(\"issuanceconfig\", CertificateIssuanceConfigArgs.builder() \n .description(\"sample description for the certificate issuanceConfigs\")\n .certificateAuthorityConfig(CertificateIssuanceConfigCertificateAuthorityConfigArgs.builder()\n .certificateAuthorityServiceConfig(CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs.builder()\n .caPool(pool.id())\n .build())\n .build())\n .lifetime(\"1814400s\")\n .rotationWindowPercentage(34)\n .keyAlgorithm(\"ECDSA_P256\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caAuthority)\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"The default cert\")\n .scope(\"EDGE_CACHE\")\n .managed(CertificateManagedArgs.builder()\n .domains(\"terraform.subdomain1.com\")\n .issuanceConfig(issuanceconfig.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: The default cert\n scope: EDGE_CACHE\n managed:\n domains:\n - terraform.subdomain1.com\n issuanceConfig: ${issuanceconfig.id}\n # creating certificate_issuance_config to use it in the managed certificate\n issuanceconfig:\n type: gcp:certificatemanager:CertificateIssuanceConfig\n properties:\n description: sample description for the certificate issuanceConfigs\n certificateAuthorityConfig:\n certificateAuthorityServiceConfig:\n caPool: ${pool.id}\n lifetime: 1814400s\n rotationWindowPercentage: 34\n keyAlgorithm: ECDSA_P256\n options:\n dependson:\n - ${caAuthority}\n pool:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n properties:\n location: us-central1\n pool: ${pool.name}\n certificateAuthorityId: ca-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n # Disable CA deletion related safe checks for easier cleanup.\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n{{% /example %}}\n{{% example %}}\n### Certificate Manager Certificate Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.certificatemanager.DnsAuthorization(\"instance\", {\n description: \"The default dnss\",\n domain: \"subdomain.hashicorptest.com\",\n});\nconst instance2 = new gcp.certificatemanager.DnsAuthorization(\"instance2\", {\n description: \"The default dnss\",\n domain: \"subdomain2.hashicorptest.com\",\n});\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"Global cert\",\n scope: \"EDGE_CACHE\",\n managed: {\n domains: [\n instance.domain,\n instance2.domain,\n ],\n dnsAuthorizations: [\n instance.id,\n instance2.id,\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.certificatemanager.DnsAuthorization(\"instance\",\n description=\"The default dnss\",\n domain=\"subdomain.hashicorptest.com\")\ninstance2 = gcp.certificatemanager.DnsAuthorization(\"instance2\",\n description=\"The default dnss\",\n domain=\"subdomain2.hashicorptest.com\")\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"Global cert\",\n scope=\"EDGE_CACHE\",\n managed=gcp.certificatemanager.CertificateManagedArgs(\n domains=[\n instance.domain,\n instance2.domain,\n ],\n dns_authorizations=[\n instance.id,\n instance2.id,\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.CertificateManager.DnsAuthorization(\"instance\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n var instance2 = new Gcp.CertificateManager.DnsAuthorization(\"instance2\", new()\n {\n Description = \"The default dnss\",\n Domain = \"subdomain2.hashicorptest.com\",\n });\n\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"Global cert\",\n Scope = \"EDGE_CACHE\",\n Managed = new Gcp.CertificateManager.Inputs.CertificateManagedArgs\n {\n Domains = new[]\n {\n instance.Domain,\n instance2.Domain,\n },\n DnsAuthorizations = new[]\n {\n instance.Id,\n instance2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := certificatemanager.NewDnsAuthorization(ctx, \"instance\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance2, err := certificatemanager.NewDnsAuthorization(ctx, \"instance2\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tDescription: pulumi.String(\"The default dnss\"),\n\t\t\tDomain: pulumi.String(\"subdomain2.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"Global cert\"),\n\t\t\tScope: pulumi.String(\"EDGE_CACHE\"),\n\t\t\tManaged: \u0026certificatemanager.CertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tinstance.Domain,\n\t\t\t\t\tinstance2.Domain,\n\t\t\t\t},\n\t\t\t\tDnsAuthorizations: pulumi.StringArray{\n\t\t\t\t\tinstance.ID(),\n\t\t\t\t\tinstance2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DnsAuthorization(\"instance\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n var instance2 = new DnsAuthorization(\"instance2\", DnsAuthorizationArgs.builder() \n .description(\"The default dnss\")\n .domain(\"subdomain2.hashicorptest.com\")\n .build());\n\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"Global cert\")\n .scope(\"EDGE_CACHE\")\n .managed(CertificateManagedArgs.builder()\n .domains( \n instance.domain(),\n instance2.domain())\n .dnsAuthorizations( \n instance.id(),\n instance2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: Global cert\n scope: EDGE_CACHE\n managed:\n domains:\n - ${instance.domain}\n - ${instance2.domain}\n dnsAuthorizations:\n - ${instance.id}\n - ${instance2.id}\n instance:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain.hashicorptest.com\n instance2:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n description: The default dnss\n domain: subdomain2.hashicorptest.com\n```\n{{% /example %}}\n{{% example %}}\n### Certificate Manager Self Managed Certificate Regional\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n description: \"Regional cert\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: fs.readFileSync(\"test-fixtures/cert.pem\"),\n pemPrivateKey: fs.readFileSync(\"test-fixtures/private-key.pem\"),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n description=\"Regional cert\",\n location=\"us-central1\",\n self_managed=gcp.certificatemanager.CertificateSelfManagedArgs(\n pem_certificate=(lambda path: open(path).read())(\"test-fixtures/cert.pem\"),\n pem_private_key=(lambda path: open(path).read())(\"test-fixtures/private-key.pem\"),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Description = \"Regional cert\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = File.ReadAllText(\"test-fixtures/cert.pem\"),\n PemPrivateKey = File.ReadAllText(\"test-fixtures/private-key.pem\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tDescription: pulumi.String(\"Regional cert\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: readFileOrPanic(\"test-fixtures/cert.pem\"),\n\t\t\t\tPemPrivateKey: readFileOrPanic(\"test-fixtures/private-key.pem\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Certificate(\"default\", CertificateArgs.builder() \n .description(\"Regional cert\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(Files.readString(Paths.get(\"test-fixtures/cert.pem\")))\n .pemPrivateKey(Files.readString(Paths.get(\"test-fixtures/private-key.pem\")))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n description: Regional cert\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::readFile: test-fixtures/cert.pem\n pemPrivateKey:\n fn::readFile: test-fixtures/private-key.pem\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCertificate can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:certificatemanager/certificate:Certificate default projects/{{project}}/locations/{{location}}/certificates/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificate:Certificate default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificate:Certificate default {{location}}/{{name}}\n```\n\n ", "properties": { "description": { "type": "string", @@ -99424,7 +99806,7 @@ }, "scope": { "type": "string", - "description": "The scope of the certificate.\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates,\nserved from non-core Google data centers.\nCurrently allowed only for managed certificates.\n" + "description": "The scope of the certificate.\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates,\nserved from non-core Google data centers.\nALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs).\nsee https://cloud.google.com/compute/docs/regions-zones\n" }, "selfManaged": { "$ref": "#/types/gcp:certificatemanager/CertificateSelfManaged:CertificateSelfManaged", @@ -99469,7 +99851,7 @@ }, "scope": { "type": "string", - "description": "The scope of the certificate.\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates,\nserved from non-core Google data centers.\nCurrently allowed only for managed certificates.\n", + "description": "The scope of the certificate.\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates,\nserved from non-core Google data centers.\nALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs).\nsee https://cloud.google.com/compute/docs/regions-zones\n", "willReplaceOnChanges": true }, "selfManaged": { @@ -99514,7 +99896,7 @@ }, "scope": { "type": "string", - "description": "The scope of the certificate.\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates,\nserved from non-core Google data centers.\nCurrently allowed only for managed certificates.\n", + "description": "The scope of the certificate.\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates,\nserved from non-core Google data centers.\nALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs).\nsee https://cloud.google.com/compute/docs/regions-zones\n", "willReplaceOnChanges": true }, "selfManaged": { @@ -99527,7 +99909,7 @@ } }, "gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig": { - "description": "Certificate represents a HTTP-reachable backend for a Certificate.\n\n\nTo get more information about CertificateIssuanceConfig, see:\n\n* [API documentation](https://cloud.google.com/certificate-manager/docs/reference/certificate-manager/rest/v1/projects.locations.certificateIssuanceConfigs)\n* How-to Guides\n * [Manage certificate issuance configs](https://cloud.google.com/certificate-manager/docs/issuance-configs)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Certificate Manager Certificate Issuance Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"caAuthority\", {\n location: \"us-central1\",\n pool: pool.name,\n certificateAuthorityId: \"my-ca\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst _default = new gcp.certificatemanager.CertificateIssuanceConfig(\"default\", {\n description: \"sample description for the certificate issuanceConfigs\",\n certificateAuthorityConfig: {\n certificateAuthorityServiceConfig: {\n caPool: pool.id,\n },\n },\n lifetime: \"1814400s\",\n rotationWindowPercentage: 34,\n keyAlgorithm: \"ECDSA_P256\",\n labels: {\n name: \"wrench\",\n count: \"3\",\n },\n}, {\n dependsOn: [caAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.certificateauthority.CaPool(\"pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"caAuthority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"my-ca\",\n config=gcp.certificateauthority.AuthorityConfigArgs(\n subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs(\n subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs(\n organization=\"HashiCorp\",\n common_name=\"my-certificate-authority\",\n ),\n subject_alt_name=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs(\n dns_names=[\"hashicorp.com\"],\n ),\n ),\n x509_config=gcp.certificateauthority.AuthorityConfigX509ConfigArgs(\n ca_options=gcp.certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs(\n is_ca=True,\n ),\n key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs(\n base_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs(\n cert_sign=True,\n crl_sign=True,\n ),\n extended_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs(\n server_auth=True,\n ),\n ),\n ),\n ),\n key_spec=gcp.certificateauthority.AuthorityKeySpecArgs(\n algorithm=\"RSA_PKCS1_4096_SHA256\",\n ),\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault = gcp.certificatemanager.CertificateIssuanceConfig(\"default\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs(\n certificate_authority_service_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs(\n ca_pool=pool.id,\n ),\n ),\n lifetime=\"1814400s\",\n rotation_window_percentage=34,\n key_algorithm=\"ECDSA_P256\",\n labels={\n \"name\": \"wrench\",\n \"count\": \"3\",\n },\n opts=pulumi.ResourceOptions(depends_on=[ca_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.CertificateAuthority.CaPool(\"pool\", new()\n {\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"caAuthority\", new()\n {\n Location = \"us-central1\",\n Pool = pool.Name,\n CertificateAuthorityId = \"my-ca\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var @default = new Gcp.CertificateManager.CertificateIssuanceConfig(\"default\", new()\n {\n Description = \"sample description for the certificate issuanceConfigs\",\n CertificateAuthorityConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs\n {\n CertificateAuthorityServiceConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs\n {\n CaPool = pool.Id,\n },\n },\n Lifetime = \"1814400s\",\n RotationWindowPercentage = 34,\n KeyAlgorithm = \"ECDSA_P256\",\n Labels = \n {\n { \"name\", \"wrench\" },\n { \"count\", \"3\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n caAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpool, err := certificateauthority.NewCaPool(ctx, \"pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaAuthority, err := certificateauthority.NewAuthority(ctx, \"caAuthority\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: pool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-ca\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificateIssuanceConfig(ctx, \"default\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tDescription: pulumi.String(\"sample description for the certificate issuanceConfigs\"),\n\t\t\tCertificateAuthorityConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs{\n\t\t\t\tCertificateAuthorityServiceConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs{\n\t\t\t\t\tCaPool: pool.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"1814400s\"),\n\t\t\tRotationWindowPercentage: pulumi.Int(34),\n\t\t\tKeyAlgorithm: pulumi.String(\"ECDSA_P256\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfig;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pool = new CaPool(\"pool\", CaPoolArgs.builder() \n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var caAuthority = new Authority(\"caAuthority\", AuthorityArgs.builder() \n .location(\"us-central1\")\n .pool(pool.name())\n .certificateAuthorityId(\"my-ca\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var default_ = new CertificateIssuanceConfig(\"default\", CertificateIssuanceConfigArgs.builder() \n .description(\"sample description for the certificate issuanceConfigs\")\n .certificateAuthorityConfig(CertificateIssuanceConfigCertificateAuthorityConfigArgs.builder()\n .certificateAuthorityServiceConfig(CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs.builder()\n .caPool(pool.id())\n .build())\n .build())\n .lifetime(\"1814400s\")\n .rotationWindowPercentage(34)\n .keyAlgorithm(\"ECDSA_P256\")\n .labels(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"count\", \"3\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(caAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:CertificateIssuanceConfig\n properties:\n description: sample description for the certificate issuanceConfigs\n certificateAuthorityConfig:\n certificateAuthorityServiceConfig:\n caPool: ${pool.id}\n lifetime: 1814400s\n rotationWindowPercentage: 34\n keyAlgorithm: ECDSA_P256\n labels:\n name: wrench\n count: '3'\n options:\n dependson:\n - ${caAuthority}\n pool:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n properties:\n location: us-central1\n pool: ${pool.name}\n certificateAuthorityId: my-ca\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n # Disable CA deletion related safe checks for easier cleanup.\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCertificateIssuanceConfig can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default projects/{{project}}/locations/{{location}}/certificateIssuanceConfigs/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default {{location}}/{{name}}\n```\n\n ", + "description": "Certificate represents a HTTP-reachable backend for a Certificate.\n\n\nTo get more information about CertificateIssuanceConfig, see:\n\n* [API documentation](https://cloud.google.com/certificate-manager/docs/reference/certificate-manager/rest/v1/projects.locations.certificateIssuanceConfigs)\n* How-to Guides\n * [Manage certificate issuance configs](https://cloud.google.com/certificate-manager/docs/issuance-configs)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Certificate Manager Certificate Issuance Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pool = new gcp.certificateauthority.CaPool(\"pool\", {\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n});\nconst caAuthority = new gcp.certificateauthority.Authority(\"caAuthority\", {\n location: \"us-central1\",\n pool: pool.name,\n certificateAuthorityId: \"ca-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst _default = new gcp.certificatemanager.CertificateIssuanceConfig(\"default\", {\n description: \"sample description for the certificate issuanceConfigs\",\n certificateAuthorityConfig: {\n certificateAuthorityServiceConfig: {\n caPool: pool.id,\n },\n },\n lifetime: \"1814400s\",\n rotationWindowPercentage: 34,\n keyAlgorithm: \"ECDSA_P256\",\n labels: {\n name: \"wrench\",\n count: \"3\",\n },\n}, {\n dependsOn: [caAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npool = gcp.certificateauthority.CaPool(\"pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\")\nca_authority = gcp.certificateauthority.Authority(\"caAuthority\",\n location=\"us-central1\",\n pool=pool.name,\n certificate_authority_id=\"ca-authority\",\n config=gcp.certificateauthority.AuthorityConfigArgs(\n subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs(\n subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs(\n organization=\"HashiCorp\",\n common_name=\"my-certificate-authority\",\n ),\n subject_alt_name=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs(\n dns_names=[\"hashicorp.com\"],\n ),\n ),\n x509_config=gcp.certificateauthority.AuthorityConfigX509ConfigArgs(\n ca_options=gcp.certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs(\n is_ca=True,\n ),\n key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs(\n base_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs(\n cert_sign=True,\n crl_sign=True,\n ),\n extended_key_usage=gcp.certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs(\n server_auth=True,\n ),\n ),\n ),\n ),\n key_spec=gcp.certificateauthority.AuthorityKeySpecArgs(\n algorithm=\"RSA_PKCS1_4096_SHA256\",\n ),\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault = gcp.certificatemanager.CertificateIssuanceConfig(\"default\",\n description=\"sample description for the certificate issuanceConfigs\",\n certificate_authority_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs(\n certificate_authority_service_config=gcp.certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs(\n ca_pool=pool.id,\n ),\n ),\n lifetime=\"1814400s\",\n rotation_window_percentage=34,\n key_algorithm=\"ECDSA_P256\",\n labels={\n \"name\": \"wrench\",\n \"count\": \"3\",\n },\n opts=pulumi.ResourceOptions(depends_on=[ca_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = new Gcp.CertificateAuthority.CaPool(\"pool\", new()\n {\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n });\n\n var caAuthority = new Gcp.CertificateAuthority.Authority(\"caAuthority\", new()\n {\n Location = \"us-central1\",\n Pool = pool.Name,\n CertificateAuthorityId = \"ca-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var @default = new Gcp.CertificateManager.CertificateIssuanceConfig(\"default\", new()\n {\n Description = \"sample description for the certificate issuanceConfigs\",\n CertificateAuthorityConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs\n {\n CertificateAuthorityServiceConfig = new Gcp.CertificateManager.Inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs\n {\n CaPool = pool.Id,\n },\n },\n Lifetime = \"1814400s\",\n RotationWindowPercentage = 34,\n KeyAlgorithm = \"ECDSA_P256\",\n Labels = \n {\n { \"name\", \"wrench\" },\n { \"count\", \"3\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n caAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpool, err := certificateauthority.NewCaPool(ctx, \"pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaAuthority, err := certificateauthority.NewAuthority(ctx, \"caAuthority\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: pool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"ca-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificateIssuanceConfig(ctx, \"default\", \u0026certificatemanager.CertificateIssuanceConfigArgs{\n\t\t\tDescription: pulumi.String(\"sample description for the certificate issuanceConfigs\"),\n\t\t\tCertificateAuthorityConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigArgs{\n\t\t\t\tCertificateAuthorityServiceConfig: \u0026certificatemanager.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs{\n\t\t\t\t\tCaPool: pool.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"1814400s\"),\n\t\t\tRotationWindowPercentage: pulumi.Int(34),\n\t\t\tKeyAlgorithm: pulumi.String(\"ECDSA_P256\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfig;\nimport com.pulumi.gcp.certificatemanager.CertificateIssuanceConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pool = new CaPool(\"pool\", CaPoolArgs.builder() \n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var caAuthority = new Authority(\"caAuthority\", AuthorityArgs.builder() \n .location(\"us-central1\")\n .pool(pool.name())\n .certificateAuthorityId(\"ca-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var default_ = new CertificateIssuanceConfig(\"default\", CertificateIssuanceConfigArgs.builder() \n .description(\"sample description for the certificate issuanceConfigs\")\n .certificateAuthorityConfig(CertificateIssuanceConfigCertificateAuthorityConfigArgs.builder()\n .certificateAuthorityServiceConfig(CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfigArgs.builder()\n .caPool(pool.id())\n .build())\n .build())\n .lifetime(\"1814400s\")\n .rotationWindowPercentage(34)\n .keyAlgorithm(\"ECDSA_P256\")\n .labels(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"count\", \"3\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(caAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:CertificateIssuanceConfig\n properties:\n description: sample description for the certificate issuanceConfigs\n certificateAuthorityConfig:\n certificateAuthorityServiceConfig:\n caPool: ${pool.id}\n lifetime: 1814400s\n rotationWindowPercentage: 34\n keyAlgorithm: ECDSA_P256\n labels:\n name: wrench\n count: '3'\n options:\n dependson:\n - ${caAuthority}\n pool:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n tier: ENTERPRISE\n caAuthority:\n type: gcp:certificateauthority:Authority\n properties:\n location: us-central1\n pool: ${pool.name}\n certificateAuthorityId: ca-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n # Disable CA deletion related safe checks for easier cleanup.\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCertificateIssuanceConfig can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default projects/{{project}}/locations/{{location}}/certificateIssuanceConfigs/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:certificatemanager/certificateIssuanceConfig:CertificateIssuanceConfig default {{location}}/{{name}}\n```\n\n ", "properties": { "certificateAuthorityConfig": { "$ref": "#/types/gcp:certificatemanager/CertificateIssuanceConfigCertificateAuthorityConfig:CertificateIssuanceConfigCertificateAuthorityConfig", @@ -100758,7 +101140,7 @@ } }, "gcp:cloudbuild/trigger:Trigger": { - "description": "Configuration for an automated build in response to source repository changes.\n\n\nTo get more information about Trigger, see:\n\n* [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers)\n* How-to Guides\n * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)\n\n\u003e **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `gcp.projects.ServiceIdentity` resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Cloudbuild Trigger Filename\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filename_trigger = new gcp.cloudbuild.Trigger(\"filename-trigger\", {\n filename: \"cloudbuild.yaml\",\n location: \"us-central1\",\n substitutions: {\n _BAZ: \"qux\",\n _FOO: \"bar\",\n },\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n filename=\"cloudbuild.yaml\",\n location=\"us-central1\",\n substitutions={\n \"_BAZ\": \"qux\",\n \"_FOO\": \"bar\",\n },\n trigger_template=gcp.cloudbuild.TriggerTriggerTemplateArgs(\n branch_name=\"main\",\n repo_name=\"my-repo\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Filename = \"cloudbuild.yaml\",\n Location = \"us-central1\",\n Substitutions = \n {\n { \"_BAZ\", \"qux\" },\n { \"_FOO\", \"bar\" },\n },\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"filename-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var filename_trigger = new Trigger(\"filename-trigger\", TriggerArgs.builder() \n .filename(\"cloudbuild.yaml\")\n .location(\"us-central1\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n filename: cloudbuild.yaml\n location: us-central1\n substitutions:\n _BAZ: qux\n _FOO: bar\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Build\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var build_trigger = new Trigger(\"build-trigger\", TriggerArgs.builder() \n .build(TriggerBuildArgs.builder()\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManager(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .logsBucket(\"gs://mybucket/logs\")\n .options(TriggerBuildOptionsArgs.builder()\n .diskSizeGb(100)\n .dynamicSubstitutions(true)\n .env(\"ekey = evalue\")\n .logStreamingOption(\"STREAM_OFF\")\n .logging(\"LEGACY\")\n .machineType(\"N1_HIGHCPU_8\")\n .requestedVerifyOption(\"VERIFIED\")\n .secretEnv(\"secretenv = svalue\")\n .sourceProvenanceHash(\"MD5\")\n .substitutionOption(\"ALLOW_LOOSE\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .workerPool(\"pool\")\n .build())\n .queueTtl(\"20s\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .steps( \n TriggerBuildStepArgs.builder()\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .name(\"gcr.io/cloud-builders/gsutil\")\n .secretEnv(\"MY_SECRET\")\n .timeout(\"120s\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .tags( \n \"build\",\n \"newFeature\")\n .build())\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n build:\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n availableSecrets:\n secretManager:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n logsBucket: gs://mybucket/logs\n options:\n diskSizeGb: 100\n dynamicSubstitutions: true\n env:\n - ekey = evalue\n logStreamingOption: STREAM_OFF\n logging: LEGACY\n machineType: N1_HIGHCPU_8\n requestedVerifyOption: VERIFIED\n secretEnv:\n - secretenv = svalue\n sourceProvenanceHash:\n - MD5\n substitutionOption: ALLOW_LOOSE\n volumes:\n - name: v1\n path: v1\n workerPool: pool\n queueTtl: 20s\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n steps:\n - args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n name: gcr.io/cloud-builders/gsutil\n secretEnv:\n - MY_SECRET\n timeout: 120s\n - name: ubuntu\n script: echo hello\n substitutions:\n _BAZ: qux\n _FOO: bar\n tags:\n - build\n - newFeature\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Service Account\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuildServiceAccount\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"actAs\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logsWriter\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst service_account_trigger = new gcp.cloudbuild.Trigger(\"service-account-trigger\", {\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n filename: \"cloudbuild.yaml\",\n}, {\n dependsOn: [\n actAs,\n logsWriter,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudbuild_service_account = gcp.service_account.Account(\"cloudbuildServiceAccount\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"actAs\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountUser\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logsWriter\",\n project=project.project_id,\n role=\"roles/logging.logWriter\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nservice_account_trigger = gcp.cloudbuild.Trigger(\"service-account-trigger\",\n trigger_template=gcp.cloudbuild.TriggerTriggerTemplateArgs(\n branch_name=\"main\",\n repo_name=\"my-repo\",\n ),\n service_account=cloudbuild_service_account.id,\n filename=\"cloudbuild.yaml\",\n opts=pulumi.ResourceOptions(depends_on=[\n act_as,\n logs_writer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuildServiceAccount\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"actAs\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountUser\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logsWriter\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/logging.logWriter\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var service_account_trigger = new Gcp.CloudBuild.Trigger(\"service-account-trigger\", new()\n {\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n Filename = \"cloudbuild.yaml\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n actAs,\n logsWriter,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudbuildServiceAccount, err := serviceAccount.NewAccount(ctx, \"cloudbuildServiceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tactAs, err := projects.NewIAMMember(ctx, \"actAs\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: *pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogsWriter, err := projects.NewIAMMember(ctx, \"logsWriter\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: *pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"service-account-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tactAs,\n\t\t\tlogsWriter,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder() \n .accountId(\"cloud-sa\")\n .build());\n\n var actAs = new IAMMember(\"actAs\", IAMMemberArgs.builder() \n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountUser\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder() \n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/logging.logWriter\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var service_account_trigger = new Trigger(\"service-account-trigger\", TriggerArgs.builder() \n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .serviceAccount(cloudbuildServiceAccount.id())\n .filename(\"cloudbuild.yaml\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-account-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n triggerTemplate:\n branchName: main\n repoName: my-repo\n serviceAccount: ${cloudbuildServiceAccount.id}\n filename: cloudbuild.yaml\n options:\n dependson:\n - ${actAs}\n - ${logsWriter}\n cloudbuildServiceAccount:\n type: gcp:serviceAccount:Account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/logging.logWriter\n member: serviceAccount:${cloudbuildServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Include Build Logs\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst include_build_logs_trigger = new gcp.cloudbuild.Trigger(\"include-build-logs-trigger\", {\n filename: \"cloudbuild.yaml\",\n github: {\n name: \"terraform-provider-google-beta\",\n owner: \"hashicorp\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github=gcp.cloudbuild.TriggerGithubArgs(\n name=\"terraform-provider-google-beta\",\n owner=\"hashicorp\",\n push=gcp.cloudbuild.TriggerGithubPushArgs(\n branch=\"^main$\",\n ),\n ),\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var include_build_logs_trigger = new Gcp.CloudBuild.Trigger(\"include-build-logs-trigger\", new()\n {\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Name = \"terraform-provider-google-beta\",\n Owner = \"hashicorp\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"include-build-logs-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncludeBuildLogs: pulumi.String(\"INCLUDE_BUILD_LOGS_WITH_STATUS\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var include_build_logs_trigger = new Trigger(\"include-build-logs-trigger\", TriggerArgs.builder() \n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .name(\"terraform-provider-google-beta\")\n .owner(\"hashicorp\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n filename: cloudbuild.yaml\n github:\n name: terraform-provider-google-beta\n owner: hashicorp\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Pubsub Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n description: \"acceptance test example pubsub build trigger\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n substitutions: {\n _ACTION: \"$(body.message.data.action)\",\n },\n filter: \"_ACTION.matches('INSERT')\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmytopic = gcp.pubsub.Topic(\"mytopic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config=gcp.cloudbuild.TriggerPubsubConfigArgs(\n topic=mytopic.id,\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n revision=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n substitutions={\n \"_ACTION\": \"$(body.message.data.action)\",\n },\n filter=\"_ACTION.matches('INSERT')\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\");\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Description = \"acceptance test example pubsub build trigger\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n Substitutions = \n {\n { \"_ACTION\", \"$(body.message.data.action)\" },\n },\n Filter = \"_ACTION.matches('INSERT')\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example pubsub build trigger\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_ACTION\": pulumi.String(\"$(body.message.data.action)\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\"_ACTION.matches('INSERT')\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mytopic = new Topic(\"mytopic\");\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder() \n .location(\"us-central1\")\n .description(\"acceptance test example pubsub build trigger\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .substitutions(Map.of(\"_ACTION\", \"$(body.message.data.action)\"))\n .filter(\"_ACTION.matches('INSERT')\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mytopic:\n type: gcp:pubsub:Topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n description: acceptance test example pubsub build trigger\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n substitutions:\n _ACTION: $(body.message.data.action)\n filter: _ACTION.matches('INSERT')\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Webhook Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhookTriggerSecretKey\", {\n secretId: \"webhook-trigger-secret-key\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst webhookTriggerSecretKeyData = new gcp.secretmanager.SecretVersion(\"webhookTriggerSecretKeyData\", {\n secret: webhookTriggerSecretKey.id,\n secretData: \"secretkeygoeshere\",\n});\nconst project = gcp.organizations.getProject({});\nconst secretAccessor = project.then(project =\u003e gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com`],\n }],\n}));\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n project: webhookTriggerSecretKey.project,\n secretId: webhookTriggerSecretKey.secretId,\n policyData: secretAccessor.then(secretAccessor =\u003e secretAccessor.policyData),\n});\nconst webhook_config_trigger = new gcp.cloudbuild.Trigger(\"webhook-config-trigger\", {\n description: \"acceptance test example webhook build trigger\",\n webhookConfig: {\n secret: webhookTriggerSecretKeyData.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwebhook_trigger_secret_key = gcp.secretmanager.Secret(\"webhookTriggerSecretKey\",\n secret_id=\"webhook-trigger-secret-key\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n user_managed=gcp.secretmanager.SecretReplicationUserManagedArgs(\n replicas=[gcp.secretmanager.SecretReplicationUserManagedReplicaArgs(\n location=\"us-central1\",\n )],\n ),\n ))\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhookTriggerSecretKeyData\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(\n role=\"roles/secretmanager.secretAccessor\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n)])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n project=webhook_trigger_secret_key.project,\n secret_id=webhook_trigger_secret_key.secret_id,\n policy_data=secret_accessor.policy_data)\nwebhook_config_trigger = gcp.cloudbuild.Trigger(\"webhook-config-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config=gcp.cloudbuild.TriggerWebhookConfigArgs(\n secret=webhook_trigger_secret_key_data.id,\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n revision=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webhookTriggerSecretKey = new Gcp.SecretManager.Secret(\"webhookTriggerSecretKey\", new()\n {\n SecretId = \"webhook-trigger-secret-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var webhookTriggerSecretKeyData = new Gcp.SecretManager.SecretVersion(\"webhookTriggerSecretKeyData\", new()\n {\n Secret = webhookTriggerSecretKey.Id,\n SecretData = \"secretkeygoeshere\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n Project = webhookTriggerSecretKey.Project,\n SecretId = webhookTriggerSecretKey.SecretId,\n PolicyData = secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n var webhook_config_trigger = new Gcp.CloudBuild.Trigger(\"webhook-config-trigger\", new()\n {\n Description = \"acceptance test example webhook build trigger\",\n WebhookConfig = new Gcp.CloudBuild.Inputs.TriggerWebhookConfigArgs\n {\n Secret = webhookTriggerSecretKeyData.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twebhookTriggerSecretKey, err := secretmanager.NewSecret(ctx, \"webhookTriggerSecretKey\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"webhook-trigger-secret-key\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebhookTriggerSecretKeyData, err := secretmanager.NewSecretVersion(ctx, \"webhookTriggerSecretKeyData\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhookTriggerSecretKey.ID(),\n\t\t\tSecretData: pulumi.String(\"secretkeygoeshere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\tfmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.Number),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tProject: webhookTriggerSecretKey.Project,\n\t\t\tSecretId: webhookTriggerSecretKey.SecretId,\n\t\t\tPolicyData: *pulumi.String(secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"webhook-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tDescription: pulumi.String(\"acceptance test example webhook build trigger\"),\n\t\t\tWebhookConfig: \u0026cloudbuild.TriggerWebhookConfigArgs{\n\t\t\t\tSecret: webhookTriggerSecretKeyData.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerWebhookConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webhookTriggerSecretKey = new Secret(\"webhookTriggerSecretKey\", SecretArgs.builder() \n .secretId(\"webhook-trigger-secret-key\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var webhookTriggerSecretKeyData = new SecretVersion(\"webhookTriggerSecretKeyData\", SecretVersionArgs.builder() \n .secret(webhookTriggerSecretKey.id())\n .secretData(\"secretkeygoeshere\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n final var secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder() \n .project(webhookTriggerSecretKey.project())\n .secretId(webhookTriggerSecretKey.secretId())\n .policyData(secretAccessor.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n var webhook_config_trigger = new Trigger(\"webhook-config-trigger\", TriggerArgs.builder() \n .description(\"acceptance test example webhook build trigger\")\n .webhookConfig(TriggerWebhookConfigArgs.builder()\n .secret(webhookTriggerSecretKeyData.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webhookTriggerSecretKey:\n type: gcp:secretmanager:Secret\n properties:\n secretId: webhook-trigger-secret-key\n replication:\n userManaged:\n replicas:\n - location: us-central1\n webhookTriggerSecretKeyData:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${webhookTriggerSecretKey.id}\n secretData: secretkeygoeshere\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n project: ${webhookTriggerSecretKey.project}\n secretId: ${webhookTriggerSecretKey.secretId}\n policyData: ${secretAccessor.policyData}\n webhook-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n description: acceptance test example webhook build trigger\n webhookConfig:\n secret: ${webhookTriggerSecretKeyData.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Manual\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_trigger = new gcp.cloudbuild.Trigger(\"manual-trigger\", {\n approvalConfig: {\n approvalRequired: true,\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repoType: \"GITHUB\",\n revision: \"refs/heads/main\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n sourceToBuild: {\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n approval_config=gcp.cloudbuild.TriggerApprovalConfigArgs(\n approval_required=True,\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n repo_type=\"GITHUB\",\n revision=\"refs/heads/main\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n RepoType = \"GITHUB\",\n Revision = \"refs/heads/main\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_trigger = new Trigger(\"manual-trigger\", TriggerArgs.builder() \n .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repoType(\"GITHUB\")\n .revision(\"refs/heads/main\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n # If this is set on a build, it will become pending when it is run, \n # // and will need to be explicitly approved to start.\n approvalConfig:\n approvalRequired: true\n gitFileSource:\n path: cloudbuild.yaml\n repoType: GITHUB\n revision: refs/heads/main\n uri: https://hashicorp/terraform-provider-google-beta\n sourceToBuild:\n ref: refs/heads/main\n repoType: GITHUB\n uri: https://hashicorp/terraform-provider-google-beta\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_ghe_trigger = new gcp.cloudbuild.Trigger(\"manual-ghe-trigger\", {\n gitFileSource: {\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n path: \"cloudbuild.yaml\",\n repoType: \"GITHUB\",\n revision: \"refs/heads/main\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n sourceToBuild: {\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n github_enterprise_config=\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n path=\"cloudbuild.yaml\",\n repo_type=\"GITHUB\",\n revision=\"refs/heads/main\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n github_enterprise_config=\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_ghe_trigger = new Gcp.CloudBuild.Trigger(\"manual-ghe-trigger\", new()\n {\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n Path = \"cloudbuild.yaml\",\n RepoType = \"GITHUB\",\n Revision = \"refs/heads/main\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder() \n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .path(\"cloudbuild.yaml\")\n .repoType(\"GITHUB\")\n .revision(\"refs/heads/main\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n gitFileSource:\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n path: cloudbuild.yaml\n repoType: GITHUB\n revision: refs/heads/main\n uri: https://hashicorp/terraform-provider-google-beta\n sourceToBuild:\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n ref: refs/heads/main\n repoType: GITHUB\n uri: https://hashicorp/terraform-provider-google-beta\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Repo\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst repo_trigger = new gcp.cloudbuild.Trigger(\"repo-trigger\", {\n location: \"us-central1\",\n repositoryEventConfig: {\n repository: my_repository.id,\n push: {\n branch: \"feature-.*\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n github_config=gcp.cloudbuildv2.ConnectionGithubConfigArgs(\n app_installation_id=123123,\n authorizer_credential=gcp.cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs(\n oauth_token_secret_version=\"projects/my-project/secrets/github-pat-secret/versions/latest\",\n ),\n ))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nrepo_trigger = gcp.cloudbuild.Trigger(\"repo-trigger\",\n location=\"us-central1\",\n repository_event_config=gcp.cloudbuild.TriggerRepositoryEventConfigArgs(\n repository=my_repository.id,\n push=gcp.cloudbuild.TriggerRepositoryEventConfigPushArgs(\n branch=\"feature-.*\",\n ),\n ),\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var repo_trigger = new Gcp.CloudBuild.Trigger(\"repo-trigger\", new()\n {\n Location = \"us-central1\",\n RepositoryEventConfig = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigArgs\n {\n Repository = my_repository.Id,\n Push = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigPushArgs\n {\n Branch = \"feature-.*\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryEventConfig: \u0026cloudbuild.TriggerRepositoryEventConfigArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tPush: \u0026cloudbuild.TriggerRepositoryEventConfigPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"feature-.*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder() \n .location(\"us-central1\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder() \n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var repo_trigger = new Trigger(\"repo-trigger\", TriggerArgs.builder() \n .location(\"us-central1\")\n .repositoryEventConfig(TriggerRepositoryEventConfigArgs.builder()\n .repository(my_repository.id())\n .push(TriggerRepositoryEventConfigPushArgs.builder()\n .branch(\"feature-.*\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n repositoryEventConfig:\n repository: ${[\"my-repository\"].id}\n push:\n branch: feature-.*\n filename: cloudbuild.yaml\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_push_trigger = new gcp.cloudbuild.Trigger(\"bbs-push-trigger\", {\n bitbucketServerTriggerConfig: {\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n projectKey: \"STAG\",\n push: {\n invertRegex: true,\n tag: \"^0.1.*\",\n },\n repoSlug: \"bbs-push-trigger\",\n },\n filename: \"cloudbuild.yaml\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n bitbucket_server_trigger_config=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigArgs(\n bitbucket_server_config_resource=\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n project_key=\"STAG\",\n push=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs(\n invert_regex=True,\n tag=\"^0.1.*\",\n ),\n repo_slug=\"bbs-push-trigger\",\n ),\n filename=\"cloudbuild.yaml\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n ProjectKey = \"STAG\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n InvertRegex = true,\n Tag = \"^0.1.*\",\n },\n RepoSlug = \"bbs-push-trigger\",\n },\n Filename = \"cloudbuild.yaml\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-push-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t},\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_push_trigger = new Trigger(\"bbs-push-trigger\", TriggerArgs.builder() \n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .projectKey(\"STAG\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .invertRegex(true)\n .tag(\"^0.1.*\")\n .build())\n .repoSlug(\"bbs-push-trigger\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n bitbucketServerTriggerConfig:\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n projectKey: STAG\n push:\n invertRegex: true\n tag: ^0.1.*\n repoSlug: bbs-push-trigger\n filename: cloudbuild.yaml\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_pull_request_trigger = new gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\", {\n bitbucketServerTriggerConfig: {\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n projectKey: \"STAG\",\n pullRequest: {\n branch: \"^master$\",\n commentControl: \"COMMENTS_ENABLED\",\n invertRegex: false,\n },\n repoSlug: \"terraform-provider-google\",\n },\n filename: \"cloudbuild.yaml\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n bitbucket_server_trigger_config=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigArgs(\n bitbucket_server_config_resource=\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n project_key=\"STAG\",\n pull_request=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs(\n branch=\"^master$\",\n comment_control=\"COMMENTS_ENABLED\",\n invert_regex=False,\n ),\n repo_slug=\"terraform-provider-google\",\n ),\n filename=\"cloudbuild.yaml\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n ProjectKey = \"STAG\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n CommentControl = \"COMMENTS_ENABLED\",\n InvertRegex = false,\n },\n RepoSlug = \"terraform-provider-google\",\n },\n Filename = \"cloudbuild.yaml\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-pull-request-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_pull_request_trigger = new Trigger(\"bbs-pull-request-trigger\", TriggerArgs.builder() \n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .projectKey(\"STAG\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .commentControl(\"COMMENTS_ENABLED\")\n .invertRegex(false)\n .build())\n .repoSlug(\"terraform-provider-google\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n bitbucketServerTriggerConfig:\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n projectKey: STAG\n pullRequest:\n branch: ^master$\n commentControl: COMMENTS_ENABLED\n invertRegex: false\n repoSlug: terraform-provider-google\n filename: cloudbuild.yaml\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Github Enterprise\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ghe_trigger = new gcp.cloudbuild.Trigger(\"ghe-trigger\", {\n filename: \"cloudbuild.yaml\",\n github: {\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n name: \"terraform-provider-google\",\n owner: \"hashicorp\",\n push: {\n branch: \"^main$\",\n },\n },\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n filename=\"cloudbuild.yaml\",\n github=gcp.cloudbuild.TriggerGithubArgs(\n enterprise_config_resource_name=\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n name=\"terraform-provider-google\",\n owner=\"hashicorp\",\n push=gcp.cloudbuild.TriggerGithubPushArgs(\n branch=\"^main$\",\n ),\n ),\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n Name = \"terraform-provider-google\",\n Owner = \"hashicorp\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ghe_trigger = new Trigger(\"ghe-trigger\", TriggerArgs.builder() \n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .name(\"terraform-provider-google\")\n .owner(\"hashicorp\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n filename: cloudbuild.yaml\n github:\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n name: terraform-provider-google\n owner: hashicorp\n push:\n branch: ^main$\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Allow Failure\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_failure_trigger = new Trigger(\"allow-failure-trigger\", TriggerArgs.builder() \n .build(TriggerBuildArgs.builder()\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManager(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .logsBucket(\"gs://mybucket/logs\")\n .options(TriggerBuildOptionsArgs.builder()\n .diskSizeGb(100)\n .dynamicSubstitutions(true)\n .env(\"ekey = evalue\")\n .logStreamingOption(\"STREAM_OFF\")\n .logging(\"LEGACY\")\n .machineType(\"N1_HIGHCPU_8\")\n .requestedVerifyOption(\"VERIFIED\")\n .secretEnv(\"secretenv = svalue\")\n .sourceProvenanceHash(\"MD5\")\n .substitutionOption(\"ALLOW_LOOSE\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .workerPool(\"pool\")\n .build())\n .queueTtl(\"20s\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .steps(TriggerBuildStepArgs.builder()\n .allowFailure(true)\n .args( \n \"-c\",\n \"exit 1\")\n .name(\"ubuntu\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .tags( \n \"build\",\n \"newFeature\")\n .build())\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n build:\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n availableSecrets:\n secretManager:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n logsBucket: gs://mybucket/logs\n options:\n diskSizeGb: 100\n dynamicSubstitutions: true\n env:\n - ekey = evalue\n logStreamingOption: STREAM_OFF\n logging: LEGACY\n machineType: N1_HIGHCPU_8\n requestedVerifyOption: VERIFIED\n secretEnv:\n - secretenv = svalue\n sourceProvenanceHash:\n - MD5\n substitutionOption: ALLOW_LOOSE\n volumes:\n - name: v1\n path: v1\n workerPool: pool\n queueTtl: 20s\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n steps:\n - allowFailure: true\n args:\n - -c\n - exit 1\n name: ubuntu\n substitutions:\n _BAZ: qux\n _FOO: bar\n tags:\n - build\n - newFeature\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Allow Exit Codes\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_exit_codes_trigger = new Trigger(\"allow-exit-codes-trigger\", TriggerArgs.builder() \n .build(TriggerBuildArgs.builder()\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManager(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .logsBucket(\"gs://mybucket/logs\")\n .options(TriggerBuildOptionsArgs.builder()\n .diskSizeGb(100)\n .dynamicSubstitutions(true)\n .env(\"ekey = evalue\")\n .logStreamingOption(\"STREAM_OFF\")\n .logging(\"LEGACY\")\n .machineType(\"N1_HIGHCPU_8\")\n .requestedVerifyOption(\"VERIFIED\")\n .secretEnv(\"secretenv = svalue\")\n .sourceProvenanceHash(\"MD5\")\n .substitutionOption(\"ALLOW_LOOSE\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .workerPool(\"pool\")\n .build())\n .queueTtl(\"20s\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .steps(TriggerBuildStepArgs.builder()\n .allowExitCodes( \n 1,\n 3)\n .args( \n \"-c\",\n \"exit 1\")\n .name(\"ubuntu\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .tags( \n \"build\",\n \"newFeature\")\n .build())\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n build:\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n availableSecrets:\n secretManager:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n logsBucket: gs://mybucket/logs\n options:\n diskSizeGb: 100\n dynamicSubstitutions: true\n env:\n - ekey = evalue\n logStreamingOption: STREAM_OFF\n logging: LEGACY\n machineType: N1_HIGHCPU_8\n requestedVerifyOption: VERIFIED\n secretEnv:\n - secretenv = svalue\n sourceProvenanceHash:\n - MD5\n substitutionOption: ALLOW_LOOSE\n volumes:\n - name: v1\n path: v1\n workerPool: pool\n queueTtl: 20s\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n steps:\n - allowExitCodes:\n - 1\n - 3\n args:\n - -c\n - exit 1\n name: ubuntu\n substitutions:\n _BAZ: qux\n _FOO: bar\n tags:\n - build\n - newFeature\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Pubsub With Repo\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n location: \"us-central1\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n repository: my_repository.id,\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repository: my_repository.id,\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n github_config=gcp.cloudbuildv2.ConnectionGithubConfigArgs(\n app_installation_id=123123,\n authorizer_credential=gcp.cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs(\n oauth_token_secret_version=\"projects/my-project/secrets/github-pat-secret/versions/latest\",\n ),\n ))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config=gcp.cloudbuild.TriggerPubsubConfigArgs(\n topic=mytopic.id,\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n repository=my_repository.id,\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n repository=my_repository.id,\n revision=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\");\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Location = \"us-central1\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Repository = my_repository.Id,\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Repository = my_repository.Id,\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-with-repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder() \n .location(\"us-central1\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder() \n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\");\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder() \n .location(\"us-central1\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .repository(my_repository.id())\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repository(my_repository.id())\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n repository: ${[\"my-repository\"].id}\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n repository: ${[\"my-repository\"].id}\n revision: refs/heads/main\n repoType: GITHUB\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nTrigger can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default {{trigger_id}}\n```\n\n ", + "description": "Configuration for an automated build in response to source repository changes.\n\n\nTo get more information about Trigger, see:\n\n* [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers)\n* How-to Guides\n * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)\n\n\u003e **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `gcp.projects.ServiceIdentity` resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Cloudbuild Trigger Filename\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filename_trigger = new gcp.cloudbuild.Trigger(\"filename-trigger\", {\n filename: \"cloudbuild.yaml\",\n location: \"us-central1\",\n substitutions: {\n _BAZ: \"qux\",\n _FOO: \"bar\",\n },\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n filename=\"cloudbuild.yaml\",\n location=\"us-central1\",\n substitutions={\n \"_BAZ\": \"qux\",\n \"_FOO\": \"bar\",\n },\n trigger_template=gcp.cloudbuild.TriggerTriggerTemplateArgs(\n branch_name=\"main\",\n repo_name=\"my-repo\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Filename = \"cloudbuild.yaml\",\n Location = \"us-central1\",\n Substitutions = \n {\n { \"_BAZ\", \"qux\" },\n { \"_FOO\", \"bar\" },\n },\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"filename-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var filename_trigger = new Trigger(\"filename-trigger\", TriggerArgs.builder() \n .filename(\"cloudbuild.yaml\")\n .location(\"us-central1\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n filename: cloudbuild.yaml\n location: us-central1\n substitutions:\n _BAZ: qux\n _FOO: bar\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Build\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var build_trigger = new Trigger(\"build-trigger\", TriggerArgs.builder() \n .build(TriggerBuildArgs.builder()\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManager(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .logsBucket(\"gs://mybucket/logs\")\n .options(TriggerBuildOptionsArgs.builder()\n .diskSizeGb(100)\n .dynamicSubstitutions(true)\n .env(\"ekey = evalue\")\n .logStreamingOption(\"STREAM_OFF\")\n .logging(\"LEGACY\")\n .machineType(\"N1_HIGHCPU_8\")\n .requestedVerifyOption(\"VERIFIED\")\n .secretEnv(\"secretenv = svalue\")\n .sourceProvenanceHash(\"MD5\")\n .substitutionOption(\"ALLOW_LOOSE\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .workerPool(\"pool\")\n .build())\n .queueTtl(\"20s\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .steps( \n TriggerBuildStepArgs.builder()\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .name(\"gcr.io/cloud-builders/gsutil\")\n .secretEnv(\"MY_SECRET\")\n .timeout(\"120s\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .tags( \n \"build\",\n \"newFeature\")\n .build())\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n build:\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n availableSecrets:\n secretManager:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n logsBucket: gs://mybucket/logs\n options:\n diskSizeGb: 100\n dynamicSubstitutions: true\n env:\n - ekey = evalue\n logStreamingOption: STREAM_OFF\n logging: LEGACY\n machineType: N1_HIGHCPU_8\n requestedVerifyOption: VERIFIED\n secretEnv:\n - secretenv = svalue\n sourceProvenanceHash:\n - MD5\n substitutionOption: ALLOW_LOOSE\n volumes:\n - name: v1\n path: v1\n workerPool: pool\n queueTtl: 20s\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n steps:\n - args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n name: gcr.io/cloud-builders/gsutil\n secretEnv:\n - MY_SECRET\n timeout: 120s\n - name: ubuntu\n script: echo hello\n substitutions:\n _BAZ: qux\n _FOO: bar\n tags:\n - build\n - newFeature\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Service Account\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuildServiceAccount\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"actAs\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logsWriter\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst service_account_trigger = new gcp.cloudbuild.Trigger(\"service-account-trigger\", {\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n filename: \"cloudbuild.yaml\",\n}, {\n dependsOn: [\n actAs,\n logsWriter,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudbuild_service_account = gcp.service_account.Account(\"cloudbuildServiceAccount\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"actAs\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountUser\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logsWriter\",\n project=project.project_id,\n role=\"roles/logging.logWriter\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nservice_account_trigger = gcp.cloudbuild.Trigger(\"service-account-trigger\",\n trigger_template=gcp.cloudbuild.TriggerTriggerTemplateArgs(\n branch_name=\"main\",\n repo_name=\"my-repo\",\n ),\n service_account=cloudbuild_service_account.id,\n filename=\"cloudbuild.yaml\",\n opts=pulumi.ResourceOptions(depends_on=[\n act_as,\n logs_writer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuildServiceAccount\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"actAs\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountUser\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logsWriter\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/logging.logWriter\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var service_account_trigger = new Gcp.CloudBuild.Trigger(\"service-account-trigger\", new()\n {\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n Filename = \"cloudbuild.yaml\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n actAs,\n logsWriter,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudbuildServiceAccount, err := serviceAccount.NewAccount(ctx, \"cloudbuildServiceAccount\", \u0026serviceAccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tactAs, err := projects.NewIAMMember(ctx, \"actAs\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: *pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogsWriter, err := projects.NewIAMMember(ctx, \"logsWriter\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: *pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"service-account-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tactAs,\n\t\t\tlogsWriter,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.serviceAccount.Account;\nimport com.pulumi.gcp.serviceAccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder() \n .accountId(\"cloud-sa\")\n .build());\n\n var actAs = new IAMMember(\"actAs\", IAMMemberArgs.builder() \n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountUser\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder() \n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/logging.logWriter\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var service_account_trigger = new Trigger(\"service-account-trigger\", TriggerArgs.builder() \n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .serviceAccount(cloudbuildServiceAccount.id())\n .filename(\"cloudbuild.yaml\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-account-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n triggerTemplate:\n branchName: main\n repoName: my-repo\n serviceAccount: ${cloudbuildServiceAccount.id}\n filename: cloudbuild.yaml\n options:\n dependson:\n - ${actAs}\n - ${logsWriter}\n cloudbuildServiceAccount:\n type: gcp:serviceAccount:Account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/logging.logWriter\n member: serviceAccount:${cloudbuildServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Include Build Logs\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst include_build_logs_trigger = new gcp.cloudbuild.Trigger(\"include-build-logs-trigger\", {\n filename: \"cloudbuild.yaml\",\n github: {\n name: \"terraform-provider-google-beta\",\n owner: \"hashicorp\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github=gcp.cloudbuild.TriggerGithubArgs(\n name=\"terraform-provider-google-beta\",\n owner=\"hashicorp\",\n push=gcp.cloudbuild.TriggerGithubPushArgs(\n branch=\"^main$\",\n ),\n ),\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var include_build_logs_trigger = new Gcp.CloudBuild.Trigger(\"include-build-logs-trigger\", new()\n {\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Name = \"terraform-provider-google-beta\",\n Owner = \"hashicorp\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"include-build-logs-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncludeBuildLogs: pulumi.String(\"INCLUDE_BUILD_LOGS_WITH_STATUS\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var include_build_logs_trigger = new Trigger(\"include-build-logs-trigger\", TriggerArgs.builder() \n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .name(\"terraform-provider-google-beta\")\n .owner(\"hashicorp\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n filename: cloudbuild.yaml\n github:\n name: terraform-provider-google-beta\n owner: hashicorp\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Pubsub Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n description: \"acceptance test example pubsub build trigger\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n substitutions: {\n _ACTION: \"$(body.message.data.action)\",\n },\n filter: \"_ACTION.matches('INSERT')\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmytopic = gcp.pubsub.Topic(\"mytopic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config=gcp.cloudbuild.TriggerPubsubConfigArgs(\n topic=mytopic.id,\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n revision=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n substitutions={\n \"_ACTION\": \"$(body.message.data.action)\",\n },\n filter=\"_ACTION.matches('INSERT')\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\");\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Description = \"acceptance test example pubsub build trigger\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n Substitutions = \n {\n { \"_ACTION\", \"$(body.message.data.action)\" },\n },\n Filter = \"_ACTION.matches('INSERT')\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example pubsub build trigger\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_ACTION\": pulumi.String(\"$(body.message.data.action)\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\"_ACTION.matches('INSERT')\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mytopic = new Topic(\"mytopic\");\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder() \n .location(\"us-central1\")\n .description(\"acceptance test example pubsub build trigger\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .substitutions(Map.of(\"_ACTION\", \"$(body.message.data.action)\"))\n .filter(\"_ACTION.matches('INSERT')\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mytopic:\n type: gcp:pubsub:Topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n description: acceptance test example pubsub build trigger\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n substitutions:\n _ACTION: $(body.message.data.action)\n filter: _ACTION.matches('INSERT')\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Webhook Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhookTriggerSecretKey\", {\n secretId: \"webhook-trigger-secret-key\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst webhookTriggerSecretKeyData = new gcp.secretmanager.SecretVersion(\"webhookTriggerSecretKeyData\", {\n secret: webhookTriggerSecretKey.id,\n secretData: \"secretkeygoeshere\",\n});\nconst project = gcp.organizations.getProject({});\nconst secretAccessor = project.then(project =\u003e gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com`],\n }],\n}));\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n project: webhookTriggerSecretKey.project,\n secretId: webhookTriggerSecretKey.secretId,\n policyData: secretAccessor.then(secretAccessor =\u003e secretAccessor.policyData),\n});\nconst webhook_config_trigger = new gcp.cloudbuild.Trigger(\"webhook-config-trigger\", {\n description: \"acceptance test example webhook build trigger\",\n webhookConfig: {\n secret: webhookTriggerSecretKeyData.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwebhook_trigger_secret_key = gcp.secretmanager.Secret(\"webhookTriggerSecretKey\",\n secret_id=\"webhook-trigger-secret-key\",\n replication=gcp.secretmanager.SecretReplicationArgs(\n user_managed=gcp.secretmanager.SecretReplicationUserManagedArgs(\n replicas=[gcp.secretmanager.SecretReplicationUserManagedReplicaArgs(\n location=\"us-central1\",\n )],\n ),\n ))\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhookTriggerSecretKeyData\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(\n role=\"roles/secretmanager.secretAccessor\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n)])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n project=webhook_trigger_secret_key.project,\n secret_id=webhook_trigger_secret_key.secret_id,\n policy_data=secret_accessor.policy_data)\nwebhook_config_trigger = gcp.cloudbuild.Trigger(\"webhook-config-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config=gcp.cloudbuild.TriggerWebhookConfigArgs(\n secret=webhook_trigger_secret_key_data.id,\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n revision=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webhookTriggerSecretKey = new Gcp.SecretManager.Secret(\"webhookTriggerSecretKey\", new()\n {\n SecretId = \"webhook-trigger-secret-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var webhookTriggerSecretKeyData = new Gcp.SecretManager.SecretVersion(\"webhookTriggerSecretKeyData\", new()\n {\n Secret = webhookTriggerSecretKey.Id,\n SecretData = \"secretkeygoeshere\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n Project = webhookTriggerSecretKey.Project,\n SecretId = webhookTriggerSecretKey.SecretId,\n PolicyData = secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n var webhook_config_trigger = new Gcp.CloudBuild.Trigger(\"webhook-config-trigger\", new()\n {\n Description = \"acceptance test example webhook build trigger\",\n WebhookConfig = new Gcp.CloudBuild.Inputs.TriggerWebhookConfigArgs\n {\n Secret = webhookTriggerSecretKeyData.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twebhookTriggerSecretKey, err := secretmanager.NewSecret(ctx, \"webhookTriggerSecretKey\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"webhook-trigger-secret-key\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebhookTriggerSecretKeyData, err := secretmanager.NewSecretVersion(ctx, \"webhookTriggerSecretKeyData\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhookTriggerSecretKey.ID(),\n\t\t\tSecretData: pulumi.String(\"secretkeygoeshere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\tfmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.Number),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tProject: webhookTriggerSecretKey.Project,\n\t\t\tSecretId: webhookTriggerSecretKey.SecretId,\n\t\t\tPolicyData: *pulumi.String(secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"webhook-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tDescription: pulumi.String(\"acceptance test example webhook build trigger\"),\n\t\t\tWebhookConfig: \u0026cloudbuild.TriggerWebhookConfigArgs{\n\t\t\t\tSecret: webhookTriggerSecretKeyData.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerWebhookConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webhookTriggerSecretKey = new Secret(\"webhookTriggerSecretKey\", SecretArgs.builder() \n .secretId(\"webhook-trigger-secret-key\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var webhookTriggerSecretKeyData = new SecretVersion(\"webhookTriggerSecretKeyData\", SecretVersionArgs.builder() \n .secret(webhookTriggerSecretKey.id())\n .secretData(\"secretkeygoeshere\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n final var secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder() \n .project(webhookTriggerSecretKey.project())\n .secretId(webhookTriggerSecretKey.secretId())\n .policyData(secretAccessor.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n var webhook_config_trigger = new Trigger(\"webhook-config-trigger\", TriggerArgs.builder() \n .description(\"acceptance test example webhook build trigger\")\n .webhookConfig(TriggerWebhookConfigArgs.builder()\n .secret(webhookTriggerSecretKeyData.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webhookTriggerSecretKey:\n type: gcp:secretmanager:Secret\n properties:\n secretId: webhook-trigger-secret-key\n replication:\n userManaged:\n replicas:\n - location: us-central1\n webhookTriggerSecretKeyData:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${webhookTriggerSecretKey.id}\n secretData: secretkeygoeshere\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n project: ${webhookTriggerSecretKey.project}\n secretId: ${webhookTriggerSecretKey.secretId}\n policyData: ${secretAccessor.policyData}\n webhook-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n description: acceptance test example webhook build trigger\n webhookConfig:\n secret: ${webhookTriggerSecretKeyData.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Manual\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_trigger = new gcp.cloudbuild.Trigger(\"manual-trigger\", {\n approvalConfig: {\n approvalRequired: true,\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repoType: \"GITHUB\",\n revision: \"refs/heads/main\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n sourceToBuild: {\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n approval_config=gcp.cloudbuild.TriggerApprovalConfigArgs(\n approval_required=True,\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n repo_type=\"GITHUB\",\n revision=\"refs/heads/main\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n RepoType = \"GITHUB\",\n Revision = \"refs/heads/main\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_trigger = new Trigger(\"manual-trigger\", TriggerArgs.builder() \n .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repoType(\"GITHUB\")\n .revision(\"refs/heads/main\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n # If this is set on a build, it will become pending when it is run, \n # // and will need to be explicitly approved to start.\n approvalConfig:\n approvalRequired: true\n gitFileSource:\n path: cloudbuild.yaml\n repoType: GITHUB\n revision: refs/heads/main\n uri: https://hashicorp/terraform-provider-google-beta\n sourceToBuild:\n ref: refs/heads/main\n repoType: GITHUB\n uri: https://hashicorp/terraform-provider-google-beta\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_ghe_trigger = new gcp.cloudbuild.Trigger(\"manual-ghe-trigger\", {\n gitFileSource: {\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n path: \"cloudbuild.yaml\",\n repoType: \"GITHUB\",\n revision: \"refs/heads/main\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n sourceToBuild: {\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n github_enterprise_config=\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n path=\"cloudbuild.yaml\",\n repo_type=\"GITHUB\",\n revision=\"refs/heads/main\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n github_enterprise_config=\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n uri=\"https://hashicorp/terraform-provider-google-beta\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_ghe_trigger = new Gcp.CloudBuild.Trigger(\"manual-ghe-trigger\", new()\n {\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n Path = \"cloudbuild.yaml\",\n RepoType = \"GITHUB\",\n Revision = \"refs/heads/main\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder() \n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .path(\"cloudbuild.yaml\")\n .repoType(\"GITHUB\")\n .revision(\"refs/heads/main\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n gitFileSource:\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n path: cloudbuild.yaml\n repoType: GITHUB\n revision: refs/heads/main\n uri: https://hashicorp/terraform-provider-google-beta\n sourceToBuild:\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n ref: refs/heads/main\n repoType: GITHUB\n uri: https://hashicorp/terraform-provider-google-beta\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_bitbucket_trigger = new gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\", {\n gitFileSource: {\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n path: \"cloudbuild.yaml\",\n repoType: \"BITBUCKET_SERVER\",\n revision: \"refs/heads/main\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n },\n sourceToBuild: {\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n bitbucket_server_config=\"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n path=\"cloudbuild.yaml\",\n repo_type=\"BITBUCKET_SERVER\",\n revision=\"refs/heads/main\",\n uri=\"https://bbs.com/scm/stag/test-repo.git\",\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n bitbucket_server_config=\"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n ref=\"refs/heads/main\",\n repo_type=\"BITBUCKET_SERVER\",\n uri=\"https://bbs.com/scm/stag/test-repo.git\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_bitbucket_trigger = new Gcp.CloudBuild.Trigger(\"manual-bitbucket-trigger\", new()\n {\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n Path = \"cloudbuild.yaml\",\n RepoType = \"BITBUCKET_SERVER\",\n Revision = \"refs/heads/main\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-bitbucket-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder() \n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .path(\"cloudbuild.yaml\")\n .repoType(\"BITBUCKET_SERVER\")\n .revision(\"refs/heads/main\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n gitFileSource:\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n path: cloudbuild.yaml\n repoType: BITBUCKET_SERVER\n revision: refs/heads/main\n uri: https://bbs.com/scm/stag/test-repo.git\n sourceToBuild:\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n uri: https://bbs.com/scm/stag/test-repo.git\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Repo\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst repo_trigger = new gcp.cloudbuild.Trigger(\"repo-trigger\", {\n location: \"us-central1\",\n repositoryEventConfig: {\n repository: my_repository.id,\n push: {\n branch: \"feature-.*\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n github_config=gcp.cloudbuildv2.ConnectionGithubConfigArgs(\n app_installation_id=123123,\n authorizer_credential=gcp.cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs(\n oauth_token_secret_version=\"projects/my-project/secrets/github-pat-secret/versions/latest\",\n ),\n ))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nrepo_trigger = gcp.cloudbuild.Trigger(\"repo-trigger\",\n location=\"us-central1\",\n repository_event_config=gcp.cloudbuild.TriggerRepositoryEventConfigArgs(\n repository=my_repository.id,\n push=gcp.cloudbuild.TriggerRepositoryEventConfigPushArgs(\n branch=\"feature-.*\",\n ),\n ),\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var repo_trigger = new Gcp.CloudBuild.Trigger(\"repo-trigger\", new()\n {\n Location = \"us-central1\",\n RepositoryEventConfig = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigArgs\n {\n Repository = my_repository.Id,\n Push = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigPushArgs\n {\n Branch = \"feature-.*\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryEventConfig: \u0026cloudbuild.TriggerRepositoryEventConfigArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tPush: \u0026cloudbuild.TriggerRepositoryEventConfigPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"feature-.*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder() \n .location(\"us-central1\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder() \n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var repo_trigger = new Trigger(\"repo-trigger\", TriggerArgs.builder() \n .location(\"us-central1\")\n .repositoryEventConfig(TriggerRepositoryEventConfigArgs.builder()\n .repository(my_repository.id())\n .push(TriggerRepositoryEventConfigPushArgs.builder()\n .branch(\"feature-.*\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n repositoryEventConfig:\n repository: ${[\"my-repository\"].id}\n push:\n branch: feature-.*\n filename: cloudbuild.yaml\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_push_trigger = new gcp.cloudbuild.Trigger(\"bbs-push-trigger\", {\n bitbucketServerTriggerConfig: {\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n projectKey: \"STAG\",\n push: {\n invertRegex: true,\n tag: \"^0.1.*\",\n },\n repoSlug: \"bbs-push-trigger\",\n },\n filename: \"cloudbuild.yaml\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n bitbucket_server_trigger_config=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigArgs(\n bitbucket_server_config_resource=\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n project_key=\"STAG\",\n push=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs(\n invert_regex=True,\n tag=\"^0.1.*\",\n ),\n repo_slug=\"bbs-push-trigger\",\n ),\n filename=\"cloudbuild.yaml\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n ProjectKey = \"STAG\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n InvertRegex = true,\n Tag = \"^0.1.*\",\n },\n RepoSlug = \"bbs-push-trigger\",\n },\n Filename = \"cloudbuild.yaml\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-push-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t},\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_push_trigger = new Trigger(\"bbs-push-trigger\", TriggerArgs.builder() \n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .projectKey(\"STAG\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .invertRegex(true)\n .tag(\"^0.1.*\")\n .build())\n .repoSlug(\"bbs-push-trigger\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n bitbucketServerTriggerConfig:\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n projectKey: STAG\n push:\n invertRegex: true\n tag: ^0.1.*\n repoSlug: bbs-push-trigger\n filename: cloudbuild.yaml\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_pull_request_trigger = new gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\", {\n bitbucketServerTriggerConfig: {\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n projectKey: \"STAG\",\n pullRequest: {\n branch: \"^master$\",\n commentControl: \"COMMENTS_ENABLED\",\n invertRegex: false,\n },\n repoSlug: \"terraform-provider-google\",\n },\n filename: \"cloudbuild.yaml\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n bitbucket_server_trigger_config=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigArgs(\n bitbucket_server_config_resource=\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n project_key=\"STAG\",\n pull_request=gcp.cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs(\n branch=\"^master$\",\n comment_control=\"COMMENTS_ENABLED\",\n invert_regex=False,\n ),\n repo_slug=\"terraform-provider-google\",\n ),\n filename=\"cloudbuild.yaml\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n ProjectKey = \"STAG\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n CommentControl = \"COMMENTS_ENABLED\",\n InvertRegex = false,\n },\n RepoSlug = \"terraform-provider-google\",\n },\n Filename = \"cloudbuild.yaml\",\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-pull-request-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_pull_request_trigger = new Trigger(\"bbs-pull-request-trigger\", TriggerArgs.builder() \n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .projectKey(\"STAG\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .commentControl(\"COMMENTS_ENABLED\")\n .invertRegex(false)\n .build())\n .repoSlug(\"terraform-provider-google\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n bitbucketServerTriggerConfig:\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n projectKey: STAG\n pullRequest:\n branch: ^master$\n commentControl: COMMENTS_ENABLED\n invertRegex: false\n repoSlug: terraform-provider-google\n filename: cloudbuild.yaml\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Github Enterprise\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ghe_trigger = new gcp.cloudbuild.Trigger(\"ghe-trigger\", {\n filename: \"cloudbuild.yaml\",\n github: {\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n name: \"terraform-provider-google\",\n owner: \"hashicorp\",\n push: {\n branch: \"^main$\",\n },\n },\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n filename=\"cloudbuild.yaml\",\n github=gcp.cloudbuild.TriggerGithubArgs(\n enterprise_config_resource_name=\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n name=\"terraform-provider-google\",\n owner=\"hashicorp\",\n push=gcp.cloudbuild.TriggerGithubPushArgs(\n branch=\"^main$\",\n ),\n ),\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n Name = \"terraform-provider-google\",\n Owner = \"hashicorp\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ghe_trigger = new Trigger(\"ghe-trigger\", TriggerArgs.builder() \n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .name(\"terraform-provider-google\")\n .owner(\"hashicorp\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n filename: cloudbuild.yaml\n github:\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n name: terraform-provider-google\n owner: hashicorp\n push:\n branch: ^main$\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Allow Failure\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_failure_trigger = new Trigger(\"allow-failure-trigger\", TriggerArgs.builder() \n .build(TriggerBuildArgs.builder()\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManager(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .logsBucket(\"gs://mybucket/logs\")\n .options(TriggerBuildOptionsArgs.builder()\n .diskSizeGb(100)\n .dynamicSubstitutions(true)\n .env(\"ekey = evalue\")\n .logStreamingOption(\"STREAM_OFF\")\n .logging(\"LEGACY\")\n .machineType(\"N1_HIGHCPU_8\")\n .requestedVerifyOption(\"VERIFIED\")\n .secretEnv(\"secretenv = svalue\")\n .sourceProvenanceHash(\"MD5\")\n .substitutionOption(\"ALLOW_LOOSE\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .workerPool(\"pool\")\n .build())\n .queueTtl(\"20s\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .steps(TriggerBuildStepArgs.builder()\n .allowFailure(true)\n .args( \n \"-c\",\n \"exit 1\")\n .name(\"ubuntu\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .tags( \n \"build\",\n \"newFeature\")\n .build())\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n build:\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n availableSecrets:\n secretManager:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n logsBucket: gs://mybucket/logs\n options:\n diskSizeGb: 100\n dynamicSubstitutions: true\n env:\n - ekey = evalue\n logStreamingOption: STREAM_OFF\n logging: LEGACY\n machineType: N1_HIGHCPU_8\n requestedVerifyOption: VERIFIED\n secretEnv:\n - secretenv = svalue\n sourceProvenanceHash:\n - MD5\n substitutionOption: ALLOW_LOOSE\n volumes:\n - name: v1\n path: v1\n workerPool: pool\n queueTtl: 20s\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n steps:\n - allowFailure: true\n args:\n - -c\n - exit 1\n name: ubuntu\n substitutions:\n _BAZ: qux\n _FOO: bar\n tags:\n - build\n - newFeature\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Allow Exit Codes\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_exit_codes_trigger = new Trigger(\"allow-exit-codes-trigger\", TriggerArgs.builder() \n .build(TriggerBuildArgs.builder()\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManager(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n .build())\n .logsBucket(\"gs://mybucket/logs\")\n .options(TriggerBuildOptionsArgs.builder()\n .diskSizeGb(100)\n .dynamicSubstitutions(true)\n .env(\"ekey = evalue\")\n .logStreamingOption(\"STREAM_OFF\")\n .logging(\"LEGACY\")\n .machineType(\"N1_HIGHCPU_8\")\n .requestedVerifyOption(\"VERIFIED\")\n .secretEnv(\"secretenv = svalue\")\n .sourceProvenanceHash(\"MD5\")\n .substitutionOption(\"ALLOW_LOOSE\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .workerPool(\"pool\")\n .build())\n .queueTtl(\"20s\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .steps(TriggerBuildStepArgs.builder()\n .allowExitCodes( \n 1,\n 3)\n .args( \n \"-c\",\n \"exit 1\")\n .name(\"ubuntu\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_BAZ\", \"qux\"),\n Map.entry(\"_FOO\", \"bar\")\n ))\n .tags( \n \"build\",\n \"newFeature\")\n .build())\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n build:\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n availableSecrets:\n secretManager:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n logsBucket: gs://mybucket/logs\n options:\n diskSizeGb: 100\n dynamicSubstitutions: true\n env:\n - ekey = evalue\n logStreamingOption: STREAM_OFF\n logging: LEGACY\n machineType: N1_HIGHCPU_8\n requestedVerifyOption: VERIFIED\n secretEnv:\n - secretenv = svalue\n sourceProvenanceHash:\n - MD5\n substitutionOption: ALLOW_LOOSE\n volumes:\n - name: v1\n path: v1\n workerPool: pool\n queueTtl: 20s\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n steps:\n - allowExitCodes:\n - 1\n - 3\n args:\n - -c\n - exit 1\n name: ubuntu\n substitutions:\n _BAZ: qux\n _FOO: bar\n tags:\n - build\n - newFeature\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n```\n{{% /example %}}\n{{% example %}}\n### Cloudbuild Trigger Pubsub With Repo\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n location: \"us-central1\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n repository: my_repository.id,\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repository: my_repository.id,\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n github_config=gcp.cloudbuildv2.ConnectionGithubConfigArgs(\n app_installation_id=123123,\n authorizer_credential=gcp.cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs(\n oauth_token_secret_version=\"projects/my-project/secrets/github-pat-secret/versions/latest\",\n ),\n ))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config=gcp.cloudbuild.TriggerPubsubConfigArgs(\n topic=mytopic.id,\n ),\n source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs(\n repository=my_repository.id,\n ref=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ),\n git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs(\n path=\"cloudbuild.yaml\",\n repository=my_repository.id,\n revision=\"refs/heads/main\",\n repo_type=\"GITHUB\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\");\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Location = \"us-central1\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Repository = my_repository.Id,\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Repository = my_repository.Id,\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-with-repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder() \n .location(\"us-central1\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder() \n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\");\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder() \n .location(\"us-central1\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .repository(my_repository.id())\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repository(my_repository.id())\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n repository: ${[\"my-repository\"].id}\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n repository: ${[\"my-repository\"].id}\n revision: refs/heads/main\n repoType: GITHUB\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nTrigger can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:cloudbuild/trigger:Trigger default {{trigger_id}}\n```\n\n ", "properties": { "approvalConfig": { "$ref": "#/types/gcp:cloudbuild/TriggerApprovalConfig:TriggerApprovalConfig", @@ -104649,6 +105031,18 @@ }, "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run.\nStructure is documented below.\n" }, + "createTime": { + "type": "string", + "description": "(Output)\nCreation timestamp of the execution.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n" + }, + "creator": { + "type": "string", + "description": "Email address of the authenticated creator.\n" + }, + "deleteTime": { + "type": "string", + "description": "The deletion time.\n" + }, "etag": { "type": "string", "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.\n" @@ -104657,6 +105051,10 @@ "type": "integer", "description": "Number of executions created for this job.\n" }, + "expireTime": { + "type": "string", + "description": "For a deleted resource, the time after which it will be permamently deleted.\n" + }, "generation": { "type": "string", "description": "A number that monotonically increases every time the user modifies the desired state.\n" @@ -104668,6 +105066,10 @@ }, "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter,\nor break down billing charges by team, component, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or\nhttps://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 ExecutionTemplate.\n\n(Optional)\nUnstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component,\nenvironment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 Job.\n" }, + "lastModifier": { + "type": "string", + "description": "Email address of the last authenticated modifier.\n" + }, "latestCreatedExecutions": { "type": "array", "items": { @@ -104713,13 +105115,22 @@ "uid": { "type": "string", "description": "Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.\n" + }, + "updateTime": { + "type": "string", + "description": "The last-modified time.\n" } }, "required": [ "conditions", + "createTime", + "creator", + "deleteTime", "etag", "executionCount", + "expireTime", "generation", + "lastModifier", "latestCreatedExecutions", "launchStage", "name", @@ -104728,7 +105139,8 @@ "reconciling", "template", "terminalConditions", - "uid" + "uid", + "updateTime" ], "inputProperties": { "annotations": { @@ -104813,6 +105225,18 @@ }, "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run.\nStructure is documented below.\n" }, + "createTime": { + "type": "string", + "description": "(Output)\nCreation timestamp of the execution.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n" + }, + "creator": { + "type": "string", + "description": "Email address of the authenticated creator.\n" + }, + "deleteTime": { + "type": "string", + "description": "The deletion time.\n" + }, "etag": { "type": "string", "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.\n" @@ -104821,6 +105245,10 @@ "type": "integer", "description": "Number of executions created for this job.\n" }, + "expireTime": { + "type": "string", + "description": "For a deleted resource, the time after which it will be permamently deleted.\n" + }, "generation": { "type": "string", "description": "A number that monotonically increases every time the user modifies the desired state.\n" @@ -104832,6 +105260,10 @@ }, "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter,\nor break down billing charges by team, component, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or\nhttps://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 ExecutionTemplate.\n\n(Optional)\nUnstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component,\nenvironment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 Job.\n" }, + "lastModifier": { + "type": "string", + "description": "Email address of the last authenticated modifier.\n" + }, "latestCreatedExecutions": { "type": "array", "items": { @@ -104880,6 +105312,10 @@ "uid": { "type": "string", "description": "Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.\n" + }, + "updateTime": { + "type": "string", + "description": "The last-modified time.\n" } }, "type": "object" @@ -105228,6 +105664,14 @@ }, "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run.\nStructure is documented below.\n" }, + "createTime": { + "type": "string", + "description": "The creation time.\n" + }, + "creator": { + "type": "string", + "description": "Email address of the authenticated creator.\n" + }, "customAudiences": { "type": "array", "items": { @@ -105235,6 +105679,10 @@ }, "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a\nstring. The custom audiences are encoded in the token and used to authenticate requests. For more information, see\nhttps://cloud.google.com/run/docs/configuring/custom-audiences.\n" }, + "deleteTime": { + "type": "string", + "description": "The deletion time.\n" + }, "description": { "type": "string", "description": "User-provided description of the Service. This field currently has a 512-character limit.\n" @@ -105243,6 +105691,10 @@ "type": "string", "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.\n" }, + "expireTime": { + "type": "string", + "description": "For a deleted resource, the time after which it will be permamently deleted.\n" + }, "generation": { "type": "string", "description": "A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer.\n" @@ -105258,6 +105710,10 @@ }, "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc.\nFor more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 RevisionTemplate.\n\n(Optional)\nUnstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component,\nenvironment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 Service.\n" }, + "lastModifier": { + "type": "string", + "description": "Email address of the last authenticated modifier.\n" + }, "latestCreatedRevision": { "type": "string", "description": "Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run.\n" @@ -105319,6 +105775,10 @@ "type": "string", "description": "Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.\n" }, + "updateTime": { + "type": "string", + "description": "The last-modified time.\n" + }, "uri": { "type": "string", "description": "(Output)\nDisplays the target URI.\n" @@ -105326,9 +105786,14 @@ }, "required": [ "conditions", + "createTime", + "creator", + "deleteTime", "etag", + "expireTime", "generation", "ingress", + "lastModifier", "latestCreatedRevision", "latestReadyRevision", "launchStage", @@ -105341,6 +105806,7 @@ "traffics", "trafficStatuses", "uid", + "updateTime", "uri" ], "inputProperties": { @@ -105448,6 +105914,14 @@ }, "description": "The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run.\nStructure is documented below.\n" }, + "createTime": { + "type": "string", + "description": "The creation time.\n" + }, + "creator": { + "type": "string", + "description": "Email address of the authenticated creator.\n" + }, "customAudiences": { "type": "array", "items": { @@ -105455,6 +105929,10 @@ }, "description": "One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a\nstring. The custom audiences are encoded in the token and used to authenticate requests. For more information, see\nhttps://cloud.google.com/run/docs/configuring/custom-audiences.\n" }, + "deleteTime": { + "type": "string", + "description": "The deletion time.\n" + }, "description": { "type": "string", "description": "User-provided description of the Service. This field currently has a 512-character limit.\n" @@ -105463,6 +105941,10 @@ "type": "string", "description": "A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates.\n" }, + "expireTime": { + "type": "string", + "description": "For a deleted resource, the time after which it will be permamently deleted.\n" + }, "generation": { "type": "string", "description": "A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer.\n" @@ -105478,6 +105960,10 @@ }, "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc.\nFor more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 RevisionTemplate.\n\n(Optional)\nUnstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component,\nenvironment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 Service.\n" }, + "lastModifier": { + "type": "string", + "description": "Email address of the last authenticated modifier.\n" + }, "latestCreatedRevision": { "type": "string", "description": "Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run.\n" @@ -105542,6 +106028,10 @@ "type": "string", "description": "Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.\n" }, + "updateTime": { + "type": "string", + "description": "The last-modified time.\n" + }, "uri": { "type": "string", "description": "(Output)\nDisplays the target URI.\n" @@ -110323,7 +110813,7 @@ } }, "gcp:compute/forwardingRule:ForwardingRule": { - "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool\nof target virtual machines to forward a packet to if it matches the given\n[IPAddress, IPProtocol, portRange] tuple.\n\n\nTo get more information about ForwardingRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/forwardingRules)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Internal Http Lb With Mig Backend\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"europe-west1\")\n .purpose(\"INTERNAL_HTTPS_LOAD_BALANCER\")\n .role(\"ACTIVE\")\n .network(ilbNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"europe-west1\")\n .network(ilbNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"europe-west1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-small\")\n .tags(\"http-server\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .accessConfigs()\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-10\")\n .autoDelete(true)\n .boot(true)\n .build())\n .metadata(Map.of(\"startup-script\", \"\"\"\n#! /bin/bash\nset -euo pipefail\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update\napt-get install -y nginx-light jq\n\nNAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\nIP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\nMETADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\ncat \u003c\u003cEOF \u003e /var/www/html/index.html\n\u003cpre\u003e\nName: $NAME\nIP: $IP\nMetadata: $METADATA\n\u003c/pre\u003e\nEOF\n \"\"\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var mig = new RegionInstanceGroupManager(\"mig\", RegionInstanceGroupManagerArgs.builder() \n .region(\"europe-west1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"vm\")\n .targetSize(2)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"europe-west1\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(mig.instanceGroup())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"europe-west1\")\n .defaultService(defaultRegionBackendService.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"europe-west1\")\n .urlMap(defaultRegionUrlMap.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var googleComputeForwardingRule = new ForwardingRule(\"googleComputeForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"europe-west1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .portRange(\"80\")\n .target(defaultRegionTargetHttpProxy.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(proxySubnet)\n .build());\n\n var fw_iap = new Firewall(\"fw-iap\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n \"35.235.240.0/20\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw_ilb_to_backends = new Firewall(\"fw-ilb-to-backends\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges(\"10.0.0.0/24\")\n .targetTags(\"http-server\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports( \n \"80\",\n \"443\",\n \"8080\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var vm_test = new Instance(\"vm-test\", InstanceArgs.builder() \n .zone(\"europe-west1-b\")\n .machineType(\"e2-small\")\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build())\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-10\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Internal HTTP load balancer with a managed instance group backend\n\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n # proxy-only subnet\n proxySubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/24\n region: europe-west1\n purpose: INTERNAL_HTTPS_LOAD_BALANCER\n role: ACTIVE\n network: ${ilbNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.1.0/24\n region: europe-west1\n network: ${ilbNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n # forwarding rule\n googleComputeForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: europe-west1\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n portRange: '80'\n target: ${defaultRegionTargetHttpProxy.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n networkTier: PREMIUM\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${proxySubnet}\n # HTTP target proxy\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: europe-west1\n urlMap: ${defaultRegionUrlMap.id}\n options:\n provider: ${[\"google-beta\"]}\n # URL map\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: europe-west1\n defaultService: ${defaultRegionBackendService.id}\n options:\n provider: ${[\"google-beta\"]}\n # backend service\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: europe-west1\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n backends:\n - group: ${mig.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n options:\n provider: ${[\"google-beta\"]}\n # instance template\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-small\n tags:\n - http-server\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n accessConfigs:\n - {}\n disks:\n - sourceImage: debian-cloud/debian-10\n autoDelete: true\n boot: true\n # install nginx and serve a simple web page\n metadata:\n startup-script: |\n #! /bin/bash\n set -euo pipefail\n\n export DEBIAN_FRONTEND=noninteractive\n apt-get update\n apt-get install -y nginx-light jq\n\n NAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\n IP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\n METADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\n cat \u003c\u003cEOF \u003e /var/www/html/index.html\n \u003cpre\u003e\n Name: $NAME\n IP: $IP\n Metadata: $METADATA\n \u003c/pre\u003e\n EOF\n options:\n provider: ${[\"google-beta\"]}\n # health check\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: europe-west1\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n provider: ${[\"google-beta\"]}\n # MIG\n mig:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: europe-west1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: vm\n targetSize: 2\n options:\n provider: ${[\"google-beta\"]}\n # allow all access from IAP and health check ranges\n fw-iap:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n - 35.235.240.0/20\n allows:\n - protocol: tcp\n options:\n provider: ${[\"google-beta\"]}\n # allow http from proxy subnet to backends\n fw-ilb-to-backends:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 10.0.0.0/24\n targetTags:\n - http-server\n allows:\n - protocol: tcp\n ports:\n - '80'\n - '443'\n - '8080'\n options:\n provider: ${[\"google-beta\"]}\n # test instance\n vm-test:\n type: gcp:compute:Instance\n properties:\n zone: europe-west1-b\n machineType: e2-small\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-10\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Internal Tcp Udp Lb With Mig Backend\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"europe-west1\")\n .network(ilbNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"europe-west1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-small\")\n .tags( \n \"allow-ssh\",\n \"allow-health-check\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .accessConfigs()\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-10\")\n .autoDelete(true)\n .boot(true)\n .build())\n .metadata(Map.of(\"startup-script\", \"\"\"\n#! /bin/bash\nset -euo pipefail\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update\napt-get install -y nginx-light jq\n\nNAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\nIP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\nMETADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\ncat \u003c\u003cEOF \u003e /var/www/html/index.html\n\u003cpre\u003e\nName: $NAME\nIP: $IP\nMetadata: $METADATA\n\u003c/pre\u003e\nEOF\n \"\"\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var mig = new RegionInstanceGroupManager(\"mig\", RegionInstanceGroupManagerArgs.builder() \n .region(\"europe-west1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"vm\")\n .targetSize(2)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"europe-west1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .healthChecks(defaultRegionHealthCheck.id())\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(mig.instanceGroup())\n .balancingMode(\"CONNECTION\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var googleComputeForwardingRule = new ForwardingRule(\"googleComputeForwardingRule\", ForwardingRuleArgs.builder() \n .backendService(defaultRegionBackendService.id())\n .region(\"europe-west1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .allowGlobalAccess(true)\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwHc = new Firewall(\"fwHc\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n \"35.235.240.0/20\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .targetTags(\"allow-health-check\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwIlbToBackends = new Firewall(\"fwIlbToBackends\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges(\"10.0.1.0/24\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"udp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"icmp\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwIlbSsh = new Firewall(\"fwIlbSsh\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"22\")\n .build())\n .targetTags(\"allow-ssh\")\n .sourceRanges(\"0.0.0.0/0\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var vmTest = new Instance(\"vmTest\", InstanceArgs.builder() \n .zone(\"europe-west1-b\")\n .machineType(\"e2-small\")\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build())\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-10\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Internal TCP/UDP load balancer with a managed instance group backend\n\n # VPC\n ilbNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n # backed subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.1.0/24\n region: europe-west1\n network: ${ilbNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n # forwarding rule\n googleComputeForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n backendService: ${defaultRegionBackendService.id}\n region: europe-west1\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL\n allPorts: true\n allowGlobalAccess: true\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n options:\n provider: ${[\"google-beta\"]}\n # backend service\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: europe-west1\n protocol: TCP\n loadBalancingScheme: INTERNAL\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n backends:\n - group: ${mig.instanceGroup}\n balancingMode: CONNECTION\n options:\n provider: ${[\"google-beta\"]}\n # instance template\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-small\n tags:\n - allow-ssh\n - allow-health-check\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n accessConfigs:\n - {}\n disks:\n - sourceImage: debian-cloud/debian-10\n autoDelete: true\n boot: true\n # install nginx and serve a simple web page\n metadata:\n startup-script: |\n #! /bin/bash\n set -euo pipefail\n\n export DEBIAN_FRONTEND=noninteractive\n apt-get update\n apt-get install -y nginx-light jq\n\n NAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\n IP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\n METADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\n cat \u003c\u003cEOF \u003e /var/www/html/index.html\n \u003cpre\u003e\n Name: $NAME\n IP: $IP\n Metadata: $METADATA\n \u003c/pre\u003e\n EOF\n options:\n provider: ${[\"google-beta\"]}\n # health check\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: europe-west1\n httpHealthCheck:\n port: '80'\n options:\n provider: ${[\"google-beta\"]}\n # MIG\n mig:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: europe-west1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: vm\n targetSize: 2\n options:\n provider: ${[\"google-beta\"]}\n # allow all access from health check ranges\n fwHc:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n - 35.235.240.0/20\n allows:\n - protocol: tcp\n targetTags:\n - allow-health-check\n options:\n provider: ${[\"google-beta\"]}\n # allow communication within the subnet\n fwIlbToBackends:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 10.0.1.0/24\n allows:\n - protocol: tcp\n - protocol: udp\n - protocol: icmp\n options:\n provider: ${[\"google-beta\"]}\n # allow SSH\n fwIlbSsh:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n allows:\n - protocol: tcp\n ports:\n - '22'\n targetTags:\n - allow-ssh\n sourceRanges:\n - 0.0.0.0/0\n options:\n provider: ${[\"google-beta\"]}\n # test instance\n vmTest:\n type: gcp:compute:Instance\n properties:\n zone: europe-west1-b\n machineType: e2-small\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-10\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Externallb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new RegionHealthCheck(\"hc\", RegionHealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .healthChecks(hc.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .portRange(80)\n .backendService(backend.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for External Network Load Balancing using Backend Services\n default:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n portRange: 80\n backendService: ${backend.id}\n options:\n provider: ${[\"google-beta\"]}\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n loadBalancingScheme: EXTERNAL\n healthChecks:\n - ${hc.id}\n options:\n provider: ${[\"google-beta\"]}\n hc:\n type: gcp:compute:RegionHealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n region: us-central1\n tcpHealthCheck:\n port: '80'\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Global Internallb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .allowGlobalAccess(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n allowGlobalAccess: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultTargetPool = new gcp.compute.TargetPool(\"defaultTargetPool\", {});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"defaultForwardingRule\", {\n target: defaultTargetPool.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_target_pool = gcp.compute.TargetPool(\"defaultTargetPool\")\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"defaultForwardingRule\",\n target=default_target_pool.id,\n port_range=\"80\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultTargetPool = new Gcp.Compute.TargetPool(\"defaultTargetPool\");\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"defaultForwardingRule\", new()\n {\n Target = defaultTargetPool.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultTargetPool, err := compute.NewTargetPool(ctx, \"defaultTargetPool\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"defaultForwardingRule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tTarget: defaultTargetPool.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultTargetPool = new TargetPool(\"defaultTargetPool\");\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .target(defaultTargetPool.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n target: ${defaultTargetPool.id}\n portRange: '80'\n defaultTargetPool:\n type: gcp:compute:TargetPool\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule L3 Default\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var healthCheck = new RegionHealthCheck(\"healthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var service = new RegionBackendService(\"service\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(healthCheck.id())\n .protocol(\"UNSPECIFIED\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwdRule = new ForwardingRule(\"fwdRule\", ForwardingRuleArgs.builder() \n .backendService(service.id())\n .ipProtocol(\"L3_DEFAULT\")\n .allPorts(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fwdRule:\n type: gcp:compute:ForwardingRule\n properties:\n backendService: ${service.id}\n ipProtocol: L3_DEFAULT\n allPorts: true\n options:\n provider: ${[\"google-beta\"]}\n service:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${healthCheck.id}\n protocol: UNSPECIFIED\n loadBalancingScheme: EXTERNAL\n options:\n provider: ${[\"google-beta\"]}\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n tcpHealthCheck:\n port: 80\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Internallb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .ipVersion(\"IPV4\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n ipVersion: IPV4\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Http Lb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .tags( \n \"allow-ssh\",\n \"load-balanced-backend\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder() \n .region(\"us-central1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.1.2.0/24\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"udp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"icmp\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"0.0.0.0/0\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"22\")\n .build())\n .targetTags(\"allow-ssh\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .targetTags(\"load-balanced-backend\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.129.0.0/26\")\n .targetTags(\"load-balanced-backend\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"443\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"8000\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw4)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(rigm.instanceGroup())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .region(\"us-central1\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"us-central1\")\n .defaultService(defaultRegionBackendService.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"us-central1\")\n .urlMap(defaultRegionUrlMap.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.129.0.0/26\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .purpose(\"INTERNAL_HTTPS_LOAD_BALANCER\")\n .role(\"ACTIVE\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .portRange(\"80\")\n .target(defaultRegionTargetHttpProxy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n portRange: '80'\n target: ${defaultRegionTargetHttpProxy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n networkTier: PREMIUM\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n urlMap: ${defaultRegionUrlMap.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n defaultService: ${defaultRegionBackendService.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n protocol: HTTP\n timeoutSec: 10\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n options:\n provider: ${[\"google-beta\"]}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n options:\n provider: ${[\"google-beta\"]}\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-medium\n networkInterfaces:\n - network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n tags:\n - allow-ssh\n - load-balanced-backend\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw4}\n fw1:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.1.2.0/24\n allows:\n - protocol: tcp\n - protocol: udp\n - protocol: icmp\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n fw2:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 0.0.0.0/0\n allows:\n - protocol: tcp\n ports:\n - '22'\n targetTags:\n - allow-ssh\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n allows:\n - protocol: tcp\n targetTags:\n - load-balanced-backend\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.129.0.0/26\n targetTags:\n - load-balanced-backend\n allows:\n - protocol: tcp\n ports:\n - '80'\n - protocol: tcp\n ports:\n - '443'\n - protocol: tcp\n ports:\n - '8000'\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n options:\n provider: ${[\"google-beta\"]}\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: INTERNAL_HTTPS_LOAD_BALANCER\n role: ACTIVE\n options:\n provider: ${[\"google-beta\"]}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Regional Http Xlb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .tags( \n \"allow-ssh\",\n \"load-balanced-backend\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder() \n .region(\"us-central1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.1.2.0/24\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"udp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"icmp\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"0.0.0.0/0\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"22\")\n .build())\n .targetTags(\"allow-ssh\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .targetTags(\"load-balanced-backend\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.129.0.0/26\")\n .targetTags(\"load-balanced-backend\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"443\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"8000\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw4)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(rigm.instanceGroup())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .region(\"us-central1\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"us-central1\")\n .defaultService(defaultRegionBackendService.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"us-central1\")\n .urlMap(defaultRegionUrlMap.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultAddress = new Address(\"defaultAddress\", AddressArgs.builder() \n .region(\"us-central1\")\n .networkTier(\"STANDARD\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.129.0.0/26\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .portRange(\"80\")\n .target(defaultRegionTargetHttpProxy.id())\n .network(defaultNetwork.id())\n .ipAddress(defaultAddress.id())\n .networkTier(\"STANDARD\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Regional External Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipProtocol: TCP\n loadBalancingScheme: EXTERNAL_MANAGED\n portRange: '80'\n target: ${defaultRegionTargetHttpProxy.id}\n network: ${defaultNetwork.id}\n ipAddress: ${defaultAddress.id}\n networkTier: STANDARD\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n urlMap: ${defaultRegionUrlMap.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n defaultService: ${defaultRegionBackendService.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n loadBalancingScheme: EXTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n protocol: HTTP\n timeoutSec: 10\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n options:\n provider: ${[\"google-beta\"]}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n options:\n provider: ${[\"google-beta\"]}\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-medium\n networkInterfaces:\n - network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n tags:\n - allow-ssh\n - load-balanced-backend\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw4}\n defaultAddress:\n type: gcp:compute:Address\n properties:\n region: us-central1\n networkTier: STANDARD\n options:\n provider: ${[\"google-beta\"]}\n fw1:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.1.2.0/24\n allows:\n - protocol: tcp\n - protocol: udp\n - protocol: icmp\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n fw2:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 0.0.0.0/0\n allows:\n - protocol: tcp\n ports:\n - '22'\n targetTags:\n - allow-ssh\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n allows:\n - protocol: tcp\n targetTags:\n - load-balanced-backend\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.129.0.0/26\n targetTags:\n - load-balanced-backend\n allows:\n - protocol: tcp\n ports:\n - '80'\n - protocol: tcp\n ports:\n - '443'\n - protocol: tcp\n ports:\n - '8000'\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n options:\n provider: ${[\"google-beta\"]}\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n options:\n provider: ${[\"google-beta\"]}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Vpc Psc\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var consumerNet = new Network(\"consumerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(consumerNet.id())\n .build());\n\n var consumerAddress = new Address(\"consumerAddress\", AddressArgs.builder() \n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"us-central1\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(producerNet.id())\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var producerServiceBackend = new RegionBackendService(\"producerServiceBackend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(producerNet.name())\n .subnetwork(producerSubnet.name())\n .build());\n\n var producerServiceAttachment = new ServiceAttachment(\"producerServiceAttachment\", ServiceAttachmentArgs.builder() \n .region(\"us-central1\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscProducerSubnet.name())\n .targetService(producerTargetService.id())\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .target(producerServiceAttachment.id())\n .network(consumerNet.name())\n .ipAddress(consumerAddress.id())\n .allowPscGlobalAccess(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for VPC private service connect\n default: # Consumer service endpoint\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme:\n target: ${producerServiceAttachment.id}\n network: ${consumerNet.name}\n ipAddress: ${consumerAddress.id}\n allowPscGlobalAccess: true\n consumerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress: # Producer service attachment\n type: gcp:compute:Address\n properties:\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n producerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.0.0/16\n region: us-central1\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${producerNet.id}\n producerServiceAttachment:\n type: gcp:compute:ServiceAttachment\n properties:\n region: us-central1\n description: A service attachment configured with Terraform\n enableProxyProtocol: true\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscProducerSubnet.name}\n targetService: ${producerTargetService.id}\n producerTargetService:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${producerNet.name}\n subnetwork: ${producerSubnet.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Vpc Psc No Automate Dns\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var consumerNet = new Network(\"consumerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(consumerNet.id())\n .build());\n\n var consumerAddress = new Address(\"consumerAddress\", AddressArgs.builder() \n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"us-central1\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(producerNet.id())\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var producerServiceBackend = new RegionBackendService(\"producerServiceBackend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(producerNet.name())\n .subnetwork(producerSubnet.name())\n .build());\n\n var producerServiceAttachment = new ServiceAttachment(\"producerServiceAttachment\", ServiceAttachmentArgs.builder() \n .region(\"us-central1\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscProducerSubnet.name())\n .targetService(producerTargetService.id())\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .target(producerServiceAttachment.id())\n .network(consumerNet.name())\n .ipAddress(consumerAddress.id())\n .allowPscGlobalAccess(true)\n .noAutomateDnsZone(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme:\n target: ${producerServiceAttachment.id}\n network: ${consumerNet.name}\n ipAddress: ${consumerAddress.id}\n allowPscGlobalAccess: true\n noAutomateDnsZone: true\n consumerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress:\n type: gcp:compute:Address\n properties:\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n producerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.0.0/16\n region: us-central1\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${producerNet.id}\n producerServiceAttachment:\n type: gcp:compute:ServiceAttachment\n properties:\n region: us-central1\n description: A service attachment configured with Terraform\n enableProxyProtocol: true\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscProducerSubnet.name}\n targetService: ${producerTargetService.id}\n producerTargetService:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${producerNet.name}\n subnetwork: ${producerSubnet.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Regional Steering\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.compute.Address(\"basic\", {region: \"us-central1\"});\nconst externalRegionBackendService = new gcp.compute.RegionBackendService(\"externalRegionBackendService\", {\n region: \"us-central1\",\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst externalForwardingRule = new gcp.compute.ForwardingRule(\"externalForwardingRule\", {\n region: \"us-central1\",\n ipAddress: basic.selfLink,\n backendService: externalRegionBackendService.selfLink,\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst steering = new gcp.compute.ForwardingRule(\"steering\", {\n region: \"us-central1\",\n ipAddress: basic.selfLink,\n backendService: externalRegionBackendService.selfLink,\n loadBalancingScheme: \"EXTERNAL\",\n sourceIpRanges: [\n \"34.121.88.0/24\",\n \"35.187.239.137\",\n ],\n}, {\n dependsOn: [externalForwardingRule],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.compute.Address(\"basic\", region=\"us-central1\")\nexternal_region_backend_service = gcp.compute.RegionBackendService(\"externalRegionBackendService\",\n region=\"us-central1\",\n load_balancing_scheme=\"EXTERNAL\")\nexternal_forwarding_rule = gcp.compute.ForwardingRule(\"externalForwardingRule\",\n region=\"us-central1\",\n ip_address=basic.self_link,\n backend_service=external_region_backend_service.self_link,\n load_balancing_scheme=\"EXTERNAL\")\nsteering = gcp.compute.ForwardingRule(\"steering\",\n region=\"us-central1\",\n ip_address=basic.self_link,\n backend_service=external_region_backend_service.self_link,\n load_balancing_scheme=\"EXTERNAL\",\n source_ip_ranges=[\n \"34.121.88.0/24\",\n \"35.187.239.137\",\n ],\n opts=pulumi.ResourceOptions(depends_on=[external_forwarding_rule]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Compute.Address(\"basic\", new()\n {\n Region = \"us-central1\",\n });\n\n var externalRegionBackendService = new Gcp.Compute.RegionBackendService(\"externalRegionBackendService\", new()\n {\n Region = \"us-central1\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var externalForwardingRule = new Gcp.Compute.ForwardingRule(\"externalForwardingRule\", new()\n {\n Region = \"us-central1\",\n IpAddress = basic.SelfLink,\n BackendService = externalRegionBackendService.SelfLink,\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var steering = new Gcp.Compute.ForwardingRule(\"steering\", new()\n {\n Region = \"us-central1\",\n IpAddress = basic.SelfLink,\n BackendService = externalRegionBackendService.SelfLink,\n LoadBalancingScheme = \"EXTERNAL\",\n SourceIpRanges = new[]\n {\n \"34.121.88.0/24\",\n \"35.187.239.137\",\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n externalForwardingRule,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := compute.NewAddress(ctx, \"basic\", \u0026compute.AddressArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalRegionBackendService, err := compute.NewRegionBackendService(ctx, \"externalRegionBackendService\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalForwardingRule, err := compute.NewForwardingRule(ctx, \"externalForwardingRule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.SelfLink,\n\t\t\tBackendService: externalRegionBackendService.SelfLink,\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"steering\", \u0026compute.ForwardingRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.SelfLink,\n\t\t\tBackendService: externalRegionBackendService.SelfLink,\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tSourceIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"34.121.88.0/24\"),\n\t\t\t\tpulumi.String(\"35.187.239.137\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texternalForwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new Address(\"basic\", AddressArgs.builder() \n .region(\"us-central1\")\n .build());\n\n var externalRegionBackendService = new RegionBackendService(\"externalRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var externalForwardingRule = new ForwardingRule(\"externalForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipAddress(basic.selfLink())\n .backendService(externalRegionBackendService.selfLink())\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var steering = new ForwardingRule(\"steering\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipAddress(basic.selfLink())\n .backendService(externalRegionBackendService.selfLink())\n .loadBalancingScheme(\"EXTERNAL\")\n .sourceIpRanges( \n \"34.121.88.0/24\",\n \"35.187.239.137\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(externalForwardingRule)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n steering:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipAddress: ${basic.selfLink}\n backendService: ${externalRegionBackendService.selfLink}\n loadBalancingScheme: EXTERNAL\n sourceIpRanges:\n - 34.121.88.0/24\n - 35.187.239.137\n options:\n dependson:\n - ${externalForwardingRule}\n basic:\n type: gcp:compute:Address\n properties:\n region: us-central1\n externalRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n loadBalancingScheme: EXTERNAL\n externalForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipAddress: ${basic.selfLink}\n backendService: ${externalRegionBackendService.selfLink}\n loadBalancingScheme: EXTERNAL\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Internallb Ipv6\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .ipVersion(\"IPV6\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n ipVersion: IPV6\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${defaultNetwork.id}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nForwardingRule can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{name}}\n```\n\n ", + "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool\nof target virtual machines to forward a packet to if it matches the given\n[IPAddress, IPProtocol, portRange] tuple.\n\n\nTo get more information about ForwardingRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/forwardingRules)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Internal Http Lb With Mig Backend\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"europe-west1\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .network(ilbNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"europe-west1\")\n .network(ilbNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"europe-west1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-small\")\n .tags(\"http-server\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .accessConfigs()\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-10\")\n .autoDelete(true)\n .boot(true)\n .build())\n .metadata(Map.of(\"startup-script\", \"\"\"\n#! /bin/bash\nset -euo pipefail\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update\napt-get install -y nginx-light jq\n\nNAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\nIP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\nMETADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\ncat \u003c\u003cEOF \u003e /var/www/html/index.html\n\u003cpre\u003e\nName: $NAME\nIP: $IP\nMetadata: $METADATA\n\u003c/pre\u003e\nEOF\n \"\"\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var mig = new RegionInstanceGroupManager(\"mig\", RegionInstanceGroupManagerArgs.builder() \n .region(\"europe-west1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"vm\")\n .targetSize(2)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"europe-west1\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(mig.instanceGroup())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"europe-west1\")\n .defaultService(defaultRegionBackendService.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"europe-west1\")\n .urlMap(defaultRegionUrlMap.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var googleComputeForwardingRule = new ForwardingRule(\"googleComputeForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"europe-west1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .portRange(\"80\")\n .target(defaultRegionTargetHttpProxy.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(proxySubnet)\n .build());\n\n var fw_iap = new Firewall(\"fw-iap\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n \"35.235.240.0/20\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw_ilb_to_backends = new Firewall(\"fw-ilb-to-backends\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges(\"10.0.0.0/24\")\n .targetTags(\"http-server\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports( \n \"80\",\n \"443\",\n \"8080\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var vm_test = new Instance(\"vm-test\", InstanceArgs.builder() \n .zone(\"europe-west1-b\")\n .machineType(\"e2-small\")\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build())\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-10\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Internal HTTP load balancer with a managed instance group backend\n\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n # proxy-only subnet\n proxySubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/24\n region: europe-west1\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n network: ${ilbNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.1.0/24\n region: europe-west1\n network: ${ilbNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n # forwarding rule\n googleComputeForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: europe-west1\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n portRange: '80'\n target: ${defaultRegionTargetHttpProxy.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n networkTier: PREMIUM\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${proxySubnet}\n # HTTP target proxy\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: europe-west1\n urlMap: ${defaultRegionUrlMap.id}\n options:\n provider: ${[\"google-beta\"]}\n # URL map\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: europe-west1\n defaultService: ${defaultRegionBackendService.id}\n options:\n provider: ${[\"google-beta\"]}\n # backend service\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: europe-west1\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n backends:\n - group: ${mig.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n options:\n provider: ${[\"google-beta\"]}\n # instance template\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-small\n tags:\n - http-server\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n accessConfigs:\n - {}\n disks:\n - sourceImage: debian-cloud/debian-10\n autoDelete: true\n boot: true\n # install nginx and serve a simple web page\n metadata:\n startup-script: |\n #! /bin/bash\n set -euo pipefail\n\n export DEBIAN_FRONTEND=noninteractive\n apt-get update\n apt-get install -y nginx-light jq\n\n NAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\n IP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\n METADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\n cat \u003c\u003cEOF \u003e /var/www/html/index.html\n \u003cpre\u003e\n Name: $NAME\n IP: $IP\n Metadata: $METADATA\n \u003c/pre\u003e\n EOF\n options:\n provider: ${[\"google-beta\"]}\n # health check\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: europe-west1\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n provider: ${[\"google-beta\"]}\n # MIG\n mig:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: europe-west1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: vm\n targetSize: 2\n options:\n provider: ${[\"google-beta\"]}\n # allow all access from IAP and health check ranges\n fw-iap:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n - 35.235.240.0/20\n allows:\n - protocol: tcp\n options:\n provider: ${[\"google-beta\"]}\n # allow http from proxy subnet to backends\n fw-ilb-to-backends:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 10.0.0.0/24\n targetTags:\n - http-server\n allows:\n - protocol: tcp\n ports:\n - '80'\n - '443'\n - '8080'\n options:\n provider: ${[\"google-beta\"]}\n # test instance\n vm-test:\n type: gcp:compute:Instance\n properties:\n zone: europe-west1-b\n machineType: e2-small\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-10\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Internal Tcp Udp Lb With Mig Backend\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"europe-west1\")\n .network(ilbNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"europe-west1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-small\")\n .tags( \n \"allow-ssh\",\n \"allow-health-check\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .accessConfigs()\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-10\")\n .autoDelete(true)\n .boot(true)\n .build())\n .metadata(Map.of(\"startup-script\", \"\"\"\n#! /bin/bash\nset -euo pipefail\n\nexport DEBIAN_FRONTEND=noninteractive\napt-get update\napt-get install -y nginx-light jq\n\nNAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\nIP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\nMETADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\ncat \u003c\u003cEOF \u003e /var/www/html/index.html\n\u003cpre\u003e\nName: $NAME\nIP: $IP\nMetadata: $METADATA\n\u003c/pre\u003e\nEOF\n \"\"\"))\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var mig = new RegionInstanceGroupManager(\"mig\", RegionInstanceGroupManagerArgs.builder() \n .region(\"europe-west1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"vm\")\n .targetSize(2)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"europe-west1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .healthChecks(defaultRegionHealthCheck.id())\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(mig.instanceGroup())\n .balancingMode(\"CONNECTION\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var googleComputeForwardingRule = new ForwardingRule(\"googleComputeForwardingRule\", ForwardingRuleArgs.builder() \n .backendService(defaultRegionBackendService.id())\n .region(\"europe-west1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .allowGlobalAccess(true)\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwHc = new Firewall(\"fwHc\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\",\n \"35.235.240.0/20\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .targetTags(\"allow-health-check\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwIlbToBackends = new Firewall(\"fwIlbToBackends\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .sourceRanges(\"10.0.1.0/24\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"udp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"icmp\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwIlbSsh = new Firewall(\"fwIlbSsh\", FirewallArgs.builder() \n .direction(\"INGRESS\")\n .network(ilbNetwork.id())\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"22\")\n .build())\n .targetTags(\"allow-ssh\")\n .sourceRanges(\"0.0.0.0/0\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var vmTest = new Instance(\"vmTest\", InstanceArgs.builder() \n .zone(\"europe-west1-b\")\n .machineType(\"e2-small\")\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build())\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-10\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Internal TCP/UDP load balancer with a managed instance group backend\n\n # VPC\n ilbNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n # backed subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.1.0/24\n region: europe-west1\n network: ${ilbNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n # forwarding rule\n googleComputeForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n backendService: ${defaultRegionBackendService.id}\n region: europe-west1\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL\n allPorts: true\n allowGlobalAccess: true\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n options:\n provider: ${[\"google-beta\"]}\n # backend service\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: europe-west1\n protocol: TCP\n loadBalancingScheme: INTERNAL\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n backends:\n - group: ${mig.instanceGroup}\n balancingMode: CONNECTION\n options:\n provider: ${[\"google-beta\"]}\n # instance template\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-small\n tags:\n - allow-ssh\n - allow-health-check\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n accessConfigs:\n - {}\n disks:\n - sourceImage: debian-cloud/debian-10\n autoDelete: true\n boot: true\n # install nginx and serve a simple web page\n metadata:\n startup-script: |\n #! /bin/bash\n set -euo pipefail\n\n export DEBIAN_FRONTEND=noninteractive\n apt-get update\n apt-get install -y nginx-light jq\n\n NAME=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/hostname\")\n IP=$(curl -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip\")\n METADATA=$(curl -f -H \"Metadata-Flavor: Google\" \"http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True\" | jq 'del(.[\"startup-script\"])')\n\n cat \u003c\u003cEOF \u003e /var/www/html/index.html\n \u003cpre\u003e\n Name: $NAME\n IP: $IP\n Metadata: $METADATA\n \u003c/pre\u003e\n EOF\n options:\n provider: ${[\"google-beta\"]}\n # health check\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: europe-west1\n httpHealthCheck:\n port: '80'\n options:\n provider: ${[\"google-beta\"]}\n # MIG\n mig:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: europe-west1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: vm\n targetSize: 2\n options:\n provider: ${[\"google-beta\"]}\n # allow all access from health check ranges\n fwHc:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n - 35.235.240.0/20\n allows:\n - protocol: tcp\n targetTags:\n - allow-health-check\n options:\n provider: ${[\"google-beta\"]}\n # allow communication within the subnet\n fwIlbToBackends:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n sourceRanges:\n - 10.0.1.0/24\n allows:\n - protocol: tcp\n - protocol: udp\n - protocol: icmp\n options:\n provider: ${[\"google-beta\"]}\n # allow SSH\n fwIlbSsh:\n type: gcp:compute:Firewall\n properties:\n direction: INGRESS\n network: ${ilbNetwork.id}\n allows:\n - protocol: tcp\n ports:\n - '22'\n targetTags:\n - allow-ssh\n sourceRanges:\n - 0.0.0.0/0\n options:\n provider: ${[\"google-beta\"]}\n # test instance\n vmTest:\n type: gcp:compute:Instance\n properties:\n zone: europe-west1-b\n machineType: e2-small\n networkInterfaces:\n - network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-10\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Externallb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new RegionHealthCheck(\"hc\", RegionHealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .healthChecks(hc.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .portRange(80)\n .backendService(backend.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for External Network Load Balancing using Backend Services\n default:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n portRange: 80\n backendService: ${backend.id}\n options:\n provider: ${[\"google-beta\"]}\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n loadBalancingScheme: EXTERNAL\n healthChecks:\n - ${hc.id}\n options:\n provider: ${[\"google-beta\"]}\n hc:\n type: gcp:compute:RegionHealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n region: us-central1\n tcpHealthCheck:\n port: '80'\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Global Internallb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .allowGlobalAccess(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n allowGlobalAccess: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultTargetPool = new gcp.compute.TargetPool(\"defaultTargetPool\", {});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"defaultForwardingRule\", {\n target: defaultTargetPool.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_target_pool = gcp.compute.TargetPool(\"defaultTargetPool\")\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"defaultForwardingRule\",\n target=default_target_pool.id,\n port_range=\"80\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultTargetPool = new Gcp.Compute.TargetPool(\"defaultTargetPool\");\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"defaultForwardingRule\", new()\n {\n Target = defaultTargetPool.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultTargetPool, err := compute.NewTargetPool(ctx, \"defaultTargetPool\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"defaultForwardingRule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tTarget: defaultTargetPool.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.TargetPool;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultTargetPool = new TargetPool(\"defaultTargetPool\");\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .target(defaultTargetPool.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n target: ${defaultTargetPool.id}\n portRange: '80'\n defaultTargetPool:\n type: gcp:compute:TargetPool\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule L3 Default\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var healthCheck = new RegionHealthCheck(\"healthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var service = new RegionBackendService(\"service\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(healthCheck.id())\n .protocol(\"UNSPECIFIED\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fwdRule = new ForwardingRule(\"fwdRule\", ForwardingRuleArgs.builder() \n .backendService(service.id())\n .ipProtocol(\"L3_DEFAULT\")\n .allPorts(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fwdRule:\n type: gcp:compute:ForwardingRule\n properties:\n backendService: ${service.id}\n ipProtocol: L3_DEFAULT\n allPorts: true\n options:\n provider: ${[\"google-beta\"]}\n service:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${healthCheck.id}\n protocol: UNSPECIFIED\n loadBalancingScheme: EXTERNAL\n options:\n provider: ${[\"google-beta\"]}\n healthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n tcpHealthCheck:\n port: 80\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Internallb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .ipVersion(\"IPV4\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n ipVersion: IPV4\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${defaultNetwork.id}\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Http Lb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .tags( \n \"allow-ssh\",\n \"load-balanced-backend\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder() \n .region(\"us-central1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.1.2.0/24\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"udp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"icmp\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"0.0.0.0/0\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"22\")\n .build())\n .targetTags(\"allow-ssh\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .targetTags(\"load-balanced-backend\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.129.0.0/26\")\n .targetTags(\"load-balanced-backend\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"443\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"8000\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw4)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(rigm.instanceGroup())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .region(\"us-central1\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"us-central1\")\n .defaultService(defaultRegionBackendService.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"us-central1\")\n .urlMap(defaultRegionUrlMap.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.129.0.0/26\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .portRange(\"80\")\n .target(defaultRegionTargetHttpProxy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n portRange: '80'\n target: ${defaultRegionTargetHttpProxy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n networkTier: PREMIUM\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n urlMap: ${defaultRegionUrlMap.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n defaultService: ${defaultRegionBackendService.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n protocol: HTTP\n timeoutSec: 10\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n options:\n provider: ${[\"google-beta\"]}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n options:\n provider: ${[\"google-beta\"]}\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-medium\n networkInterfaces:\n - network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n tags:\n - allow-ssh\n - load-balanced-backend\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw4}\n fw1:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.1.2.0/24\n allows:\n - protocol: tcp\n - protocol: udp\n - protocol: icmp\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n fw2:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 0.0.0.0/0\n allows:\n - protocol: tcp\n ports:\n - '22'\n targetTags:\n - allow-ssh\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n allows:\n - protocol: tcp\n targetTags:\n - load-balanced-backend\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.129.0.0/26\n targetTags:\n - load-balanced-backend\n allows:\n - protocol: tcp\n ports:\n - '80'\n - protocol: tcp\n ports:\n - '443'\n - protocol: tcp\n ports:\n - '8000'\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n options:\n provider: ${[\"google-beta\"]}\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n options:\n provider: ${[\"google-beta\"]}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Regional Http Xlb\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.2.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder() \n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .tags( \n \"allow-ssh\",\n \"load-balanced-backend\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder() \n .region(\"us-central1\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .targetSize(1)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw1 = new Firewall(\"fw1\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.1.2.0/24\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"udp\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"icmp\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var fw2 = new Firewall(\"fw2\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"0.0.0.0/0\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"22\")\n .build())\n .targetTags(\"allow-ssh\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw1)\n .build());\n\n var fw3 = new Firewall(\"fw3\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges( \n \"130.211.0.0/22\",\n \"35.191.0.0/16\")\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .build())\n .targetTags(\"load-balanced-backend\")\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw2)\n .build());\n\n var fw4 = new Firewall(\"fw4\", FirewallArgs.builder() \n .network(defaultNetwork.id())\n .sourceRanges(\"10.129.0.0/26\")\n .targetTags(\"load-balanced-backend\")\n .allows( \n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"443\")\n .build(),\n FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"8000\")\n .build())\n .direction(\"INGRESS\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw3)\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(fw4)\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(rigm.instanceGroup())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .region(\"us-central1\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"us-central1\")\n .defaultService(defaultRegionBackendService.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultRegionTargetHttpProxy = new RegionTargetHttpProxy(\"defaultRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"us-central1\")\n .urlMap(defaultRegionUrlMap.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultAddress = new Address(\"defaultAddress\", AddressArgs.builder() \n .region(\"us-central1\")\n .networkTier(\"STANDARD\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var proxy = new Subnetwork(\"proxy\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.129.0.0/26\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .portRange(\"80\")\n .target(defaultRegionTargetHttpProxy.id())\n .network(defaultNetwork.id())\n .ipAddress(defaultAddress.id())\n .networkTier(\"STANDARD\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(proxy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Regional External Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipProtocol: TCP\n loadBalancingScheme: EXTERNAL_MANAGED\n portRange: '80'\n target: ${defaultRegionTargetHttpProxy.id}\n network: ${defaultNetwork.id}\n ipAddress: ${defaultAddress.id}\n networkTier: STANDARD\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${proxy}\n defaultRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n urlMap: ${defaultRegionUrlMap.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n defaultService: ${defaultRegionBackendService.id}\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n loadBalancingScheme: EXTERNAL_MANAGED\n backends:\n - group: ${rigm.instanceGroup}\n balancingMode: UTILIZATION\n capacityScaler: 1\n region: us-central1\n protocol: HTTP\n timeoutSec: 10\n healthChecks:\n - ${defaultRegionHealthCheck.id}\n options:\n provider: ${[\"google-beta\"]}\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n region: us-central1\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n targetSize: 1\n options:\n provider: ${[\"google-beta\"]}\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n properties:\n machineType: e2-medium\n networkInterfaces:\n - network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n tags:\n - allow-ssh\n - load-balanced-backend\n options:\n provider: ${[\"google-beta\"]}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw4}\n defaultAddress:\n type: gcp:compute:Address\n properties:\n region: us-central1\n networkTier: STANDARD\n options:\n provider: ${[\"google-beta\"]}\n fw1:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.1.2.0/24\n allows:\n - protocol: tcp\n - protocol: udp\n - protocol: icmp\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n fw2:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 0.0.0.0/0\n allows:\n - protocol: tcp\n ports:\n - '22'\n targetTags:\n - allow-ssh\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw1}\n fw3:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 130.211.0.0/22\n - 35.191.0.0/16\n allows:\n - protocol: tcp\n targetTags:\n - load-balanced-backend\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw2}\n fw4:\n type: gcp:compute:Firewall\n properties:\n network: ${defaultNetwork.id}\n sourceRanges:\n - 10.129.0.0/26\n targetTags:\n - load-balanced-backend\n allows:\n - protocol: tcp\n ports:\n - '80'\n - protocol: tcp\n ports:\n - '443'\n - protocol: tcp\n ports:\n - '8000'\n direction: INGRESS\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${fw3}\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n options:\n provider: ${[\"google-beta\"]}\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.2.0/24\n region: us-central1\n network: ${defaultNetwork.id}\n options:\n provider: ${[\"google-beta\"]}\n proxy:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.129.0.0/26\n region: us-central1\n network: ${defaultNetwork.id}\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n options:\n provider: ${[\"google-beta\"]}\nvariables:\n debianImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Vpc Psc\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var consumerNet = new Network(\"consumerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(consumerNet.id())\n .build());\n\n var consumerAddress = new Address(\"consumerAddress\", AddressArgs.builder() \n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"us-central1\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(producerNet.id())\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var producerServiceBackend = new RegionBackendService(\"producerServiceBackend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(producerNet.name())\n .subnetwork(producerSubnet.name())\n .build());\n\n var producerServiceAttachment = new ServiceAttachment(\"producerServiceAttachment\", ServiceAttachmentArgs.builder() \n .region(\"us-central1\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscProducerSubnet.name())\n .targetService(producerTargetService.id())\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .target(producerServiceAttachment.id())\n .network(consumerNet.name())\n .ipAddress(consumerAddress.id())\n .allowPscGlobalAccess(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for VPC private service connect\n default: # Consumer service endpoint\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme:\n target: ${producerServiceAttachment.id}\n network: ${consumerNet.name}\n ipAddress: ${consumerAddress.id}\n allowPscGlobalAccess: true\n consumerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress: # Producer service attachment\n type: gcp:compute:Address\n properties:\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n producerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.0.0/16\n region: us-central1\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${producerNet.id}\n producerServiceAttachment:\n type: gcp:compute:ServiceAttachment\n properties:\n region: us-central1\n description: A service attachment configured with Terraform\n enableProxyProtocol: true\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscProducerSubnet.name}\n targetService: ${producerTargetService.id}\n producerTargetService:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${producerNet.name}\n subnetwork: ${producerSubnet.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Vpc Psc No Automate Dns\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var consumerNet = new Network(\"consumerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnet = new Subnetwork(\"consumerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(consumerNet.id())\n .build());\n\n var consumerAddress = new Address(\"consumerAddress\", AddressArgs.builder() \n .region(\"us-central1\")\n .subnetwork(consumerSubnet.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var pscProducerSubnet = new Subnetwork(\"pscProducerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"us-central1\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(producerNet.id())\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var producerServiceHealthCheck = new HealthCheck(\"producerServiceHealthCheck\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var producerServiceBackend = new RegionBackendService(\"producerServiceBackend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(producerServiceHealthCheck.id())\n .build());\n\n var producerTargetService = new ForwardingRule(\"producerTargetService\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(producerServiceBackend.id())\n .allPorts(true)\n .network(producerNet.name())\n .subnetwork(producerSubnet.name())\n .build());\n\n var producerServiceAttachment = new ServiceAttachment(\"producerServiceAttachment\", ServiceAttachmentArgs.builder() \n .region(\"us-central1\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(true)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscProducerSubnet.name())\n .targetService(producerTargetService.id())\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .target(producerServiceAttachment.id())\n .network(consumerNet.name())\n .ipAddress(consumerAddress.id())\n .allowPscGlobalAccess(true)\n .noAutomateDnsZone(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme:\n target: ${producerServiceAttachment.id}\n network: ${consumerNet.name}\n ipAddress: ${consumerAddress.id}\n allowPscGlobalAccess: true\n noAutomateDnsZone: true\n consumerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n consumerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${consumerNet.id}\n consumerAddress:\n type: gcp:compute:Address\n properties:\n region: us-central1\n subnetwork: ${consumerSubnet.id}\n addressType: INTERNAL\n producerNet:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n producerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${producerNet.id}\n pscProducerSubnet:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.0.0/16\n region: us-central1\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${producerNet.id}\n producerServiceAttachment:\n type: gcp:compute:ServiceAttachment\n properties:\n region: us-central1\n description: A service attachment configured with Terraform\n enableProxyProtocol: true\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscProducerSubnet.name}\n targetService: ${producerTargetService.id}\n producerTargetService:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${producerServiceBackend.id}\n allPorts: true\n network: ${producerNet.name}\n subnetwork: ${producerSubnet.name}\n producerServiceBackend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${producerServiceHealthCheck.id}\n producerServiceHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Regional Steering\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.compute.Address(\"basic\", {region: \"us-central1\"});\nconst externalRegionBackendService = new gcp.compute.RegionBackendService(\"externalRegionBackendService\", {\n region: \"us-central1\",\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst externalForwardingRule = new gcp.compute.ForwardingRule(\"externalForwardingRule\", {\n region: \"us-central1\",\n ipAddress: basic.selfLink,\n backendService: externalRegionBackendService.selfLink,\n loadBalancingScheme: \"EXTERNAL\",\n});\nconst steering = new gcp.compute.ForwardingRule(\"steering\", {\n region: \"us-central1\",\n ipAddress: basic.selfLink,\n backendService: externalRegionBackendService.selfLink,\n loadBalancingScheme: \"EXTERNAL\",\n sourceIpRanges: [\n \"34.121.88.0/24\",\n \"35.187.239.137\",\n ],\n}, {\n dependsOn: [externalForwardingRule],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.compute.Address(\"basic\", region=\"us-central1\")\nexternal_region_backend_service = gcp.compute.RegionBackendService(\"externalRegionBackendService\",\n region=\"us-central1\",\n load_balancing_scheme=\"EXTERNAL\")\nexternal_forwarding_rule = gcp.compute.ForwardingRule(\"externalForwardingRule\",\n region=\"us-central1\",\n ip_address=basic.self_link,\n backend_service=external_region_backend_service.self_link,\n load_balancing_scheme=\"EXTERNAL\")\nsteering = gcp.compute.ForwardingRule(\"steering\",\n region=\"us-central1\",\n ip_address=basic.self_link,\n backend_service=external_region_backend_service.self_link,\n load_balancing_scheme=\"EXTERNAL\",\n source_ip_ranges=[\n \"34.121.88.0/24\",\n \"35.187.239.137\",\n ],\n opts=pulumi.ResourceOptions(depends_on=[external_forwarding_rule]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Compute.Address(\"basic\", new()\n {\n Region = \"us-central1\",\n });\n\n var externalRegionBackendService = new Gcp.Compute.RegionBackendService(\"externalRegionBackendService\", new()\n {\n Region = \"us-central1\",\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var externalForwardingRule = new Gcp.Compute.ForwardingRule(\"externalForwardingRule\", new()\n {\n Region = \"us-central1\",\n IpAddress = basic.SelfLink,\n BackendService = externalRegionBackendService.SelfLink,\n LoadBalancingScheme = \"EXTERNAL\",\n });\n\n var steering = new Gcp.Compute.ForwardingRule(\"steering\", new()\n {\n Region = \"us-central1\",\n IpAddress = basic.SelfLink,\n BackendService = externalRegionBackendService.SelfLink,\n LoadBalancingScheme = \"EXTERNAL\",\n SourceIpRanges = new[]\n {\n \"34.121.88.0/24\",\n \"35.187.239.137\",\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n externalForwardingRule,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := compute.NewAddress(ctx, \"basic\", \u0026compute.AddressArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalRegionBackendService, err := compute.NewRegionBackendService(ctx, \"externalRegionBackendService\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalForwardingRule, err := compute.NewForwardingRule(ctx, \"externalForwardingRule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.SelfLink,\n\t\t\tBackendService: externalRegionBackendService.SelfLink,\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"steering\", \u0026compute.ForwardingRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: basic.SelfLink,\n\t\t\tBackendService: externalRegionBackendService.SelfLink,\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL\"),\n\t\t\tSourceIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"34.121.88.0/24\"),\n\t\t\t\tpulumi.String(\"35.187.239.137\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texternalForwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new Address(\"basic\", AddressArgs.builder() \n .region(\"us-central1\")\n .build());\n\n var externalRegionBackendService = new RegionBackendService(\"externalRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var externalForwardingRule = new ForwardingRule(\"externalForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipAddress(basic.selfLink())\n .backendService(externalRegionBackendService.selfLink())\n .loadBalancingScheme(\"EXTERNAL\")\n .build());\n\n var steering = new ForwardingRule(\"steering\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .ipAddress(basic.selfLink())\n .backendService(externalRegionBackendService.selfLink())\n .loadBalancingScheme(\"EXTERNAL\")\n .sourceIpRanges( \n \"34.121.88.0/24\",\n \"35.187.239.137\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(externalForwardingRule)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n steering:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipAddress: ${basic.selfLink}\n backendService: ${externalRegionBackendService.selfLink}\n loadBalancingScheme: EXTERNAL\n sourceIpRanges:\n - 34.121.88.0/24\n - 35.187.239.137\n options:\n dependson:\n - ${externalForwardingRule}\n basic:\n type: gcp:compute:Address\n properties:\n region: us-central1\n externalRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n loadBalancingScheme: EXTERNAL\n externalForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n ipAddress: ${basic.selfLink}\n backendService: ${externalRegionBackendService.selfLink}\n loadBalancingScheme: EXTERNAL\n```\n{{% /example %}}\n{{% example %}}\n### Forwarding Rule Internallb Ipv6\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .ipVersion(\"IPV6\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Forwarding rule for Internal Load Balancing\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n ipVersion: IPV6\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n healthChecks:\n - ${hc.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${defaultNetwork.id}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nForwardingRule can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default projects/{{project}}/regions/{{region}}/forwardingRules/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/forwardingRule:ForwardingRule default {{name}}\n```\n\n ", "properties": { "allPorts": { "type": "boolean", @@ -117007,7 +117497,7 @@ } }, "gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Compute Network Edge Security Service Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.NetworkEdgeSecurityService(\"default\", {\n region: \"asia-southeast1\",\n description: \"My basic resource\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.NetworkEdgeSecurityService(\"default\",\n region=\"asia-southeast1\",\n description=\"My basic resource\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.NetworkEdgeSecurityService(\"default\", new()\n {\n Region = \"asia-southeast1\",\n Description = \"My basic resource\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetworkEdgeSecurityService(ctx, \"default\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\n\t\t\tDescription: pulumi.String(\"My basic resource\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new NetworkEdgeSecurityService(\"default\", NetworkEdgeSecurityServiceArgs.builder() \n .region(\"asia-southeast1\")\n .description(\"My basic resource\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:NetworkEdgeSecurityService\n properties:\n region: asia-southeast1\n description: My basic resource\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nNetworkEdgeSecurityService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default projects/{{project}}/regions/{{region}}/networkEdgeSecurityServices/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default {{name}}\n```\n\n ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Compute Network Edge Security Service Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.NetworkEdgeSecurityService(\"default\", {\n region: \"us-east1\",\n description: \"My basic resource\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.NetworkEdgeSecurityService(\"default\",\n region=\"us-east1\",\n description=\"My basic resource\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.NetworkEdgeSecurityService(\"default\", new()\n {\n Region = \"us-east1\",\n Description = \"My basic resource\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetworkEdgeSecurityService(ctx, \"default\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDescription: pulumi.String(\"My basic resource\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new NetworkEdgeSecurityService(\"default\", NetworkEdgeSecurityServiceArgs.builder() \n .region(\"us-east1\")\n .description(\"My basic resource\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:NetworkEdgeSecurityService\n properties:\n region: us-east1\n description: My basic resource\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nNetworkEdgeSecurityService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default projects/{{project}}/regions/{{region}}/networkEdgeSecurityServices/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/networkEdgeSecurityService:NetworkEdgeSecurityService default {{name}}\n```\n\n ", "properties": { "creationTimestamp": { "type": "string", @@ -122390,7 +122880,7 @@ } }, "gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup": { - "description": "A regional NEG that can support Serverless Products.\n\nTo get more information about RegionNetworkEndpointGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Region Network Endpoint Group Functions\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst archive = new gcp.storage.BucketObject(\"archive\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n});\nconst functionNegFunction = new gcp.cloudfunctions.Function(\"functionNegFunction\", {\n description: \"My function\",\n runtime: \"nodejs10\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: archive.name,\n triggerHttp: true,\n timeout: 60,\n entryPoint: \"helloGET\",\n});\n// Cloud Functions Example\nconst functionNegRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\", {\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudFunction: {\n \"function\": functionNegFunction.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\narchive = gcp.storage.BucketObject(\"archive\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"))\nfunction_neg_function = gcp.cloudfunctions.Function(\"functionNegFunction\",\n description=\"My function\",\n runtime=\"nodejs10\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=archive.name,\n trigger_http=True,\n timeout=60,\n entry_point=\"helloGET\")\n# Cloud Functions Example\nfunction_neg_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_function=gcp.compute.RegionNetworkEndpointGroupCloudFunctionArgs(\n function=function_neg_function.name,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var archive = new Gcp.Storage.BucketObject(\"archive\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n });\n\n var functionNegFunction = new Gcp.CloudFunctions.Function(\"functionNegFunction\", new()\n {\n Description = \"My function\",\n Runtime = \"nodejs10\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = archive.Name,\n TriggerHttp = true,\n Timeout = 60,\n EntryPoint = \"helloGET\",\n });\n\n // Cloud Functions Example\n var functionNegRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\", new()\n {\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudFunction = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudFunctionArgs\n {\n Function = functionNegFunction.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tarchive, err := storage.NewBucketObject(ctx, \"archive\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunctionNegFunction, err := cloudfunctions.NewFunction(ctx, \"functionNegFunction\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tDescription: pulumi.String(\"My function\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: archive.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tTimeout: pulumi.Int(60),\n\t\t\tEntryPoint: pulumi.String(\"helloGET\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"functionNegRegionNetworkEndpointGroup\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudFunction: \u0026compute.RegionNetworkEndpointGroupCloudFunctionArgs{\n\t\t\t\tFunction: functionNegFunction.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctions.Function;\nimport com.pulumi.gcp.cloudfunctions.FunctionArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudFunctionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var archive = new BucketObject(\"archive\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build());\n\n var functionNegFunction = new Function(\"functionNegFunction\", FunctionArgs.builder() \n .description(\"My function\")\n .runtime(\"nodejs10\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(archive.name())\n .triggerHttp(true)\n .timeout(60)\n .entryPoint(\"helloGET\")\n .build());\n\n var functionNegRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudFunction(RegionNetworkEndpointGroupCloudFunctionArgs.builder()\n .function(functionNegFunction.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Functions Example\n functionNegRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudFunction:\n function: ${functionNegFunction.name}\n functionNegFunction:\n type: gcp:cloudfunctions:Function\n properties:\n description: My function\n runtime: nodejs10\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${archive.name}\n triggerHttp: true\n timeout: 60\n entryPoint: helloGET\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n archive:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: path/to/index.zip\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Cloudrun\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudrunNegService = new gcp.cloudrun.Service(\"cloudrunNegService\", {\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n// Cloud Run Example\nconst cloudrunNegRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\", {\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudRun: {\n service: cloudrunNegService.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloudrun_neg_service = gcp.cloudrun.Service(\"cloudrunNegService\",\n location=\"us-central1\",\n template=gcp.cloudrun.ServiceTemplateArgs(\n spec=gcp.cloudrun.ServiceTemplateSpecArgs(\n containers=[gcp.cloudrun.ServiceTemplateSpecContainerArgs(\n image=\"us-docker.pkg.dev/cloudrun/container/hello\",\n )],\n ),\n ),\n traffics=[gcp.cloudrun.ServiceTrafficArgs(\n percent=100,\n latest_revision=True,\n )])\n# Cloud Run Example\ncloudrun_neg_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_run=gcp.compute.RegionNetworkEndpointGroupCloudRunArgs(\n service=cloudrun_neg_service.name,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudrunNegService = new Gcp.CloudRun.Service(\"cloudrunNegService\", new()\n {\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n // Cloud Run Example\n var cloudrunNegRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\", new()\n {\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudRun = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudRunArgs\n {\n Service = cloudrunNegService.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudrunNegService, err := cloudrun.NewService(ctx, \"cloudrunNegService\", \u0026cloudrun.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"cloudrunNegRegionNetworkEndpointGroup\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudRun: \u0026compute.RegionNetworkEndpointGroupCloudRunArgs{\n\t\t\t\tService: cloudrunNegService.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudRunArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudrunNegService = new Service(\"cloudrunNegService\", ServiceArgs.builder() \n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var cloudrunNegRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudRun(RegionNetworkEndpointGroupCloudRunArgs.builder()\n .service(cloudrunNegService.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Run Example\n cloudrunNegRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudRun:\n service: ${cloudrunNegService.name}\n cloudrunNegService:\n type: gcp:cloudrun:Service\n properties:\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Appengine\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appengineNegBucket = new gcp.storage.Bucket(\"appengineNegBucket\", {location: \"US\"});\nconst appengineNegBucketObject = new gcp.storage.BucketObject(\"appengineNegBucketObject\", {\n bucket: appengineNegBucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", {\n versionId: \"v1\",\n service: \"appengine-network-endpoint-group\",\n runtime: \"nodejs\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}`,\n },\n },\n livenessCheck: {\n path: \"/\",\n },\n readinessCheck: {\n path: \"/\",\n },\n envVariables: {\n port: \"8080\",\n },\n handlers: [{\n urlRegex: \".*\\\\/my-path\\\\/*\",\n securityLevel: \"SECURE_ALWAYS\",\n login: \"LOGIN_REQUIRED\",\n authFailAction: \"AUTH_FAIL_ACTION_REDIRECT\",\n staticFiles: {\n path: \"my-other-path\",\n uploadPathRegex: \".*\\\\/my-path\\\\/*\",\n },\n }],\n automaticScaling: {\n coolDownPeriod: \"120s\",\n cpuUtilization: {\n targetUtilization: 0.5,\n },\n },\n deleteServiceOnDestroy: true,\n});\n// App Engine Example\nconst appengineNegRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\", {\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {\n service: appengineNegFlexibleAppVersion.service,\n version: appengineNegFlexibleAppVersion.versionId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappengine_neg_bucket = gcp.storage.Bucket(\"appengineNegBucket\", location=\"US\")\nappengine_neg_bucket_object = gcp.storage.BucketObject(\"appengineNegBucketObject\",\n bucket=appengine_neg_bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\nappengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion(\"appengineNegFlexibleAppVersion\",\n version_id=\"v1\",\n service=\"appengine-network-endpoint-group\",\n runtime=\"nodejs\",\n entrypoint=gcp.appengine.FlexibleAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.FlexibleAppVersionDeploymentArgs(\n zip=gcp.appengine.FlexibleAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(appengine_neg_bucket.name, appengine_neg_bucket_object.name).apply(lambda appengineNegBucketName, appengineNegBucketObjectName: f\"https://storage.googleapis.com/{appengine_neg_bucket_name}/{appengine_neg_bucket_object_name}\"),\n ),\n ),\n liveness_check=gcp.appengine.FlexibleAppVersionLivenessCheckArgs(\n path=\"/\",\n ),\n readiness_check=gcp.appengine.FlexibleAppVersionReadinessCheckArgs(\n path=\"/\",\n ),\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[gcp.appengine.FlexibleAppVersionHandlerArgs(\n url_regex=\".*\\\\/my-path\\\\/*\",\n security_level=\"SECURE_ALWAYS\",\n login=\"LOGIN_REQUIRED\",\n auth_fail_action=\"AUTH_FAIL_ACTION_REDIRECT\",\n static_files=gcp.appengine.FlexibleAppVersionHandlerStaticFilesArgs(\n path=\"my-other-path\",\n upload_path_regex=\".*\\\\/my-path\\\\/*\",\n ),\n )],\n automatic_scaling=gcp.appengine.FlexibleAppVersionAutomaticScalingArgs(\n cool_down_period=\"120s\",\n cpu_utilization=gcp.appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs(\n target_utilization=0.5,\n ),\n ),\n delete_service_on_destroy=True)\n# App Engine Example\nappengine_neg_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine=gcp.compute.RegionNetworkEndpointGroupAppEngineArgs(\n service=appengine_neg_flexible_app_version.service,\n version=appengine_neg_flexible_app_version.version_id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appengineNegBucket = new Gcp.Storage.Bucket(\"appengineNegBucket\", new()\n {\n Location = \"US\",\n });\n\n var appengineNegBucketObject = new Gcp.Storage.BucketObject(\"appengineNegBucketObject\", new()\n {\n Bucket = appengineNegBucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", new()\n {\n VersionId = \"v1\",\n Service = \"appengine-network-endpoint-group\",\n Runtime = \"nodejs\",\n Entrypoint = new Gcp.AppEngine.Inputs.FlexibleAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(appengineNegBucket.Name, appengineNegBucketObject.Name).Apply(values =\u003e\n {\n var appengineNegBucketName = values.Item1;\n var appengineNegBucketObjectName = values.Item2;\n return $\"https://storage.googleapis.com/{appengineNegBucketName}/{appengineNegBucketObjectName}\";\n }),\n },\n },\n LivenessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionLivenessCheckArgs\n {\n Path = \"/\",\n },\n ReadinessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionReadinessCheckArgs\n {\n Path = \"/\",\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n Handlers = new[]\n {\n new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerArgs\n {\n UrlRegex = \".*\\\\/my-path\\\\/*\",\n SecurityLevel = \"SECURE_ALWAYS\",\n Login = \"LOGIN_REQUIRED\",\n AuthFailAction = \"AUTH_FAIL_ACTION_REDIRECT\",\n StaticFiles = new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerStaticFilesArgs\n {\n Path = \"my-other-path\",\n UploadPathRegex = \".*\\\\/my-path\\\\/*\",\n },\n },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingArgs\n {\n CoolDownPeriod = \"120s\",\n CpuUtilization = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs\n {\n TargetUtilization = 0.5,\n },\n },\n DeleteServiceOnDestroy = true,\n });\n\n // App Engine Example\n var appengineNegRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\", new()\n {\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupAppEngineArgs\n {\n Service = appengineNegFlexibleAppVersion.Service,\n Version = appengineNegFlexibleAppVersion.VersionId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tappengineNegBucket, err := storage.NewBucket(ctx, \"appengineNegBucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegBucketObject, err := storage.NewBucketObject(ctx, \"appengineNegBucketObject\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: appengineNegBucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegFlexibleAppVersion, err := appengine.NewFlexibleAppVersion(ctx, \"appengineNegFlexibleAppVersion\", \u0026appengine.FlexibleAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"appengine-network-endpoint-group\"),\n\t\t\tRuntime: pulumi.String(\"nodejs\"),\n\t\t\tEntrypoint: \u0026appengine.FlexibleAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.FlexibleAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.FlexibleAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(appengineNegBucket.Name, appengineNegBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tappengineNegBucketName := _args[0].(string)\n\t\t\t\t\t\tappengineNegBucketObjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", appengineNegBucketName, appengineNegBucketObjectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLivenessCheck: \u0026appengine.FlexibleAppVersionLivenessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tReadinessCheck: \u0026appengine.FlexibleAppVersionReadinessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tHandlers: appengine.FlexibleAppVersionHandlerArray{\n\t\t\t\t\u0026appengine.FlexibleAppVersionHandlerArgs{\n\t\t\t\t\tUrlRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\tSecurityLevel: pulumi.String(\"SECURE_ALWAYS\"),\n\t\t\t\t\tLogin: pulumi.String(\"LOGIN_REQUIRED\"),\n\t\t\t\t\tAuthFailAction: pulumi.String(\"AUTH_FAIL_ACTION_REDIRECT\"),\n\t\t\t\t\tStaticFiles: \u0026appengine.FlexibleAppVersionHandlerStaticFilesArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"my-other-path\"),\n\t\t\t\t\t\tUploadPathRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.FlexibleAppVersionAutomaticScalingArgs{\n\t\t\t\tCoolDownPeriod: pulumi.String(\"120s\"),\n\t\t\t\tCpuUtilization: \u0026appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs{\n\t\t\t\t\tTargetUtilization: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"appengineNegRegionNetworkEndpointGroup\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: \u0026compute.RegionNetworkEndpointGroupAppEngineArgs{\n\t\t\t\tService: appengineNegFlexibleAppVersion.Service,\n\t\t\t\tVersion: appengineNegFlexibleAppVersion.VersionId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.FlexibleAppVersion;\nimport com.pulumi.gcp.appengine.FlexibleAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionLivenessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionReadinessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerStaticFilesArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appengineNegBucket = new Bucket(\"appengineNegBucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var appengineNegBucketObject = new BucketObject(\"appengineNegBucketObject\", BucketObjectArgs.builder() \n .bucket(appengineNegBucket.name())\n .source(new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\n .build());\n\n var appengineNegFlexibleAppVersion = new FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", FlexibleAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"appengine-network-endpoint-group\")\n .runtime(\"nodejs\")\n .entrypoint(FlexibleAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(FlexibleAppVersionDeploymentArgs.builder()\n .zip(FlexibleAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(appengineNegBucket.name(), appengineNegBucketObject.name()).applyValue(values -\u003e {\n var appengineNegBucketName = values.t1;\n var appengineNegBucketObjectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", appengineNegBucketName,appengineNegBucketObjectName);\n }))\n .build())\n .build())\n .livenessCheck(FlexibleAppVersionLivenessCheckArgs.builder()\n .path(\"/\")\n .build())\n .readinessCheck(FlexibleAppVersionReadinessCheckArgs.builder()\n .path(\"/\")\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .handlers(FlexibleAppVersionHandlerArgs.builder()\n .urlRegex(\".*\\\\/my-path\\\\/*\")\n .securityLevel(\"SECURE_ALWAYS\")\n .login(\"LOGIN_REQUIRED\")\n .authFailAction(\"AUTH_FAIL_ACTION_REDIRECT\")\n .staticFiles(FlexibleAppVersionHandlerStaticFilesArgs.builder()\n .path(\"my-other-path\")\n .uploadPathRegex(\".*\\\\/my-path\\\\/*\")\n .build())\n .build())\n .automaticScaling(FlexibleAppVersionAutomaticScalingArgs.builder()\n .coolDownPeriod(\"120s\")\n .cpuUtilization(FlexibleAppVersionAutomaticScalingCpuUtilizationArgs.builder()\n .targetUtilization(0.5)\n .build())\n .build())\n .deleteServiceOnDestroy(true)\n .build());\n\n var appengineNegRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine(RegionNetworkEndpointGroupAppEngineArgs.builder()\n .service(appengineNegFlexibleAppVersion.service())\n .version(appengineNegFlexibleAppVersion.versionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNegRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine:\n service: ${appengineNegFlexibleAppVersion.service}\n version: ${appengineNegFlexibleAppVersion.versionId}\n appengineNegFlexibleAppVersion:\n type: gcp:appengine:FlexibleAppVersion\n properties:\n versionId: v1\n service: appengine-network-endpoint-group\n runtime: nodejs\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}\n livenessCheck:\n path: /\n readinessCheck:\n path: /\n envVariables:\n port: '8080'\n handlers:\n - urlRegex: .*\\/my-path\\/*\n securityLevel: SECURE_ALWAYS\n login: LOGIN_REQUIRED\n authFailAction: AUTH_FAIL_ACTION_REDIRECT\n staticFiles:\n path: my-other-path\n uploadPathRegex: .*\\/my-path\\/*\n automaticScaling:\n coolDownPeriod: 120s\n cpuUtilization:\n targetUtilization: 0.5\n deleteServiceOnDestroy: true\n appengineNegBucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n appengineNegBucketObject:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${appengineNegBucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Psc\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"pscNeg\", {\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: \"asia-northeast3-cloudkms.googleapis.com\",\n region: \"asia-northeast3\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"pscNeg\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=\"asia-northeast3-cloudkms.googleapis.com\",\n region=\"asia-northeast3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"pscNeg\", new()\n {\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = \"asia-northeast3-cloudkms.googleapis.com\",\n Region = \"asia-northeast3\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionNetworkEndpointGroup(ctx, \"pscNeg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(\"asia-northeast3-cloudkms.googleapis.com\"),\n\t\t\tRegion: pulumi.String(\"asia-northeast3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(\"asia-northeast3-cloudkms.googleapis.com\")\n .region(\"asia-northeast3\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: asia-northeast3-cloudkms.googleapis.com\n region: asia-northeast3\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Psc Service Attachment\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\");\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"europe-west4\")\n .network(defaultNetwork.id())\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"europe-west4\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"europe-west4\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"europe-west4\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var defaultServiceAttachment = new ServiceAttachment(\"defaultServiceAttachment\", ServiceAttachmentArgs.builder() \n .region(\"europe-west4\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(false)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscSubnetwork.selfLink())\n .targetService(defaultForwardingRule.selfLink())\n .build());\n\n var pscNegServiceAttachment = new RegionNetworkEndpointGroup(\"pscNegServiceAttachment\", RegionNetworkEndpointGroupArgs.builder() \n .region(\"europe-west4\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(defaultServiceAttachment.selfLink())\n .network(defaultNetwork.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNetwork:\n type: gcp:compute:Network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: europe-west4\n network: ${defaultNetwork.id}\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.0.0/16\n region: europe-west4\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${defaultNetwork.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: europe-west4\n healthChecks:\n - ${defaultHealthCheck.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: europe-west4\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n defaultServiceAttachment:\n type: gcp:compute:ServiceAttachment\n properties:\n region: europe-west4\n description: A service attachment configured with Terraform\n enableProxyProtocol: false\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscSubnetwork.selfLink}\n targetService: ${defaultForwardingRule.selfLink}\n pscNegServiceAttachment:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n region: europe-west4\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${defaultServiceAttachment.selfLink}\n network: ${defaultNetwork.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nRegionNetworkEndpointGroup can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{name}}\n```\n\n ", + "description": "A regional NEG that can support Serverless Products.\n\nTo get more information about RegionNetworkEndpointGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Region Network Endpoint Group Functions\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst archive = new gcp.storage.BucketObject(\"archive\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n});\nconst functionNegFunction = new gcp.cloudfunctions.Function(\"functionNegFunction\", {\n description: \"My function\",\n runtime: \"nodejs10\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: archive.name,\n triggerHttp: true,\n timeout: 60,\n entryPoint: \"helloGET\",\n});\n// Cloud Functions Example\nconst functionNegRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\", {\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudFunction: {\n \"function\": functionNegFunction.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\narchive = gcp.storage.BucketObject(\"archive\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"))\nfunction_neg_function = gcp.cloudfunctions.Function(\"functionNegFunction\",\n description=\"My function\",\n runtime=\"nodejs10\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=archive.name,\n trigger_http=True,\n timeout=60,\n entry_point=\"helloGET\")\n# Cloud Functions Example\nfunction_neg_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_function=gcp.compute.RegionNetworkEndpointGroupCloudFunctionArgs(\n function=function_neg_function.name,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var archive = new Gcp.Storage.BucketObject(\"archive\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n });\n\n var functionNegFunction = new Gcp.CloudFunctions.Function(\"functionNegFunction\", new()\n {\n Description = \"My function\",\n Runtime = \"nodejs10\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = archive.Name,\n TriggerHttp = true,\n Timeout = 60,\n EntryPoint = \"helloGET\",\n });\n\n // Cloud Functions Example\n var functionNegRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\", new()\n {\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudFunction = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudFunctionArgs\n {\n Function = functionNegFunction.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tarchive, err := storage.NewBucketObject(ctx, \"archive\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunctionNegFunction, err := cloudfunctions.NewFunction(ctx, \"functionNegFunction\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tDescription: pulumi.String(\"My function\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: archive.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tTimeout: pulumi.Int(60),\n\t\t\tEntryPoint: pulumi.String(\"helloGET\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"functionNegRegionNetworkEndpointGroup\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudFunction: \u0026compute.RegionNetworkEndpointGroupCloudFunctionArgs{\n\t\t\t\tFunction: functionNegFunction.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctions.Function;\nimport com.pulumi.gcp.cloudfunctions.FunctionArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudFunctionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var archive = new BucketObject(\"archive\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build());\n\n var functionNegFunction = new Function(\"functionNegFunction\", FunctionArgs.builder() \n .description(\"My function\")\n .runtime(\"nodejs10\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(archive.name())\n .triggerHttp(true)\n .timeout(60)\n .entryPoint(\"helloGET\")\n .build());\n\n var functionNegRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"functionNegRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudFunction(RegionNetworkEndpointGroupCloudFunctionArgs.builder()\n .function(functionNegFunction.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Functions Example\n functionNegRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudFunction:\n function: ${functionNegFunction.name}\n functionNegFunction:\n type: gcp:cloudfunctions:Function\n properties:\n description: My function\n runtime: nodejs10\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${archive.name}\n triggerHttp: true\n timeout: 60\n entryPoint: helloGET\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n archive:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: path/to/index.zip\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Cloudrun\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudrunNegService = new gcp.cloudrun.Service(\"cloudrunNegService\", {\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n// Cloud Run Example\nconst cloudrunNegRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\", {\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudRun: {\n service: cloudrunNegService.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloudrun_neg_service = gcp.cloudrun.Service(\"cloudrunNegService\",\n location=\"us-central1\",\n template=gcp.cloudrun.ServiceTemplateArgs(\n spec=gcp.cloudrun.ServiceTemplateSpecArgs(\n containers=[gcp.cloudrun.ServiceTemplateSpecContainerArgs(\n image=\"us-docker.pkg.dev/cloudrun/container/hello\",\n )],\n ),\n ),\n traffics=[gcp.cloudrun.ServiceTrafficArgs(\n percent=100,\n latest_revision=True,\n )])\n# Cloud Run Example\ncloudrun_neg_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_run=gcp.compute.RegionNetworkEndpointGroupCloudRunArgs(\n service=cloudrun_neg_service.name,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudrunNegService = new Gcp.CloudRun.Service(\"cloudrunNegService\", new()\n {\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n // Cloud Run Example\n var cloudrunNegRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\", new()\n {\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudRun = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudRunArgs\n {\n Service = cloudrunNegService.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudrunNegService, err := cloudrun.NewService(ctx, \"cloudrunNegService\", \u0026cloudrun.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"cloudrunNegRegionNetworkEndpointGroup\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudRun: \u0026compute.RegionNetworkEndpointGroupCloudRunArgs{\n\t\t\t\tService: cloudrunNegService.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudRunArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudrunNegService = new Service(\"cloudrunNegService\", ServiceArgs.builder() \n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var cloudrunNegRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"cloudrunNegRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudRun(RegionNetworkEndpointGroupCloudRunArgs.builder()\n .service(cloudrunNegService.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Run Example\n cloudrunNegRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudRun:\n service: ${cloudrunNegService.name}\n cloudrunNegService:\n type: gcp:cloudrun:Service\n properties:\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Appengine\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appengineNegBucket = new gcp.storage.Bucket(\"appengineNegBucket\", {location: \"US\"});\nconst appengineNegBucketObject = new gcp.storage.BucketObject(\"appengineNegBucketObject\", {\n bucket: appengineNegBucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", {\n versionId: \"v1\",\n service: \"appengine-network-endpoint-group\",\n runtime: \"nodejs\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}`,\n },\n },\n livenessCheck: {\n path: \"/\",\n },\n readinessCheck: {\n path: \"/\",\n },\n envVariables: {\n port: \"8080\",\n },\n handlers: [{\n urlRegex: \".*\\\\/my-path\\\\/*\",\n securityLevel: \"SECURE_ALWAYS\",\n login: \"LOGIN_REQUIRED\",\n authFailAction: \"AUTH_FAIL_ACTION_REDIRECT\",\n staticFiles: {\n path: \"my-other-path\",\n uploadPathRegex: \".*\\\\/my-path\\\\/*\",\n },\n }],\n automaticScaling: {\n coolDownPeriod: \"120s\",\n cpuUtilization: {\n targetUtilization: 0.5,\n },\n },\n deleteServiceOnDestroy: true,\n});\n// App Engine Example\nconst appengineNegRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\", {\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {\n service: appengineNegFlexibleAppVersion.service,\n version: appengineNegFlexibleAppVersion.versionId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappengine_neg_bucket = gcp.storage.Bucket(\"appengineNegBucket\", location=\"US\")\nappengine_neg_bucket_object = gcp.storage.BucketObject(\"appengineNegBucketObject\",\n bucket=appengine_neg_bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nappengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion(\"appengineNegFlexibleAppVersion\",\n version_id=\"v1\",\n service=\"appengine-network-endpoint-group\",\n runtime=\"nodejs\",\n entrypoint=gcp.appengine.FlexibleAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.FlexibleAppVersionDeploymentArgs(\n zip=gcp.appengine.FlexibleAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(appengine_neg_bucket.name, appengine_neg_bucket_object.name).apply(lambda appengineNegBucketName, appengineNegBucketObjectName: f\"https://storage.googleapis.com/{appengine_neg_bucket_name}/{appengine_neg_bucket_object_name}\"),\n ),\n ),\n liveness_check=gcp.appengine.FlexibleAppVersionLivenessCheckArgs(\n path=\"/\",\n ),\n readiness_check=gcp.appengine.FlexibleAppVersionReadinessCheckArgs(\n path=\"/\",\n ),\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[gcp.appengine.FlexibleAppVersionHandlerArgs(\n url_regex=\".*\\\\/my-path\\\\/*\",\n security_level=\"SECURE_ALWAYS\",\n login=\"LOGIN_REQUIRED\",\n auth_fail_action=\"AUTH_FAIL_ACTION_REDIRECT\",\n static_files=gcp.appengine.FlexibleAppVersionHandlerStaticFilesArgs(\n path=\"my-other-path\",\n upload_path_regex=\".*\\\\/my-path\\\\/*\",\n ),\n )],\n automatic_scaling=gcp.appengine.FlexibleAppVersionAutomaticScalingArgs(\n cool_down_period=\"120s\",\n cpu_utilization=gcp.appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs(\n target_utilization=0.5,\n ),\n ),\n delete_service_on_destroy=True)\n# App Engine Example\nappengine_neg_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine=gcp.compute.RegionNetworkEndpointGroupAppEngineArgs(\n service=appengine_neg_flexible_app_version.service,\n version=appengine_neg_flexible_app_version.version_id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appengineNegBucket = new Gcp.Storage.Bucket(\"appengineNegBucket\", new()\n {\n Location = \"US\",\n });\n\n var appengineNegBucketObject = new Gcp.Storage.BucketObject(\"appengineNegBucketObject\", new()\n {\n Bucket = appengineNegBucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", new()\n {\n VersionId = \"v1\",\n Service = \"appengine-network-endpoint-group\",\n Runtime = \"nodejs\",\n Entrypoint = new Gcp.AppEngine.Inputs.FlexibleAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(appengineNegBucket.Name, appengineNegBucketObject.Name).Apply(values =\u003e\n {\n var appengineNegBucketName = values.Item1;\n var appengineNegBucketObjectName = values.Item2;\n return $\"https://storage.googleapis.com/{appengineNegBucketName}/{appengineNegBucketObjectName}\";\n }),\n },\n },\n LivenessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionLivenessCheckArgs\n {\n Path = \"/\",\n },\n ReadinessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionReadinessCheckArgs\n {\n Path = \"/\",\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n Handlers = new[]\n {\n new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerArgs\n {\n UrlRegex = \".*\\\\/my-path\\\\/*\",\n SecurityLevel = \"SECURE_ALWAYS\",\n Login = \"LOGIN_REQUIRED\",\n AuthFailAction = \"AUTH_FAIL_ACTION_REDIRECT\",\n StaticFiles = new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerStaticFilesArgs\n {\n Path = \"my-other-path\",\n UploadPathRegex = \".*\\\\/my-path\\\\/*\",\n },\n },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingArgs\n {\n CoolDownPeriod = \"120s\",\n CpuUtilization = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs\n {\n TargetUtilization = 0.5,\n },\n },\n DeleteServiceOnDestroy = true,\n });\n\n // App Engine Example\n var appengineNegRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\", new()\n {\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupAppEngineArgs\n {\n Service = appengineNegFlexibleAppVersion.Service,\n Version = appengineNegFlexibleAppVersion.VersionId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tappengineNegBucket, err := storage.NewBucket(ctx, \"appengineNegBucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegBucketObject, err := storage.NewBucketObject(ctx, \"appengineNegBucketObject\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: appengineNegBucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegFlexibleAppVersion, err := appengine.NewFlexibleAppVersion(ctx, \"appengineNegFlexibleAppVersion\", \u0026appengine.FlexibleAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"appengine-network-endpoint-group\"),\n\t\t\tRuntime: pulumi.String(\"nodejs\"),\n\t\t\tEntrypoint: \u0026appengine.FlexibleAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.FlexibleAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.FlexibleAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(appengineNegBucket.Name, appengineNegBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tappengineNegBucketName := _args[0].(string)\n\t\t\t\t\t\tappengineNegBucketObjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", appengineNegBucketName, appengineNegBucketObjectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLivenessCheck: \u0026appengine.FlexibleAppVersionLivenessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tReadinessCheck: \u0026appengine.FlexibleAppVersionReadinessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tHandlers: appengine.FlexibleAppVersionHandlerArray{\n\t\t\t\t\u0026appengine.FlexibleAppVersionHandlerArgs{\n\t\t\t\t\tUrlRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\tSecurityLevel: pulumi.String(\"SECURE_ALWAYS\"),\n\t\t\t\t\tLogin: pulumi.String(\"LOGIN_REQUIRED\"),\n\t\t\t\t\tAuthFailAction: pulumi.String(\"AUTH_FAIL_ACTION_REDIRECT\"),\n\t\t\t\t\tStaticFiles: \u0026appengine.FlexibleAppVersionHandlerStaticFilesArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"my-other-path\"),\n\t\t\t\t\t\tUploadPathRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.FlexibleAppVersionAutomaticScalingArgs{\n\t\t\t\tCoolDownPeriod: pulumi.String(\"120s\"),\n\t\t\t\tCpuUtilization: \u0026appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs{\n\t\t\t\t\tTargetUtilization: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"appengineNegRegionNetworkEndpointGroup\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: \u0026compute.RegionNetworkEndpointGroupAppEngineArgs{\n\t\t\t\tService: appengineNegFlexibleAppVersion.Service,\n\t\t\t\tVersion: appengineNegFlexibleAppVersion.VersionId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.FlexibleAppVersion;\nimport com.pulumi.gcp.appengine.FlexibleAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionLivenessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionReadinessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerStaticFilesArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appengineNegBucket = new Bucket(\"appengineNegBucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var appengineNegBucketObject = new BucketObject(\"appengineNegBucketObject\", BucketObjectArgs.builder() \n .bucket(appengineNegBucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var appengineNegFlexibleAppVersion = new FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", FlexibleAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"appengine-network-endpoint-group\")\n .runtime(\"nodejs\")\n .entrypoint(FlexibleAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(FlexibleAppVersionDeploymentArgs.builder()\n .zip(FlexibleAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(appengineNegBucket.name(), appengineNegBucketObject.name()).applyValue(values -\u003e {\n var appengineNegBucketName = values.t1;\n var appengineNegBucketObjectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", appengineNegBucketName,appengineNegBucketObjectName);\n }))\n .build())\n .build())\n .livenessCheck(FlexibleAppVersionLivenessCheckArgs.builder()\n .path(\"/\")\n .build())\n .readinessCheck(FlexibleAppVersionReadinessCheckArgs.builder()\n .path(\"/\")\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .handlers(FlexibleAppVersionHandlerArgs.builder()\n .urlRegex(\".*\\\\/my-path\\\\/*\")\n .securityLevel(\"SECURE_ALWAYS\")\n .login(\"LOGIN_REQUIRED\")\n .authFailAction(\"AUTH_FAIL_ACTION_REDIRECT\")\n .staticFiles(FlexibleAppVersionHandlerStaticFilesArgs.builder()\n .path(\"my-other-path\")\n .uploadPathRegex(\".*\\\\/my-path\\\\/*\")\n .build())\n .build())\n .automaticScaling(FlexibleAppVersionAutomaticScalingArgs.builder()\n .coolDownPeriod(\"120s\")\n .cpuUtilization(FlexibleAppVersionAutomaticScalingCpuUtilizationArgs.builder()\n .targetUtilization(0.5)\n .build())\n .build())\n .deleteServiceOnDestroy(true)\n .build());\n\n var appengineNegRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"appengineNegRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine(RegionNetworkEndpointGroupAppEngineArgs.builder()\n .service(appengineNegFlexibleAppVersion.service())\n .version(appengineNegFlexibleAppVersion.versionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNegRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine:\n service: ${appengineNegFlexibleAppVersion.service}\n version: ${appengineNegFlexibleAppVersion.versionId}\n appengineNegFlexibleAppVersion:\n type: gcp:appengine:FlexibleAppVersion\n properties:\n versionId: v1\n service: appengine-network-endpoint-group\n runtime: nodejs\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}\n livenessCheck:\n path: /\n readinessCheck:\n path: /\n envVariables:\n port: '8080'\n handlers:\n - urlRegex: .*\\/my-path\\/*\n securityLevel: SECURE_ALWAYS\n login: LOGIN_REQUIRED\n authFailAction: AUTH_FAIL_ACTION_REDIRECT\n staticFiles:\n path: my-other-path\n uploadPathRegex: .*\\/my-path\\/*\n automaticScaling:\n coolDownPeriod: 120s\n cpuUtilization:\n targetUtilization: 0.5\n deleteServiceOnDestroy: true\n appengineNegBucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n appengineNegBucketObject:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${appengineNegBucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Psc\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"pscNeg\", {\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: \"asia-northeast3-cloudkms.googleapis.com\",\n region: \"asia-northeast3\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"pscNeg\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=\"asia-northeast3-cloudkms.googleapis.com\",\n region=\"asia-northeast3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"pscNeg\", new()\n {\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = \"asia-northeast3-cloudkms.googleapis.com\",\n Region = \"asia-northeast3\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionNetworkEndpointGroup(ctx, \"pscNeg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(\"asia-northeast3-cloudkms.googleapis.com\"),\n\t\t\tRegion: pulumi.String(\"asia-northeast3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder() \n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(\"asia-northeast3-cloudkms.googleapis.com\")\n .region(\"asia-northeast3\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: asia-northeast3-cloudkms.googleapis.com\n region: asia-northeast3\n```\n{{% /example %}}\n{{% example %}}\n### Region Network Endpoint Group Psc Service Attachment\n\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\");\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"europe-west4\")\n .network(defaultNetwork.id())\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"europe-west4\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(defaultNetwork.id())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder() \n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"europe-west4\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"europe-west4\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(defaultNetwork.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var defaultServiceAttachment = new ServiceAttachment(\"defaultServiceAttachment\", ServiceAttachmentArgs.builder() \n .region(\"europe-west4\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(false)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscSubnetwork.selfLink())\n .targetService(defaultForwardingRule.selfLink())\n .build());\n\n var pscNegServiceAttachment = new RegionNetworkEndpointGroup(\"pscNegServiceAttachment\", RegionNetworkEndpointGroupArgs.builder() \n .region(\"europe-west4\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(defaultServiceAttachment.selfLink())\n .network(defaultNetwork.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultNetwork:\n type: gcp:compute:Network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/16\n region: europe-west4\n network: ${defaultNetwork.id}\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.1.0.0/16\n region: europe-west4\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${defaultNetwork.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n properties:\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: europe-west4\n healthChecks:\n - ${defaultHealthCheck.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: europe-west4\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${defaultNetwork.name}\n subnetwork: ${defaultSubnetwork.name}\n defaultServiceAttachment:\n type: gcp:compute:ServiceAttachment\n properties:\n region: europe-west4\n description: A service attachment configured with Terraform\n enableProxyProtocol: false\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscSubnetwork.selfLink}\n targetService: ${defaultForwardingRule.selfLink}\n pscNegServiceAttachment:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n region: europe-west4\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${defaultServiceAttachment.selfLink}\n network: ${defaultNetwork.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nRegionNetworkEndpointGroup can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{name}}\n```\n\n ", "properties": { "appEngine": { "$ref": "#/types/gcp:compute/RegionNetworkEndpointGroupAppEngine:RegionNetworkEndpointGroupAppEngine", @@ -123172,7 +123662,7 @@ } }, "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Region Security Policy Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst region_sec_policy_basic = new gcp.compute.RegionSecurityPolicy(\"region-sec-policy-basic\", {\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_basic = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-basic\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var region_sec_policy_basic = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-basic\", new()\n {\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"region-sec-policy-basic\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var region_sec_policy_basic = new RegionSecurityPolicy(\"region-sec-policy-basic\", RegionSecurityPolicyArgs.builder() \n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-basic:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n description: basic region security policy\n type: CLOUD_ARMOR\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Region Security Policy With Ddos Protection Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst region_sec_policy_ddos_protection = new gcp.compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", {\n description: \"with ddos protection config\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_ddos_protection = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\",\n description=\"with ddos protection config\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config=gcp.compute.RegionSecurityPolicyDdosProtectionConfigArgs(\n ddos_protection=\"ADVANCED_PREVIEW\",\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var region_sec_policy_ddos_protection = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", new()\n {\n Description = \"with ddos protection config\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"region-sec-policy-ddos-protection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tDescription: pulumi.String(\"with ddos protection config\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var region_sec_policy_ddos_protection = new RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", RegionSecurityPolicyArgs.builder() \n .description(\"with ddos protection config\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-ddos-protection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n description: with ddos protection config\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nRegionSecurityPolicy can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default projects/{{project}}/regions/{{region}}/securityPolicies/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{name}}\n```\n\n ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Region Security Policy Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst region_sec_policy_basic = new gcp.compute.RegionSecurityPolicy(\"region-sec-policy-basic\", {\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_basic = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-basic\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var region_sec_policy_basic = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-basic\", new()\n {\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"region-sec-policy-basic\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var region_sec_policy_basic = new RegionSecurityPolicy(\"region-sec-policy-basic\", RegionSecurityPolicyArgs.builder() \n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-basic:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n description: basic region security policy\n type: CLOUD_ARMOR\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Region Security Policy With Ddos Protection Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst region_sec_policy_ddos_protection = new gcp.compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", {\n description: \"with ddos protection config\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_ddos_protection = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\",\n description=\"with ddos protection config\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config=gcp.compute.RegionSecurityPolicyDdosProtectionConfigArgs(\n ddos_protection=\"ADVANCED_PREVIEW\",\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var region_sec_policy_ddos_protection = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", new()\n {\n Description = \"with ddos protection config\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"region-sec-policy-ddos-protection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tDescription: pulumi.String(\"with ddos protection config\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var region_sec_policy_ddos_protection = new RegionSecurityPolicy(\"region-sec-policy-ddos-protection\", RegionSecurityPolicyArgs.builder() \n .description(\"with ddos protection config\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-ddos-protection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n description: with ddos protection config\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Region Security Policy With User Defined Fields\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst region_sec_policy_user_defined_fields = new gcp.compute.RegionSecurityPolicy(\"region-sec-policy-user-defined-fields\", {\n description: \"with user defined fields\",\n type: \"CLOUD_ARMOR_NETWORK\",\n userDefinedFields: [\n {\n name: \"SIG1_AT_0\",\n base: \"UDP\",\n offset: 8,\n size: 2,\n mask: \"0x8F00\",\n },\n {\n name: \"SIG2_AT_8\",\n base: \"UDP\",\n offset: 16,\n size: 4,\n mask: \"0xFFFFFFFF\",\n },\n ],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregion_sec_policy_user_defined_fields = gcp.compute.RegionSecurityPolicy(\"region-sec-policy-user-defined-fields\",\n description=\"with user defined fields\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[\n gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs(\n name=\"SIG1_AT_0\",\n base=\"UDP\",\n offset=8,\n size=2,\n mask=\"0x8F00\",\n ),\n gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs(\n name=\"SIG2_AT_8\",\n base=\"UDP\",\n offset=16,\n size=4,\n mask=\"0xFFFFFFFF\",\n ),\n ],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var region_sec_policy_user_defined_fields = new Gcp.Compute.RegionSecurityPolicy(\"region-sec-policy-user-defined-fields\", new()\n {\n Description = \"with user defined fields\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Base = \"UDP\",\n Offset = 8,\n Size = 2,\n Mask = \"0x8F00\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs\n {\n Name = \"SIG2_AT_8\",\n Base = \"UDP\",\n Offset = 16,\n Size = 4,\n Mask = \"0xFFFFFFFF\",\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"region-sec-policy-user-defined-fields\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tDescription: pulumi.String(\"with user defined fields\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tUserDefinedFields: compute.RegionSecurityPolicyUserDefinedFieldArray{\n\t\t\t\t\u0026compute.RegionSecurityPolicyUserDefinedFieldArgs{\n\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\tBase: pulumi.String(\"UDP\"),\n\t\t\t\t\tOffset: pulumi.Int(8),\n\t\t\t\t\tSize: pulumi.Int(2),\n\t\t\t\t\tMask: pulumi.String(\"0x8F00\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.RegionSecurityPolicyUserDefinedFieldArgs{\n\t\t\t\t\tName: pulumi.String(\"SIG2_AT_8\"),\n\t\t\t\t\tBase: pulumi.String(\"UDP\"),\n\t\t\t\t\tOffset: pulumi.Int(16),\n\t\t\t\t\tSize: pulumi.Int(4),\n\t\t\t\t\tMask: pulumi.String(\"0xFFFFFFFF\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var region_sec_policy_user_defined_fields = new RegionSecurityPolicy(\"region-sec-policy-user-defined-fields\", RegionSecurityPolicyArgs.builder() \n .description(\"with user defined fields\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .userDefinedFields( \n RegionSecurityPolicyUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .base(\"UDP\")\n .offset(8)\n .size(2)\n .mask(\"0x8F00\")\n .build(),\n RegionSecurityPolicyUserDefinedFieldArgs.builder()\n .name(\"SIG2_AT_8\")\n .base(\"UDP\")\n .offset(16)\n .size(4)\n .mask(\"0xFFFFFFFF\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-sec-policy-user-defined-fields:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n description: with user defined fields\n type: CLOUD_ARMOR_NETWORK\n userDefinedFields:\n - name: SIG1_AT_0\n base: UDP\n offset: 8\n size: 2\n mask: 0x8F00\n - name: SIG2_AT_8\n base: UDP\n offset: 16\n size: 4\n mask: 0xFFFFFFFF\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nRegionSecurityPolicy can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default projects/{{project}}/regions/{{region}}/securityPolicies/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicy:RegionSecurityPolicy default {{name}}\n```\n\n ", "properties": { "ddosProtectionConfig": { "$ref": "#/types/gcp:compute/RegionSecurityPolicyDdosProtectionConfig:RegionSecurityPolicyDdosProtectionConfig", @@ -123213,6 +123703,13 @@ "type": { "type": "string", "description": "The type indicates the intended use of the security policy.\n- CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers.\n- CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache.\n- CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application.\nThis field can be set only at resource creation time.\nPossible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`.\n" + }, + "userDefinedFields": { + "type": "array", + "items": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyUserDefinedField:RegionSecurityPolicyUserDefinedField" + }, + "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies.\nA user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits.\nRules may then specify matching values for these fields.\nStructure is documented below.\n" } }, "required": [ @@ -123252,6 +123749,13 @@ "type": "string", "description": "The type indicates the intended use of the security policy.\n- CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers.\n- CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache.\n- CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application.\nThis field can be set only at resource creation time.\nPossible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`.\n", "willReplaceOnChanges": true + }, + "userDefinedFields": { + "type": "array", + "items": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyUserDefinedField:RegionSecurityPolicyUserDefinedField" + }, + "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies.\nA user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits.\nRules may then specify matching values for these fields.\nStructure is documented below.\n" } }, "stateInputs": { @@ -123300,6 +123804,155 @@ "type": "string", "description": "The type indicates the intended use of the security policy.\n- CLOUD_ARMOR: Cloud Armor backend security policies can be configured to filter incoming HTTP requests targeting backend services. They filter requests before they hit the origin servers.\n- CLOUD_ARMOR_EDGE: Cloud Armor edge security policies can be configured to filter incoming HTTP requests targeting backend services (including Cloud CDN-enabled) as well as backend buckets (Cloud Storage). They filter requests before the request is served from Google's cache.\n- CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application.\nThis field can be set only at resource creation time.\nPossible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`.\n", "willReplaceOnChanges": true + }, + "userDefinedFields": { + "type": "array", + "items": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyUserDefinedField:RegionSecurityPolicyUserDefinedField" + }, + "description": "Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies.\nA user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits.\nRules may then specify matching values for these fields.\nStructure is documented below.\n" + } + }, + "type": "object" + } + }, + "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": { + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Region Security Policy Rule Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n}, {\n provider: google_beta,\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policyRule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\",\n opts=pulumi.ResourceOptions(provider=google_beta))\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policyRule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match=gcp.compute.RegionSecurityPolicyRuleMatchArgs(\n versioned_expr=\"SRC_IPS_V1\",\n config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs(\n src_ip_ranges=[\"10.10.0.0/16\"],\n ),\n ),\n action=\"allow\",\n preview=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policyRule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policyRule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder() \n .region(\"us-west2\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder() \n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n description: basic region security policy\n type: CLOUD_ARMOR\n options:\n provider: ${[\"google-beta\"]}\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Region Security Policy Rule Multiple Rules\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n}, {\n provider: google_beta,\n});\nconst policyRuleOne = new gcp.compute.RegionSecurityPolicyRule(\"policyRuleOne\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule one\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n}, {\n provider: google_beta,\n});\nconst policyRuleTwo = new gcp.compute.RegionSecurityPolicyRule(\"policyRuleTwo\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule two\",\n priority: 101,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action: \"allow\",\n preview: true,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\",\n opts=pulumi.ResourceOptions(provider=google_beta))\npolicy_rule_one = gcp.compute.RegionSecurityPolicyRule(\"policyRuleOne\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match=gcp.compute.RegionSecurityPolicyRuleMatchArgs(\n versioned_expr=\"SRC_IPS_V1\",\n config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs(\n src_ip_ranges=[\"10.10.0.0/16\"],\n ),\n ),\n action=\"allow\",\n preview=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\npolicy_rule_two = gcp.compute.RegionSecurityPolicyRule(\"policyRuleTwo\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match=gcp.compute.RegionSecurityPolicyRuleMatchArgs(\n versioned_expr=\"SRC_IPS_V1\",\n config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs(\n src_ip_ranges=[\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n ),\n ),\n action=\"allow\",\n preview=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var policyRuleOne = new Gcp.Compute.RegionSecurityPolicyRule(\"policyRuleOne\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var policyRuleTwo = new Gcp.Compute.RegionSecurityPolicyRule(\"policyRuleTwo\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policyRuleOne\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule one\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policyRuleTwo\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule two\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder() \n .region(\"us-west2\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var policyRuleOne = new RegionSecurityPolicyRule(\"policyRuleOne\", RegionSecurityPolicyRuleArgs.builder() \n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var policyRuleTwo = new RegionSecurityPolicyRule(\"policyRuleTwo\", RegionSecurityPolicyRuleArgs.builder() \n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n description: basic region security policy\n type: CLOUD_ARMOR\n options:\n provider: ${[\"google-beta\"]}\n policyRuleOne:\n type: gcp:compute:RegionSecurityPolicyRule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule one\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n options:\n provider: ${[\"google-beta\"]}\n policyRuleTwo:\n type: gcp:compute:RegionSecurityPolicyRule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule two\n priority: 101\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n action: allow\n preview: true\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Region Security Policy Rule With Network Match\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// First activate advanced network DDoS protection for the desired region\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"us-west2\",\n description: \"policy for activating network DDoS protection for the desired region\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n}, {\n provider: google_beta,\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edgeSecService\", {\n region: \"us-west2\",\n description: \"linking policy to edge security service\",\n securityPolicy: policyddosprotection.selfLink,\n}, {\n provider: google_beta,\n});\n// Add the desired policy and custom rule.\nconst policynetworkmatch = new gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\", {\n region: \"us-west2\",\n description: \"region security policy for network match\",\n type: \"CLOUD_ARMOR_NETWORK\",\n userDefinedFields: [{\n name: \"SIG1_AT_0\",\n base: \"TCP\",\n offset: 8,\n size: 2,\n mask: \"0x8F00\",\n }],\n}, {\n provider: google_beta,\n dependsOn: [edgeSecService],\n});\nconst policyRuleNetworkMatch = new gcp.compute.RegionSecurityPolicyRule(\"policyRuleNetworkMatch\", {\n region: \"us-west2\",\n securityPolicy: policynetworkmatch.name,\n description: \"custom rule for network match\",\n priority: 100,\n networkMatch: {\n srcIpRanges: [\"10.10.0.0/16\"],\n userDefinedFields: [{\n name: \"SIG1_AT_0\",\n values: [\"0x8F00\"],\n }],\n },\n action: \"allow\",\n preview: true,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# First activate advanced network DDoS protection for the desired region\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"us-west2\",\n description=\"policy for activating network DDoS protection for the desired region\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config=gcp.compute.RegionSecurityPolicyDdosProtectionConfigArgs(\n ddos_protection=\"ADVANCED_PREVIEW\",\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edgeSecService\",\n region=\"us-west2\",\n description=\"linking policy to edge security service\",\n security_policy=policyddosprotection.self_link,\n opts=pulumi.ResourceOptions(provider=google_beta))\n# Add the desired policy and custom rule.\npolicynetworkmatch = gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\",\n region=\"us-west2\",\n description=\"region security policy for network match\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs(\n name=\"SIG1_AT_0\",\n base=\"TCP\",\n offset=8,\n size=2,\n mask=\"0x8F00\",\n )],\n opts=pulumi.ResourceOptions(provider=google_beta,\n depends_on=[edge_sec_service]))\npolicy_rule_network_match = gcp.compute.RegionSecurityPolicyRule(\"policyRuleNetworkMatch\",\n region=\"us-west2\",\n security_policy=policynetworkmatch.name,\n description=\"custom rule for network match\",\n priority=100,\n network_match=gcp.compute.RegionSecurityPolicyRuleNetworkMatchArgs(\n src_ip_ranges=[\"10.10.0.0/16\"],\n user_defined_fields=[gcp.compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs(\n name=\"SIG1_AT_0\",\n values=[\"0x8F00\"],\n )],\n ),\n action=\"allow\",\n preview=True,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"us-west2\",\n Description = \"policy for activating network DDoS protection for the desired region\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edgeSecService\", new()\n {\n Region = \"us-west2\",\n Description = \"linking policy to edge security service\",\n SecurityPolicy = policyddosprotection.SelfLink,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new Gcp.Compute.RegionSecurityPolicy(\"policynetworkmatch\", new()\n {\n Region = \"us-west2\",\n Description = \"region security policy for network match\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Base = \"TCP\",\n Offset = 8,\n Size = 2,\n Mask = \"0x8F00\",\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n DependsOn = new[]\n {\n edgeSecService,\n },\n });\n\n var policyRuleNetworkMatch = new Gcp.Compute.RegionSecurityPolicyRule(\"policyRuleNetworkMatch\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = policynetworkmatch.Name,\n Description = \"custom rule for network match\",\n Priority = 100,\n NetworkMatch = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Values = new[]\n {\n \"0x8F00\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"policy for activating network DDoS protection for the desired region\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edgeSecService\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"linking policy to edge security service\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicynetworkmatch, err := compute.NewRegionSecurityPolicy(ctx, \"policynetworkmatch\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tDescription: pulumi.String(\"region security policy for network match\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tUserDefinedFields: compute.RegionSecurityPolicyUserDefinedFieldArray{\n\t\t\t\t\u0026compute.RegionSecurityPolicyUserDefinedFieldArgs{\n\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\tBase: pulumi.String(\"TCP\"),\n\t\t\t\t\tOffset: pulumi.Int(8),\n\t\t\t\t\tSize: pulumi.Int(2),\n\t\t\t\t\tMask: pulumi.String(\"0x8F00\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta), pulumi.DependsOn([]pulumi.Resource{\n\t\t\tedgeSecService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policyRuleNetworkMatch\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: policynetworkmatch.Name,\n\t\t\tDescription: pulumi.String(\"custom rule for network match\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tNetworkMatch: \u0026compute.RegionSecurityPolicyRuleNetworkMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUserDefinedFields: compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{\n\t\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0x8F00\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder() \n .region(\"us-west2\")\n .description(\"policy for activating network DDoS protection for the desired region\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder() \n .region(\"us-west2\")\n .description(\"linking policy to edge security service\")\n .securityPolicy(policyddosprotection.selfLink())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var policynetworkmatch = new RegionSecurityPolicy(\"policynetworkmatch\", RegionSecurityPolicyArgs.builder() \n .region(\"us-west2\")\n .description(\"region security policy for network match\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .userDefinedFields(RegionSecurityPolicyUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .base(\"TCP\")\n .offset(8)\n .size(2)\n .mask(\"0x8F00\")\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .dependsOn(edgeSecService)\n .build());\n\n var policyRuleNetworkMatch = new RegionSecurityPolicyRule(\"policyRuleNetworkMatch\", RegionSecurityPolicyRuleArgs.builder() \n .region(\"us-west2\")\n .securityPolicy(policynetworkmatch.name())\n .description(\"custom rule for network match\")\n .priority(100)\n .networkMatch(RegionSecurityPolicyRuleNetworkMatchArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .userDefinedFields(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .values(\"0x8F00\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # First activate advanced network DDoS protection for the desired region\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n description: policy for activating network DDoS protection for the desired region\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n options:\n provider: ${[\"google-beta\"]}\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n properties:\n region: us-west2\n description: linking policy to edge security service\n securityPolicy: ${policyddosprotection.selfLink}\n options:\n provider: ${[\"google-beta\"]}\n # Add the desired policy and custom rule.\n policynetworkmatch:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n description: region security policy for network match\n type: CLOUD_ARMOR_NETWORK\n userDefinedFields:\n - name: SIG1_AT_0\n base: TCP\n offset: 8\n size: 2\n mask: 0x8F00\n options:\n provider: ${[\"google-beta\"]}\n dependson:\n - ${edgeSecService}\n policyRuleNetworkMatch:\n type: gcp:compute:RegionSecurityPolicyRule\n properties:\n region: us-west2\n securityPolicy: ${policynetworkmatch.name}\n description: custom rule for network match\n priority: 100\n networkMatch:\n srcIpRanges:\n - 10.10.0.0/16\n userDefinedFields:\n - name: SIG1_AT_0\n values:\n - 0x8F00\n action: allow\n preview: true\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nRegionSecurityPolicyRule can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n ", + "properties": { + "action": { + "type": "string", + "description": "The Action to perform when the rule is matched. The following are the valid actions:\n* allow: allow access to target.\n* deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502.\n* rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set.\n* redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR.\n* throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this.\n" + }, + "description": { + "type": "string", + "description": "An optional description of this resource. Provide this property when you create the resource.\n" + }, + "match": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch", + "description": "A match condition that incoming traffic is evaluated against.\nIf it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n" + }, + "networkMatch": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch", + "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced.\nThe match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields').\nField values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds.\nEach match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all.\nFor a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet.\nExample:\nnetworkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\"\nThe above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive\nStructure is documented below.\n" + }, + "preview": { + "type": "boolean", + "description": "If set to true, the specified action is not enforced.\n" + }, + "priority": { + "type": "integer", + "description": "An integer indicating the priority of a rule in the list.\nThe priority must be a positive value between 0 and 2147483647.\nRules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority.\n" + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n" + }, + "region": { + "type": "string", + "description": "The Region in which the created Region Security Policy rule should reside.\n" + }, + "securityPolicy": { + "type": "string", + "description": "The name of the security policy this rule belongs to.\n\n\n- - -\n" + } + }, + "required": [ + "action", + "priority", + "project", + "region", + "securityPolicy" + ], + "inputProperties": { + "action": { + "type": "string", + "description": "The Action to perform when the rule is matched. The following are the valid actions:\n* allow: allow access to target.\n* deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502.\n* rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set.\n* redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR.\n* throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this.\n" + }, + "description": { + "type": "string", + "description": "An optional description of this resource. Provide this property when you create the resource.\n" + }, + "match": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch", + "description": "A match condition that incoming traffic is evaluated against.\nIf it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n" + }, + "networkMatch": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch", + "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced.\nThe match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields').\nField values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds.\nEach match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all.\nFor a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet.\nExample:\nnetworkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\"\nThe above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive\nStructure is documented below.\n" + }, + "preview": { + "type": "boolean", + "description": "If set to true, the specified action is not enforced.\n" + }, + "priority": { + "type": "integer", + "description": "An integer indicating the priority of a rule in the list.\nThe priority must be a positive value between 0 and 2147483647.\nRules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority.\n", + "willReplaceOnChanges": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n", + "willReplaceOnChanges": true + }, + "region": { + "type": "string", + "description": "The Region in which the created Region Security Policy rule should reside.\n", + "willReplaceOnChanges": true + }, + "securityPolicy": { + "type": "string", + "description": "The name of the security policy this rule belongs to.\n\n\n- - -\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "action", + "priority", + "region", + "securityPolicy" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering RegionSecurityPolicyRule resources.\n", + "properties": { + "action": { + "type": "string", + "description": "The Action to perform when the rule is matched. The following are the valid actions:\n* allow: allow access to target.\n* deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502.\n* rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set.\n* redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR.\n* throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this.\n" + }, + "description": { + "type": "string", + "description": "An optional description of this resource. Provide this property when you create the resource.\n" + }, + "match": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch", + "description": "A match condition that incoming traffic is evaluated against.\nIf it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n" + }, + "networkMatch": { + "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch", + "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced.\nThe match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields').\nField values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds.\nEach match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all.\nFor a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet.\nExample:\nnetworkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \"ipv4_fragment_offset\" values: - \"1-0x1fff\"\nThe above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named \"ipv4_fragment_offset\" with a value between 1 and 0x1fff inclusive\nStructure is documented below.\n" + }, + "preview": { + "type": "boolean", + "description": "If set to true, the specified action is not enforced.\n" + }, + "priority": { + "type": "integer", + "description": "An integer indicating the priority of a rule in the list.\nThe priority must be a positive value between 0 and 2147483647.\nRules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority.\n", + "willReplaceOnChanges": true + }, + "project": { + "type": "string", + "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n", + "willReplaceOnChanges": true + }, + "region": { + "type": "string", + "description": "The Region in which the created Region Security Policy rule should reside.\n", + "willReplaceOnChanges": true + }, + "securityPolicy": { + "type": "string", + "description": "The name of the security policy this rule belongs to.\n\n\n- - -\n", + "willReplaceOnChanges": true } }, "type": "object" @@ -127168,7 +127821,7 @@ } }, "gcp:compute/subnetwork:Subnetwork": { - "description": "A VPC network is a virtual version of the traditional physical networks\nthat exist within and between physical data centers. A VPC network\nprovides connectivity for your Compute Engine virtual machine (VM)\ninstances, Container Engine containers, App Engine Flex services, and\nother network-related resources.\n\nEach GCP project contains one or more VPC networks. Each VPC network is a\nglobal entity spanning all GCP regions. This global VPC network allows VM\ninstances and other resources to communicate with each other via internal,\nprivate IP addresses.\n\nEach VPC network is subdivided into subnets, and each subnet is contained\nwithin a single region. You can have more than one subnet in a region for\na given VPC network. Each subnet has a contiguous private RFC1918 IP\nspace. You create instances, containers, and the like in these subnets.\nWhen you create an instance, you must create it in a subnet, and the\ninstance draws its internal IP address from that subnet.\n\nVirtual machine (VM) instances in a VPC network can communicate with\ninstances in all other subnets of the same VPC network, regardless of\nregion, using their RFC1918 private IP addresses. You can isolate portions\nof the network, even entire subnets, using firewall rules.\n\n\nTo get more information about Subnetwork, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks)\n* How-to Guides\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Subnetwork Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n secondaryIpRanges: [{\n rangeName: \"tf-test-secondary-range-update1\",\n ipCidrRange: \"192.168.10.0/24\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"tf-test-secondary-range-update1\",\n ip_cidr_range=\"192.168.10.0/24\",\n )])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_with_private_secondary_ip_ranges = new Gcp.Compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", new()\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"tf-test-secondary-range-update1\",\n IpCidrRange = \"192.168.10.0/24\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-with-private-secondary-ip-ranges\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"tf-test-secondary-range-update1\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"192.168.10.0/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_with_private_secondary_ip_ranges = new Subnetwork(\"network-with-private-secondary-ip-ranges\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"tf-test-secondary-range-update1\")\n .ipCidrRange(\"192.168.10.0/24\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-with-private-secondary-ip-ranges:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n secondaryIpRanges:\n - rangeName: tf-test-secondary-range-update1\n ipCidrRange: 192.168.10.0/24\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Logging Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n logConfig: {\n aggregationInterval: \"INTERVAL_10_MIN\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config=gcp.compute.SubnetworkLogConfigArgs(\n aggregation_interval=\"INTERVAL_10_MIN\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new()\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n LogConfig = new Gcp.Compute.Inputs.SubnetworkLogConfigArgs\n {\n AggregationInterval = \"INTERVAL_10_MIN\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnet-with-logging\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tLogConfig: \u0026compute.SubnetworkLogConfigArgs{\n\t\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_10_MIN\"),\n\t\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .logConfig(SubnetworkLogConfigArgs.builder()\n .aggregationInterval(\"INTERVAL_10_MIN\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-with-logging:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n logConfig:\n aggregationInterval: INTERVAL_10_MIN\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal L7lb\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-central1\",\n purpose: \"INTERNAL_HTTPS_LOAD_BALANCER\",\n role: \"ACTIVE\",\n network: custom_test.id,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-central1\",\n purpose=\"INTERNAL_HTTPS_LOAD_BALANCER\",\n role=\"ACTIVE\",\n network=custom_test.id,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new()\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-central1\",\n Purpose = \"INTERNAL_HTTPS_LOAD_BALANCER\",\n Role = \"ACTIVE\",\n Network = custom_test.Id,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"INTERNAL_HTTPS_LOAD_BALANCER\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-central1\")\n .purpose(\"INTERNAL_HTTPS_LOAD_BALANCER\")\n .role(\"ACTIVE\")\n .network(custom_test.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-central1\n purpose: INTERNAL_HTTPS_LOAD_BALANCER\n role: ACTIVE\n network: ${[\"custom-test\"].id}\n options:\n provider: ${[\"google-beta\"]}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"EXTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"EXTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new()\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"EXTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"EXTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"EXTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: EXTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new()\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tEnableUlaInternalIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-internal-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-internal-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n ", + "description": "A VPC network is a virtual version of the traditional physical networks\nthat exist within and between physical data centers. A VPC network\nprovides connectivity for your Compute Engine virtual machine (VM)\ninstances, Container Engine containers, App Engine Flex services, and\nother network-related resources.\n\nEach GCP project contains one or more VPC networks. Each VPC network is a\nglobal entity spanning all GCP regions. This global VPC network allows VM\ninstances and other resources to communicate with each other via internal,\nprivate IP addresses.\n\nEach VPC network is subdivided into subnets, and each subnet is contained\nwithin a single region. You can have more than one subnet in a region for\na given VPC network. Each subnet has a contiguous private RFC1918 IP\nspace. You create instances, containers, and the like in these subnets.\nWhen you create an instance, you must create it in a subnet, and the\ninstance draws its internal IP address from that subnet.\n\nVirtual machine (VM) instances in a VPC network can communicate with\ninstances in all other subnets of the same VPC network, regardless of\nregion, using their RFC1918 private IP addresses. You can isolate portions\nof the network, even entire subnets, using firewall rules.\n\n\nTo get more information about Subnetwork, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks)\n* How-to Guides\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Subnetwork Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n secondaryIpRanges: [{\n rangeName: \"tf-test-secondary-range-update1\",\n ipCidrRange: \"192.168.10.0/24\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"tf-test-secondary-range-update1\",\n ip_cidr_range=\"192.168.10.0/24\",\n )])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_with_private_secondary_ip_ranges = new Gcp.Compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", new()\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"tf-test-secondary-range-update1\",\n IpCidrRange = \"192.168.10.0/24\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-with-private-secondary-ip-ranges\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"tf-test-secondary-range-update1\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"192.168.10.0/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_with_private_secondary_ip_ranges = new Subnetwork(\"network-with-private-secondary-ip-ranges\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"tf-test-secondary-range-update1\")\n .ipCidrRange(\"192.168.10.0/24\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-with-private-secondary-ip-ranges:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n secondaryIpRanges:\n - rangeName: tf-test-secondary-range-update1\n ipCidrRange: 192.168.10.0/24\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Logging Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n logConfig: {\n aggregationInterval: \"INTERVAL_10_MIN\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config=gcp.compute.SubnetworkLogConfigArgs(\n aggregation_interval=\"INTERVAL_10_MIN\",\n flow_sampling=0.5,\n metadata=\"INCLUDE_ALL_METADATA\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new()\n {\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n LogConfig = new Gcp.Compute.Inputs.SubnetworkLogConfigArgs\n {\n AggregationInterval = \"INTERVAL_10_MIN\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnet-with-logging\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tLogConfig: \u0026compute.SubnetworkLogConfigArgs{\n\t\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_10_MIN\"),\n\t\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .logConfig(SubnetworkLogConfigArgs.builder()\n .aggregationInterval(\"INTERVAL_10_MIN\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-with-logging:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n logConfig:\n aggregationInterval: INTERVAL_10_MIN\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal L7lb\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-central1\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n network: custom_test.id,\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-central1\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\",\n network=custom_test.id,\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new()\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-central1\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n Network = custom_test.Id,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-central1\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .network(custom_test.id())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-central1\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n network: ${[\"custom-test\"].id}\n options:\n provider: ${[\"google-beta\"]}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {autoCreateSubnetworks: false});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"EXTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\", auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"EXTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new()\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"EXTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"EXTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"EXTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: EXTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Subnetwork Internal Ipv6\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new()\n {\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tEnableUlaInternalIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-internal-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-internal-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n ", "properties": { "creationTimestamp": { "type": "string", @@ -127205,7 +127858,7 @@ }, "logConfig": { "$ref": "#/types/gcp:compute/SubnetworkLogConfig:SubnetworkLogConfig", - "description": "Denotes the logging options for the subnetwork flow logs. If logging is enabled\nlogs will be exported to Stackdriver. This field cannot be set if the `purpose` of this\nsubnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`\nStructure is documented below.\n" + "description": "This field denotes the VPC flow logging options for this subnetwork. If\nlogging is enabled, logs are exported to Cloud Logging. Flow logging\nisn't supported if the subnet `purpose` field is set to subnetwork is\n`REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`.\nStructure is documented below.\n" }, "name": { "type": "string", @@ -127229,7 +127882,7 @@ }, "purpose": { "type": "string", - "description": "The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`.\nA subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing.\nA subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service.\nIf unspecified, the purpose defaults to `PRIVATE_RFC_1918`.\nThe enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`.\n" + "description": "The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`.\nA subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service.\nNote that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers.\nIf unspecified, the purpose defaults to `PRIVATE_RFC_1918`.\n" }, "region": { "type": "string", @@ -127237,7 +127890,7 @@ }, "role": { "type": "string", - "description": "The role of subnetwork.\nThe value can be set to `ACTIVE` or `BACKUP`.\nAn `ACTIVE` subnetwork is one that is currently being used.\nA `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining.\nSubnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`.\nPossible values are: `ACTIVE`, `BACKUP`.\n" + "description": "The role of subnetwork.\nCurrently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`.\nThe value can be set to `ACTIVE` or `BACKUP`.\nAn `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region.\nA `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining.\nPossible values are: `ACTIVE`, `BACKUP`.\n" }, "secondaryIpRanges": { "type": "array", @@ -127289,7 +127942,7 @@ }, "logConfig": { "$ref": "#/types/gcp:compute/SubnetworkLogConfig:SubnetworkLogConfig", - "description": "Denotes the logging options for the subnetwork flow logs. If logging is enabled\nlogs will be exported to Stackdriver. This field cannot be set if the `purpose` of this\nsubnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`\nStructure is documented below.\n" + "description": "This field denotes the VPC flow logging options for this subnetwork. If\nlogging is enabled, logs are exported to Cloud Logging. Flow logging\nisn't supported if the subnet `purpose` field is set to subnetwork is\n`REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`.\nStructure is documented below.\n" }, "name": { "type": "string", @@ -127316,7 +127969,7 @@ }, "purpose": { "type": "string", - "description": "The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`.\nA subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing.\nA subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service.\nIf unspecified, the purpose defaults to `PRIVATE_RFC_1918`.\nThe enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`.\n", + "description": "The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`.\nA subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service.\nNote that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers.\nIf unspecified, the purpose defaults to `PRIVATE_RFC_1918`.\n", "willReplaceOnChanges": true }, "region": { @@ -127326,7 +127979,7 @@ }, "role": { "type": "string", - "description": "The role of subnetwork.\nThe value can be set to `ACTIVE` or `BACKUP`.\nAn `ACTIVE` subnetwork is one that is currently being used.\nA `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining.\nSubnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`.\nPossible values are: `ACTIVE`, `BACKUP`.\n" + "description": "The role of subnetwork.\nCurrently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`.\nThe value can be set to `ACTIVE` or `BACKUP`.\nAn `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region.\nA `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining.\nPossible values are: `ACTIVE`, `BACKUP`.\n" }, "secondaryIpRanges": { "type": "array", @@ -127383,7 +128036,7 @@ }, "logConfig": { "$ref": "#/types/gcp:compute/SubnetworkLogConfig:SubnetworkLogConfig", - "description": "Denotes the logging options for the subnetwork flow logs. If logging is enabled\nlogs will be exported to Stackdriver. This field cannot be set if the `purpose` of this\nsubnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`\nStructure is documented below.\n" + "description": "This field denotes the VPC flow logging options for this subnetwork. If\nlogging is enabled, logs are exported to Cloud Logging. Flow logging\nisn't supported if the subnet `purpose` field is set to subnetwork is\n`REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`.\nStructure is documented below.\n" }, "name": { "type": "string", @@ -127410,7 +128063,7 @@ }, "purpose": { "type": "string", - "description": "The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`.\nA subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing.\nA subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service.\nIf unspecified, the purpose defaults to `PRIVATE_RFC_1918`.\nThe enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`.\n", + "description": "The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`.\nA subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers.\nA subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers.\nA subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service.\nNote that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers.\nIf unspecified, the purpose defaults to `PRIVATE_RFC_1918`.\n", "willReplaceOnChanges": true }, "region": { @@ -127420,7 +128073,7 @@ }, "role": { "type": "string", - "description": "The role of subnetwork.\nThe value can be set to `ACTIVE` or `BACKUP`.\nAn `ACTIVE` subnetwork is one that is currently being used.\nA `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining.\nSubnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`.\nPossible values are: `ACTIVE`, `BACKUP`.\n" + "description": "The role of subnetwork.\nCurrently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`.\nThe value can be set to `ACTIVE` or `BACKUP`.\nAn `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region.\nA `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining.\nPossible values are: `ACTIVE`, `BACKUP`.\n" }, "secondaryIpRanges": { "type": "array", @@ -129752,7 +130405,7 @@ } }, "gcp:container/awsCluster:AwsCluster": { - "description": "An Anthos cluster running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic_aws_cluster\nA basic example of a containeraws cluster\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n location: \"us-west1\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n subnetIds: [\"subnet-00000000000000000\"],\n tags: {\n owner: \"my@service-account.com\",\n },\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n description: \"A sample aws cluster\",\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(location=\"us-west1\",\n project=\"my-project-name\")\nprimary = gcp.container.AwsCluster(\"primary\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n subnet_ids=[\"subnet-00000000000000000\"],\n tags={\n \"owner\": \"my@service-account.com\",\n },\n version=versions.valid_versions[0],\n ),\n description=\"A sample aws cluster\",\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n },\n Description = \"A sample aws cluster\",\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder() \n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .subnetIds(\"subnet-00000000000000000\")\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .build())\n .description(\"A sample aws cluster\")\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n subnetIds:\n - subnet-00000000000000000\n tags:\n owner: my@service-account.com\n version: ${versions.validVersions[0]}\n description: A sample aws cluster\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n location: us-west1\n project: my-project-name\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCluster can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:container/awsCluster:AwsCluster default projects/{{project}}/locations/{{location}}/awsClusters/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsCluster:AwsCluster default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsCluster:AwsCluster default {{location}}/{{name}}\n```\n\n ", + "description": "An Anthos cluster running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic_aws_cluster\nA basic example of a containeraws cluster\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n location: \"us-west1\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n subnetIds: [\"subnet-00000000000000000\"],\n tags: {\n owner: \"my@service-account.com\",\n },\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n description: \"A sample aws cluster\",\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(location=\"us-west1\",\n project=\"my-project-name\")\nprimary = gcp.container.AwsCluster(\"primary\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n subnet_ids=[\"subnet-00000000000000000\"],\n tags={\n \"owner\": \"my@service-account.com\",\n },\n version=versions.valid_versions[0],\n ),\n description=\"A sample aws cluster\",\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n },\n Description = \"A sample aws cluster\",\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder() \n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .subnetIds(\"subnet-00000000000000000\")\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .build())\n .description(\"A sample aws cluster\")\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n subnetIds:\n - subnet-00000000000000000\n tags:\n owner: my@service-account.com\n version: ${versions.validVersions[0]}\n description: A sample aws cluster\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n location: us-west1\n project: my-project-name\n```\n{{% /example %}}\n{{% example %}}\n### Basic_enum_aws_cluster\nA basic example of a containeraws cluster with lowercase enums\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n location: \"us-west1\",\n project: \"my-project-name\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n subnetIds: [\"subnet-00000000000000000\"],\n tags: {\n owner: \"my@service-account.com\",\n },\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n },\n description: \"A sample aws cluster\",\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(location=\"us-west1\",\n project=\"my-project-name\")\nprimary = gcp.container.AwsCluster(\"primary\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"gp3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"gp3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n subnet_ids=[\"subnet-00000000000000000\"],\n tags={\n \"owner\": \"my@service-account.com\",\n },\n version=versions.valid_versions[0],\n ),\n description=\"A sample aws cluster\",\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = \"my-project-name\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n },\n Description = \"A sample aws cluster\",\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .location(\"us-west1\")\n .project(\"my-project-name\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder() \n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .subnetIds(\"subnet-00000000000000000\")\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .build())\n .description(\"A sample aws cluster\")\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n subnetIds:\n - subnet-00000000000000000\n tags:\n owner: my@service-account.com\n version: ${versions.validVersions[0]}\n description: A sample aws cluster\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n location: us-west1\n project: my-project-name\n```\n{{% /example %}}\n{{% example %}}\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws cluster with lowercase enums (beta)\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n instancePlacement: {\n tenancy: \"dedicated\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"system_components\",\n \"workloads\",\n ],\n },\n },\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n subnet_ids=[\"subnet-00000000000000000\"],\n version=versions.valid_versions[0],\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"gp3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"gp3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"owner\": \"my@service-account.com\",\n },\n instance_placement=gcp.container.AwsClusterControlPlaneInstancePlacementArgs(\n tenancy=\"dedicated\",\n ),\n ),\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\",\n logging_config=gcp.container.AwsClusterLoggingConfigArgs(\n component_config=gcp.container.AwsClusterLoggingConfigComponentConfigArgs(\n enable_components=[\n \"system_components\",\n \"workloads\",\n ],\n ),\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n InstancePlacement = new Gcp.Container.Inputs.AwsClusterControlPlaneInstancePlacementArgs\n {\n Tenancy = \"dedicated\",\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n LoggingConfig = new Gcp.Container.Inputs.AwsClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AwsClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"system_components\",\n \"workloads\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\tInstancePlacement: \u0026container.AwsClusterControlPlaneInstancePlacementArgs{\n\t\t\t\t\tTenancy: pulumi.String(\"dedicated\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLoggingConfig: \u0026container.AwsClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AwsClusterLoggingConfigComponentConfigArgs{\n\t\t\t\t\tEnableComponents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"system_components\"),\n\t\t\t\t\t\tpulumi.String(\"workloads\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneInstancePlacementArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterLoggingConfigComponentConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder() \n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .instancePlacement(AwsClusterControlPlaneInstancePlacementArgs.builder()\n .tenancy(\"dedicated\")\n .build())\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .loggingConfig(AwsClusterLoggingConfigArgs.builder()\n .componentConfig(AwsClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"system_components\",\n \"workloads\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n instancePlacement:\n tenancy: dedicated\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n loggingConfig:\n componentConfig:\n enableComponents:\n - system_components\n - workloads\n options:\n provider: ${[\"google-beta\"]}\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCluster can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:container/awsCluster:AwsCluster default projects/{{project}}/locations/{{location}}/awsClusters/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsCluster:AwsCluster default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsCluster:AwsCluster default {{location}}/{{name}}\n```\n\n ", "properties": { "annotations": { "type": "object", @@ -130013,7 +130666,7 @@ } }, "gcp:container/awsNodePool:AwsNodePool": { - "description": "An Anthos node pool running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primaryAwsCluster = new gcp.container.AwsCluster(\"primaryAwsCluster\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primaryAwsNodePool\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primaryAwsCluster.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"PREFER_NO_SCHEDULE\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary_aws_cluster = gcp.container.AwsCluster(\"primaryAwsCluster\",\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n subnet_ids=[\"subnet-00000000000000000\"],\n version=versions.valid_versions[0],\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"owner\": \"my@service-account.com\",\n },\n ),\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primaryAwsNodePool\",\n autoscaling=gcp.container.AwsNodePoolAutoscalingArgs(\n max_node_count=5,\n min_node_count=1,\n ),\n cluster=primary_aws_cluster.name,\n config=gcp.container.AwsNodePoolConfigArgs(\n config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-nodepool\",\n instance_type=\"t3.medium\",\n labels={\n \"label-one\": \"value-one\",\n },\n root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"tag-one\": \"value-one\",\n },\n taints=[gcp.container.AwsNodePoolConfigTaintArgs(\n effect=\"PREFER_NO_SCHEDULE\",\n key=\"taint-key\",\n value=\"taint-value\",\n )],\n ),\n location=\"us-west1\",\n max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs(\n max_pods_per_node=110,\n ),\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primaryAwsCluster = new Gcp.Container.AwsCluster(\"primaryAwsCluster\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primaryAwsNodePool\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primaryAwsCluster.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"PREFER_NO_SCHEDULE\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAwsCluster, err := container.NewAwsCluster(ctx, \"primaryAwsCluster\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primaryAwsNodePool\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primaryAwsCluster.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"PREFER_NO_SCHEDULE\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primaryAwsCluster = new AwsCluster(\"primaryAwsCluster\", AwsClusterArgs.builder() \n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder() \n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primaryAwsCluster.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"PREFER_NO_SCHEDULE\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primaryAwsCluster:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primaryAwsCluster.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: PREFER_NO_SCHEDULE\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nNodePool can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n ", + "description": "An Anthos node pool running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primaryAwsCluster = new gcp.container.AwsCluster(\"primaryAwsCluster\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primaryAwsNodePool\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primaryAwsCluster.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"PREFER_NO_SCHEDULE\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary_aws_cluster = gcp.container.AwsCluster(\"primaryAwsCluster\",\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n subnet_ids=[\"subnet-00000000000000000\"],\n version=versions.valid_versions[0],\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"owner\": \"my@service-account.com\",\n },\n ),\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primaryAwsNodePool\",\n autoscaling=gcp.container.AwsNodePoolAutoscalingArgs(\n max_node_count=5,\n min_node_count=1,\n ),\n cluster=primary_aws_cluster.name,\n config=gcp.container.AwsNodePoolConfigArgs(\n config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-nodepool\",\n instance_type=\"t3.medium\",\n labels={\n \"label-one\": \"value-one\",\n },\n root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"tag-one\": \"value-one\",\n },\n taints=[gcp.container.AwsNodePoolConfigTaintArgs(\n effect=\"PREFER_NO_SCHEDULE\",\n key=\"taint-key\",\n value=\"taint-value\",\n )],\n ),\n location=\"us-west1\",\n max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs(\n max_pods_per_node=110,\n ),\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primaryAwsCluster = new Gcp.Container.AwsCluster(\"primaryAwsCluster\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primaryAwsNodePool\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primaryAwsCluster.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"PREFER_NO_SCHEDULE\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAwsCluster, err := container.NewAwsCluster(ctx, \"primaryAwsCluster\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primaryAwsNodePool\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primaryAwsCluster.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"PREFER_NO_SCHEDULE\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primaryAwsCluster = new AwsCluster(\"primaryAwsCluster\", AwsClusterArgs.builder() \n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder() \n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primaryAwsCluster.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"PREFER_NO_SCHEDULE\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primaryAwsCluster:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primaryAwsCluster.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: PREFER_NO_SCHEDULE\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n{{% /example %}}\n{{% example %}}\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primaryAwsCluster = new gcp.container.AwsCluster(\"primaryAwsCluster\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primaryAwsNodePool\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primaryAwsCluster.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary_aws_cluster = gcp.container.AwsCluster(\"primaryAwsCluster\",\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n subnet_ids=[\"subnet-00000000000000000\"],\n version=versions.valid_versions[0],\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"owner\": \"my@service-account.com\",\n },\n ),\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primaryAwsNodePool\",\n autoscaling=gcp.container.AwsNodePoolAutoscalingArgs(\n max_node_count=5,\n min_node_count=1,\n ),\n cluster=primary_aws_cluster.name,\n config=gcp.container.AwsNodePoolConfigArgs(\n config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-nodepool\",\n instance_type=\"t3.medium\",\n labels={\n \"label-one\": \"value-one\",\n },\n root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"gp3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"tag-one\": \"value-one\",\n },\n taints=[gcp.container.AwsNodePoolConfigTaintArgs(\n effect=\"prefer_no_schedule\",\n key=\"taint-key\",\n value=\"taint-value\",\n )],\n ),\n location=\"us-west1\",\n max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs(\n max_pods_per_node=110,\n ),\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primaryAwsCluster = new Gcp.Container.AwsCluster(\"primaryAwsCluster\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primaryAwsNodePool\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primaryAwsCluster.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAwsCluster, err := container.NewAwsCluster(ctx, \"primaryAwsCluster\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primaryAwsNodePool\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primaryAwsCluster.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primaryAwsCluster = new AwsCluster(\"primaryAwsCluster\", AwsClusterArgs.builder() \n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder() \n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primaryAwsCluster.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primaryAwsCluster:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primaryAwsCluster.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n{{% /example %}}\n{{% example %}}\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primaryAwsCluster = new gcp.container.AwsCluster(\"primaryAwsCluster\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n}, {\n provider: google_beta,\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primaryAwsNodePool\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primaryAwsCluster.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n instancePlacement: {\n tenancy: \"dedicated\",\n },\n imageType: \"ubuntu\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary_aws_cluster = gcp.container.AwsCluster(\"primaryAwsCluster\",\n authorization=gcp.container.AwsClusterAuthorizationArgs(\n admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs(\n username=\"my@service-account.com\",\n )],\n ),\n aws_region=\"my-aws-region\",\n control_plane=gcp.container.AwsClusterControlPlaneArgs(\n aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs(\n role_arn=\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n role_session_name=\"my--1p-dev-session\",\n ),\n config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-controlplane\",\n subnet_ids=[\"subnet-00000000000000000\"],\n version=versions.valid_versions[0],\n instance_type=\"t3.medium\",\n main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"GP3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"owner\": \"my@service-account.com\",\n },\n ),\n fleet=gcp.container.AwsClusterFleetArgs(\n project=\"my-project-number\",\n ),\n location=\"us-west1\",\n networking=gcp.container.AwsClusterNetworkingArgs(\n pod_address_cidr_blocks=[\"10.2.0.0/16\"],\n service_address_cidr_blocks=[\"10.1.0.0/16\"],\n vpc_id=\"vpc-00000000000000000\",\n ),\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primaryAwsNodePool\",\n autoscaling=gcp.container.AwsNodePoolAutoscalingArgs(\n max_node_count=5,\n min_node_count=1,\n ),\n cluster=primary_aws_cluster.name,\n config=gcp.container.AwsNodePoolConfigArgs(\n config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs(\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n ),\n iam_instance_profile=\"my--1p-dev-nodepool\",\n instance_type=\"t3.medium\",\n labels={\n \"label-one\": \"value-one\",\n },\n root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs(\n iops=3000,\n kms_key_arn=\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n size_gib=10,\n volume_type=\"gp3\",\n ),\n security_group_ids=[\"sg-00000000000000000\"],\n proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs(\n secret_arn=\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secret_version=\"12345678-ABCD-EFGH-IJKL-987654321098\",\n ),\n ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs(\n ec2_key_pair=\"my--1p-dev-ssh\",\n ),\n tags={\n \"tag-one\": \"value-one\",\n },\n taints=[gcp.container.AwsNodePoolConfigTaintArgs(\n effect=\"prefer_no_schedule\",\n key=\"taint-key\",\n value=\"taint-value\",\n )],\n instance_placement=gcp.container.AwsNodePoolConfigInstancePlacementArgs(\n tenancy=\"dedicated\",\n ),\n image_type=\"ubuntu\",\n ),\n location=\"us-west1\",\n max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs(\n max_pods_per_node=110,\n ),\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\",\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primaryAwsCluster = new Gcp.Container.AwsCluster(\"primaryAwsCluster\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primaryAwsNodePool\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primaryAwsCluster.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n InstancePlacement = new Gcp.Container.Inputs.AwsNodePoolConfigInstancePlacementArgs\n {\n Tenancy = \"dedicated\",\n },\n ImageType = \"ubuntu\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAwsCluster, err := container.NewAwsCluster(ctx, \"primaryAwsCluster\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primaryAwsNodePool\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primaryAwsCluster.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstancePlacement: \u0026container.AwsNodePoolConfigInstancePlacementArgs{\n\t\t\t\t\tTenancy: pulumi.String(\"dedicated\"),\n\t\t\t\t},\n\t\t\t\tImageType: pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: *pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigInstancePlacementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primaryAwsCluster = new AwsCluster(\"primaryAwsCluster\", AwsClusterArgs.builder() \n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder() \n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primaryAwsCluster.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .instancePlacement(AwsNodePoolConfigInstancePlacementArgs.builder()\n .tenancy(\"dedicated\")\n .build())\n .imageType(\"ubuntu\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primaryAwsCluster:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n options:\n provider: ${[\"google-beta\"]}\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primaryAwsCluster.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n instancePlacement:\n tenancy: dedicated\n imageType: ubuntu\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\n options:\n provider: ${[\"google-beta\"]}\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nNodePool can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n ", "properties": { "annotations": { "type": "object", @@ -132786,7 +133439,7 @@ } }, "gcp:databasemigrationservice/connectionProfile:ConnectionProfile": { - "description": "A connection profile definition.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles/create)\n* How-to Guides\n * [Database Migration](https://cloud.google.com/database-migration/docs/)\n\n\u003e **Warning:** All arguments including the following potentially sensitive\nvalues will be stored in the raw state as plain text: `mysql.password`, `mysql.ssl.client_key`, `mysql.ssl.client_certificate`, `mysql.ssl.ca_certificate`, `postgresql.password`, `postgresql.ssl.client_key`, `postgresql.ssl.client_certificate`, `postgresql.ssl.ca_certificate`, `cloudsql.settings.root_password`, `alloydb.settings.initial_user.password`.\nRead more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Database Migration Service Connection Profile Cloudsql\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudsqldb = new gcp.sql.DatabaseInstance(\"cloudsqldb\", {\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sqlClientCert\", {\n commonName: \"my-cert\",\n instance: cloudsqldb.name,\n}, {\n dependsOn: [cloudsqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldbUser\", {\n instance: cloudsqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst cloudsqlprofile = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-fromprofileid\",\n displayName: \"my-fromprofileid_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n host: cloudsqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\nconst cloudsqlprofileDestination = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofileDestination\", {\n location: \"us-central1\",\n connectionProfileId: \"my-toprofileid\",\n displayName: \"my-toprofileid_displayname\",\n labels: {\n foo: \"bar\",\n },\n cloudsql: {\n settings: {\n databaseVersion: \"MYSQL_5_7\",\n userLabels: {\n cloudfoo: \"cloudbar\",\n },\n tier: \"db-n1-standard-1\",\n storageAutoResizeLimit: \"0\",\n activationPolicy: \"ALWAYS\",\n ipConfig: {\n enableIpv4: true,\n requireSsl: true,\n },\n autoStorageIncrease: true,\n dataDiskType: \"PD_HDD\",\n dataDiskSizeGb: \"11\",\n zone: \"us-central1-b\",\n sourceId: project.then(project =\u003e `projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid`),\n rootPassword: \"testpasscloudsql\",\n },\n },\n}, {\n dependsOn: [cloudsqlprofile],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudsqldb = gcp.sql.DatabaseInstance(\"cloudsqldb\",\n database_version=\"MYSQL_5_7\",\n settings=gcp.sql.DatabaseInstanceSettingsArgs(\n tier=\"db-n1-standard-1\",\n deletion_protection_enabled=False,\n ),\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sqlClientCert\",\n common_name=\"my-cert\",\n instance=cloudsqldb.name,\n opts=pulumi.ResourceOptions(depends_on=[cloudsqldb]))\nsqldb_user = gcp.sql.User(\"sqldbUser\",\n instance=cloudsqldb.name,\n password=\"my-password\",\n opts=pulumi.ResourceOptions(depends_on=[sql_client_cert]))\ncloudsqlprofile = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-fromprofileid\",\n display_name=\"my-fromprofileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql=gcp.databasemigrationservice.ConnectionProfileMysqlArgs(\n host=cloudsqldb.ip_addresses[0].ip_address,\n port=3306,\n username=sqldb_user.name,\n password=sqldb_user.password,\n ssl=gcp.databasemigrationservice.ConnectionProfileMysqlSslArgs(\n client_key=sql_client_cert.private_key,\n client_certificate=sql_client_cert.cert,\n ca_certificate=sql_client_cert.server_ca_cert,\n ),\n cloud_sql_id=\"my-database\",\n ),\n opts=pulumi.ResourceOptions(depends_on=[sqldb_user]))\ncloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofileDestination\",\n location=\"us-central1\",\n connection_profile_id=\"my-toprofileid\",\n display_name=\"my-toprofileid_displayname\",\n labels={\n \"foo\": \"bar\",\n },\n cloudsql=gcp.databasemigrationservice.ConnectionProfileCloudsqlArgs(\n settings=gcp.databasemigrationservice.ConnectionProfileCloudsqlSettingsArgs(\n database_version=\"MYSQL_5_7\",\n user_labels={\n \"cloudfoo\": \"cloudbar\",\n },\n tier=\"db-n1-standard-1\",\n storage_auto_resize_limit=\"0\",\n activation_policy=\"ALWAYS\",\n ip_config=gcp.databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs(\n enable_ipv4=True,\n require_ssl=True,\n ),\n auto_storage_increase=True,\n data_disk_type=\"PD_HDD\",\n data_disk_size_gb=\"11\",\n zone=\"us-central1-b\",\n source_id=f\"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n root_password=\"testpasscloudsql\",\n ),\n ),\n opts=pulumi.ResourceOptions(depends_on=[cloudsqlprofile]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudsqldb = new Gcp.Sql.DatabaseInstance(\"cloudsqldb\", new()\n {\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sqlClientCert\", new()\n {\n CommonName = \"my-cert\",\n Instance = cloudsqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n cloudsqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldbUser\", new()\n {\n Instance = cloudsqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqlClientCert,\n },\n });\n\n var cloudsqlprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-fromprofileid\",\n DisplayName = \"my-fromprofileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n Host = cloudsqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqldbUser,\n },\n });\n\n var cloudsqlprofileDestination = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofileDestination\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-toprofileid\",\n DisplayName = \"my-toprofileid_displayname\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Cloudsql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlArgs\n {\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsArgs\n {\n DatabaseVersion = \"MYSQL_5_7\",\n UserLabels = \n {\n { \"cloudfoo\", \"cloudbar\" },\n },\n Tier = \"db-n1-standard-1\",\n StorageAutoResizeLimit = \"0\",\n ActivationPolicy = \"ALWAYS\",\n IpConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs\n {\n EnableIpv4 = true,\n RequireSsl = true,\n },\n AutoStorageIncrease = true,\n DataDiskType = \"PD_HDD\",\n DataDiskSizeGb = \"11\",\n Zone = \"us-central1-b\",\n SourceId = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n RootPassword = \"testpasscloudsql\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n cloudsqlprofile,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqldb, err := sql.NewDatabaseInstance(ctx, \"cloudsqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sqlClientCert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: cloudsqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldbUser\", \u0026sql.UserArgs{\n\t\t\tInstance: cloudsqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqlprofile, err := databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-fromprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-fromprofileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tHost: cloudsqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfileMysqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofileDestination\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-toprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-toprofileid_displayname\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudsql: \u0026databasemigrationservice.ConnectionProfileCloudsqlArgs{\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsArgs{\n\t\t\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"cloudfoo\": pulumi.String(\"cloudbar\"),\n\t\t\t\t\t},\n\t\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\t\tStorageAutoResizeLimit: pulumi.String(\"0\"),\n\t\t\t\t\tActivationPolicy: pulumi.String(\"ALWAYS\"),\n\t\t\t\t\tIpConfig: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs{\n\t\t\t\t\t\tEnableIpv4: pulumi.Bool(true),\n\t\t\t\t\t\tRequireSsl: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tAutoStorageIncrease: pulumi.Bool(true),\n\t\t\t\t\tDataDiskType: pulumi.String(\"PD_HDD\"),\n\t\t\t\t\tDataDiskSizeGb: pulumi.String(\"11\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tSourceId: pulumi.String(fmt.Sprintf(\"projects/%v/locations/us-central1/connectionProfiles/my-fromprofileid\", project.ProjectId)),\n\t\t\t\t\tRootPassword: pulumi.String(\"testpasscloudsql\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqlprofile,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlSslArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudsqldb = new DatabaseInstance(\"cloudsqldb\", DatabaseInstanceArgs.builder() \n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder() \n .commonName(\"my-cert\")\n .instance(cloudsqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder() \n .instance(cloudsqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var cloudsqlprofile = new ConnectionProfile(\"cloudsqlprofile\", ConnectionProfileArgs.builder() \n .location(\"us-central1\")\n .connectionProfileId(\"my-fromprofileid\")\n .displayName(\"my-fromprofileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .host(cloudsqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfileMysqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n var cloudsqlprofileDestination = new ConnectionProfile(\"cloudsqlprofileDestination\", ConnectionProfileArgs.builder() \n .location(\"us-central1\")\n .connectionProfileId(\"my-toprofileid\")\n .displayName(\"my-toprofileid_displayname\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudsql(ConnectionProfileCloudsqlArgs.builder()\n .settings(ConnectionProfileCloudsqlSettingsArgs.builder()\n .databaseVersion(\"MYSQL_5_7\")\n .userLabels(Map.of(\"cloudfoo\", \"cloudbar\"))\n .tier(\"db-n1-standard-1\")\n .storageAutoResizeLimit(\"0\")\n .activationPolicy(\"ALWAYS\")\n .ipConfig(ConnectionProfileCloudsqlSettingsIpConfigArgs.builder()\n .enableIpv4(true)\n .requireSsl(\"true\")\n .build())\n .autoStorageIncrease(true)\n .dataDiskType(\"PD_HDD\")\n .dataDiskSizeGb(\"11\")\n .zone(\"us-central1-b\")\n .sourceId(String.format(\"projects/%s/locations/us-central1/connectionProfiles/my-fromprofileid\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .rootPassword(\"testpasscloudsql\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqlprofile)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloudsqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n properties:\n commonName: my-cert\n instance: ${cloudsqldb.name}\n options:\n dependson:\n - ${cloudsqldb}\n sqldbUser:\n type: gcp:sql:User\n properties:\n instance: ${cloudsqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n cloudsqlprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-fromprofileid\n displayName: my-fromprofileid_display\n labels:\n foo: bar\n mysql:\n host: ${cloudsqldb.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n cloudsqlprofileDestination:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-toprofileid\n displayName: my-toprofileid_displayname\n labels:\n foo: bar\n cloudsql:\n settings:\n databaseVersion: MYSQL_5_7\n userLabels:\n cloudfoo: cloudbar\n tier: db-n1-standard-1\n storageAutoResizeLimit: '0'\n activationPolicy: ALWAYS\n ipConfig:\n enableIpv4: true\n requireSsl: 'true'\n autoStorageIncrease: true\n dataDiskType: PD_HDD\n dataDiskSizeGb: '11'\n zone: us-central1-b\n sourceId: projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid\n rootPassword: testpasscloudsql\n options:\n dependson:\n - ${cloudsqlprofile}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n{{% /example %}}\n{{% example %}}\n### Database Migration Service Connection Profile Postgres\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst postgresqldb = new gcp.sql.DatabaseInstance(\"postgresqldb\", {\n databaseVersion: \"POSTGRES_12\",\n settings: {\n tier: \"db-custom-2-13312\",\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sqlClientCert\", {\n commonName: \"my-cert\",\n instance: postgresqldb.name,\n}, {\n dependsOn: [postgresqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldbUser\", {\n instance: postgresqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst postgresprofile = new gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: postgresqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 5432,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npostgresqldb = gcp.sql.DatabaseInstance(\"postgresqldb\",\n database_version=\"POSTGRES_12\",\n settings=gcp.sql.DatabaseInstanceSettingsArgs(\n tier=\"db-custom-2-13312\",\n ),\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sqlClientCert\",\n common_name=\"my-cert\",\n instance=postgresqldb.name,\n opts=pulumi.ResourceOptions(depends_on=[postgresqldb]))\nsqldb_user = gcp.sql.User(\"sqldbUser\",\n instance=postgresqldb.name,\n password=\"my-password\",\n opts=pulumi.ResourceOptions(depends_on=[sql_client_cert]))\npostgresprofile = gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql=gcp.databasemigrationservice.ConnectionProfilePostgresqlArgs(\n host=postgresqldb.ip_addresses[0].ip_address,\n port=5432,\n username=sqldb_user.name,\n password=sqldb_user.password,\n ssl=gcp.databasemigrationservice.ConnectionProfilePostgresqlSslArgs(\n client_key=sql_client_cert.private_key,\n client_certificate=sql_client_cert.cert,\n ca_certificate=sql_client_cert.server_ca_cert,\n ),\n cloud_sql_id=\"my-database\",\n ),\n opts=pulumi.ResourceOptions(depends_on=[sqldb_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgresqldb = new Gcp.Sql.DatabaseInstance(\"postgresqldb\", new()\n {\n DatabaseVersion = \"POSTGRES_12\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sqlClientCert\", new()\n {\n CommonName = \"my-cert\",\n Instance = postgresqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n postgresqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldbUser\", new()\n {\n Instance = postgresqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqlClientCert,\n },\n });\n\n var postgresprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"postgresprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = postgresqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 5432,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqldbUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgresqldb, err := sql.NewDatabaseInstance(ctx, \"postgresqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_12\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sqlClientCert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: postgresqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpostgresqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldbUser\", \u0026sql.UserArgs{\n\t\t\tInstance: postgresqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"postgresprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: postgresqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(5432),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var postgresqldb = new DatabaseInstance(\"postgresqldb\", DatabaseInstanceArgs.builder() \n .databaseVersion(\"POSTGRES_12\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder() \n .commonName(\"my-cert\")\n .instance(postgresqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(postgresqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder() \n .instance(postgresqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var postgresprofile = new ConnectionProfile(\"postgresprofile\", ConnectionProfileArgs.builder() \n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(postgresqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(5432)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgresqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n databaseVersion: POSTGRES_12\n settings:\n tier: db-custom-2-13312\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n properties:\n commonName: my-cert\n instance: ${postgresqldb.name}\n options:\n dependson:\n - ${postgresqldb}\n sqldbUser:\n type: gcp:sql:User\n properties:\n instance: ${postgresqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n postgresprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n postgresql:\n host: ${postgresqldb.ipAddresses[0].ipAddress}\n port: 5432\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n ", + "description": "A connection profile definition.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles/create)\n* How-to Guides\n * [Database Migration](https://cloud.google.com/database-migration/docs/)\n\n\u003e **Warning:** All arguments including the following potentially sensitive\nvalues will be stored in the raw state as plain text: `mysql.password`, `mysql.ssl.client_key`, `mysql.ssl.client_certificate`, `mysql.ssl.ca_certificate`, `postgresql.password`, `postgresql.ssl.client_key`, `postgresql.ssl.client_certificate`, `postgresql.ssl.ca_certificate`, `cloudsql.settings.root_password`, `alloydb.settings.initial_user.password`.\nRead more about sensitive data in state.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Database Migration Service Connection Profile Cloudsql\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudsqldb = new gcp.sql.DatabaseInstance(\"cloudsqldb\", {\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sqlClientCert\", {\n commonName: \"my-cert\",\n instance: cloudsqldb.name,\n}, {\n dependsOn: [cloudsqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldbUser\", {\n instance: cloudsqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst cloudsqlprofile = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-fromprofileid\",\n displayName: \"my-fromprofileid_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n host: cloudsqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\nconst cloudsqlprofileDestination = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofileDestination\", {\n location: \"us-central1\",\n connectionProfileId: \"my-toprofileid\",\n displayName: \"my-toprofileid_displayname\",\n labels: {\n foo: \"bar\",\n },\n cloudsql: {\n settings: {\n databaseVersion: \"MYSQL_5_7\",\n userLabels: {\n cloudfoo: \"cloudbar\",\n },\n tier: \"db-n1-standard-1\",\n edition: \"ENTERPRISE\",\n storageAutoResizeLimit: \"0\",\n activationPolicy: \"ALWAYS\",\n ipConfig: {\n enableIpv4: true,\n requireSsl: true,\n },\n autoStorageIncrease: true,\n dataDiskType: \"PD_HDD\",\n dataDiskSizeGb: \"11\",\n zone: \"us-central1-b\",\n sourceId: project.then(project =\u003e `projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid`),\n rootPassword: \"testpasscloudsql\",\n },\n },\n}, {\n dependsOn: [cloudsqlprofile],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudsqldb = gcp.sql.DatabaseInstance(\"cloudsqldb\",\n database_version=\"MYSQL_5_7\",\n settings=gcp.sql.DatabaseInstanceSettingsArgs(\n tier=\"db-n1-standard-1\",\n deletion_protection_enabled=False,\n ),\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sqlClientCert\",\n common_name=\"my-cert\",\n instance=cloudsqldb.name,\n opts=pulumi.ResourceOptions(depends_on=[cloudsqldb]))\nsqldb_user = gcp.sql.User(\"sqldbUser\",\n instance=cloudsqldb.name,\n password=\"my-password\",\n opts=pulumi.ResourceOptions(depends_on=[sql_client_cert]))\ncloudsqlprofile = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-fromprofileid\",\n display_name=\"my-fromprofileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql=gcp.databasemigrationservice.ConnectionProfileMysqlArgs(\n host=cloudsqldb.ip_addresses[0].ip_address,\n port=3306,\n username=sqldb_user.name,\n password=sqldb_user.password,\n ssl=gcp.databasemigrationservice.ConnectionProfileMysqlSslArgs(\n client_key=sql_client_cert.private_key,\n client_certificate=sql_client_cert.cert,\n ca_certificate=sql_client_cert.server_ca_cert,\n ),\n cloud_sql_id=\"my-database\",\n ),\n opts=pulumi.ResourceOptions(depends_on=[sqldb_user]))\ncloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofileDestination\",\n location=\"us-central1\",\n connection_profile_id=\"my-toprofileid\",\n display_name=\"my-toprofileid_displayname\",\n labels={\n \"foo\": \"bar\",\n },\n cloudsql=gcp.databasemigrationservice.ConnectionProfileCloudsqlArgs(\n settings=gcp.databasemigrationservice.ConnectionProfileCloudsqlSettingsArgs(\n database_version=\"MYSQL_5_7\",\n user_labels={\n \"cloudfoo\": \"cloudbar\",\n },\n tier=\"db-n1-standard-1\",\n edition=\"ENTERPRISE\",\n storage_auto_resize_limit=\"0\",\n activation_policy=\"ALWAYS\",\n ip_config=gcp.databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs(\n enable_ipv4=True,\n require_ssl=True,\n ),\n auto_storage_increase=True,\n data_disk_type=\"PD_HDD\",\n data_disk_size_gb=\"11\",\n zone=\"us-central1-b\",\n source_id=f\"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n root_password=\"testpasscloudsql\",\n ),\n ),\n opts=pulumi.ResourceOptions(depends_on=[cloudsqlprofile]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudsqldb = new Gcp.Sql.DatabaseInstance(\"cloudsqldb\", new()\n {\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sqlClientCert\", new()\n {\n CommonName = \"my-cert\",\n Instance = cloudsqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n cloudsqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldbUser\", new()\n {\n Instance = cloudsqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqlClientCert,\n },\n });\n\n var cloudsqlprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-fromprofileid\",\n DisplayName = \"my-fromprofileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n Host = cloudsqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqldbUser,\n },\n });\n\n var cloudsqlprofileDestination = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofileDestination\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-toprofileid\",\n DisplayName = \"my-toprofileid_displayname\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Cloudsql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlArgs\n {\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsArgs\n {\n DatabaseVersion = \"MYSQL_5_7\",\n UserLabels = \n {\n { \"cloudfoo\", \"cloudbar\" },\n },\n Tier = \"db-n1-standard-1\",\n Edition = \"ENTERPRISE\",\n StorageAutoResizeLimit = \"0\",\n ActivationPolicy = \"ALWAYS\",\n IpConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs\n {\n EnableIpv4 = true,\n RequireSsl = true,\n },\n AutoStorageIncrease = true,\n DataDiskType = \"PD_HDD\",\n DataDiskSizeGb = \"11\",\n Zone = \"us-central1-b\",\n SourceId = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n RootPassword = \"testpasscloudsql\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n cloudsqlprofile,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqldb, err := sql.NewDatabaseInstance(ctx, \"cloudsqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sqlClientCert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: cloudsqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldbUser\", \u0026sql.UserArgs{\n\t\t\tInstance: cloudsqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqlprofile, err := databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-fromprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-fromprofileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tHost: cloudsqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfileMysqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofileDestination\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-toprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-toprofileid_displayname\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudsql: \u0026databasemigrationservice.ConnectionProfileCloudsqlArgs{\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsArgs{\n\t\t\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"cloudfoo\": pulumi.String(\"cloudbar\"),\n\t\t\t\t\t},\n\t\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\t\tEdition: pulumi.String(\"ENTERPRISE\"),\n\t\t\t\t\tStorageAutoResizeLimit: pulumi.String(\"0\"),\n\t\t\t\t\tActivationPolicy: pulumi.String(\"ALWAYS\"),\n\t\t\t\t\tIpConfig: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs{\n\t\t\t\t\t\tEnableIpv4: pulumi.Bool(true),\n\t\t\t\t\t\tRequireSsl: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tAutoStorageIncrease: pulumi.Bool(true),\n\t\t\t\t\tDataDiskType: pulumi.String(\"PD_HDD\"),\n\t\t\t\t\tDataDiskSizeGb: pulumi.String(\"11\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tSourceId: pulumi.String(fmt.Sprintf(\"projects/%v/locations/us-central1/connectionProfiles/my-fromprofileid\", project.ProjectId)),\n\t\t\t\t\tRootPassword: pulumi.String(\"testpasscloudsql\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqlprofile,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlSslArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudsqldb = new DatabaseInstance(\"cloudsqldb\", DatabaseInstanceArgs.builder() \n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder() \n .commonName(\"my-cert\")\n .instance(cloudsqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder() \n .instance(cloudsqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var cloudsqlprofile = new ConnectionProfile(\"cloudsqlprofile\", ConnectionProfileArgs.builder() \n .location(\"us-central1\")\n .connectionProfileId(\"my-fromprofileid\")\n .displayName(\"my-fromprofileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .host(cloudsqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfileMysqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n var cloudsqlprofileDestination = new ConnectionProfile(\"cloudsqlprofileDestination\", ConnectionProfileArgs.builder() \n .location(\"us-central1\")\n .connectionProfileId(\"my-toprofileid\")\n .displayName(\"my-toprofileid_displayname\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudsql(ConnectionProfileCloudsqlArgs.builder()\n .settings(ConnectionProfileCloudsqlSettingsArgs.builder()\n .databaseVersion(\"MYSQL_5_7\")\n .userLabels(Map.of(\"cloudfoo\", \"cloudbar\"))\n .tier(\"db-n1-standard-1\")\n .edition(\"ENTERPRISE\")\n .storageAutoResizeLimit(\"0\")\n .activationPolicy(\"ALWAYS\")\n .ipConfig(ConnectionProfileCloudsqlSettingsIpConfigArgs.builder()\n .enableIpv4(true)\n .requireSsl(true)\n .build())\n .autoStorageIncrease(true)\n .dataDiskType(\"PD_HDD\")\n .dataDiskSizeGb(\"11\")\n .zone(\"us-central1-b\")\n .sourceId(String.format(\"projects/%s/locations/us-central1/connectionProfiles/my-fromprofileid\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .rootPassword(\"testpasscloudsql\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqlprofile)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloudsqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n properties:\n commonName: my-cert\n instance: ${cloudsqldb.name}\n options:\n dependson:\n - ${cloudsqldb}\n sqldbUser:\n type: gcp:sql:User\n properties:\n instance: ${cloudsqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n cloudsqlprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-fromprofileid\n displayName: my-fromprofileid_display\n labels:\n foo: bar\n mysql:\n host: ${cloudsqldb.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n cloudsqlprofileDestination:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-toprofileid\n displayName: my-toprofileid_displayname\n labels:\n foo: bar\n cloudsql:\n settings:\n databaseVersion: MYSQL_5_7\n userLabels:\n cloudfoo: cloudbar\n tier: db-n1-standard-1\n edition: ENTERPRISE\n storageAutoResizeLimit: '0'\n activationPolicy: ALWAYS\n ipConfig:\n enableIpv4: true\n requireSsl: true\n autoStorageIncrease: true\n dataDiskType: PD_HDD\n dataDiskSizeGb: '11'\n zone: us-central1-b\n sourceId: projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid\n rootPassword: testpasscloudsql\n options:\n dependson:\n - ${cloudsqlprofile}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n{{% /example %}}\n{{% example %}}\n### Database Migration Service Connection Profile Postgres\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst postgresqldb = new gcp.sql.DatabaseInstance(\"postgresqldb\", {\n databaseVersion: \"POSTGRES_12\",\n settings: {\n tier: \"db-custom-2-13312\",\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sqlClientCert\", {\n commonName: \"my-cert\",\n instance: postgresqldb.name,\n}, {\n dependsOn: [postgresqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldbUser\", {\n instance: postgresqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst postgresprofile = new gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: postgresqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 5432,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npostgresqldb = gcp.sql.DatabaseInstance(\"postgresqldb\",\n database_version=\"POSTGRES_12\",\n settings=gcp.sql.DatabaseInstanceSettingsArgs(\n tier=\"db-custom-2-13312\",\n ),\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sqlClientCert\",\n common_name=\"my-cert\",\n instance=postgresqldb.name,\n opts=pulumi.ResourceOptions(depends_on=[postgresqldb]))\nsqldb_user = gcp.sql.User(\"sqldbUser\",\n instance=postgresqldb.name,\n password=\"my-password\",\n opts=pulumi.ResourceOptions(depends_on=[sql_client_cert]))\npostgresprofile = gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql=gcp.databasemigrationservice.ConnectionProfilePostgresqlArgs(\n host=postgresqldb.ip_addresses[0].ip_address,\n port=5432,\n username=sqldb_user.name,\n password=sqldb_user.password,\n ssl=gcp.databasemigrationservice.ConnectionProfilePostgresqlSslArgs(\n client_key=sql_client_cert.private_key,\n client_certificate=sql_client_cert.cert,\n ca_certificate=sql_client_cert.server_ca_cert,\n ),\n cloud_sql_id=\"my-database\",\n ),\n opts=pulumi.ResourceOptions(depends_on=[sqldb_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgresqldb = new Gcp.Sql.DatabaseInstance(\"postgresqldb\", new()\n {\n DatabaseVersion = \"POSTGRES_12\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sqlClientCert\", new()\n {\n CommonName = \"my-cert\",\n Instance = postgresqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n postgresqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldbUser\", new()\n {\n Instance = postgresqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqlClientCert,\n },\n });\n\n var postgresprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"postgresprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = postgresqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 5432,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n sqldbUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgresqldb, err := sql.NewDatabaseInstance(ctx, \"postgresqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_12\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sqlClientCert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: postgresqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpostgresqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldbUser\", \u0026sql.UserArgs{\n\t\t\tInstance: postgresqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"postgresprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: postgresqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(5432),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var postgresqldb = new DatabaseInstance(\"postgresqldb\", DatabaseInstanceArgs.builder() \n .databaseVersion(\"POSTGRES_12\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder() \n .commonName(\"my-cert\")\n .instance(postgresqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(postgresqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder() \n .instance(postgresqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var postgresprofile = new ConnectionProfile(\"postgresprofile\", ConnectionProfileArgs.builder() \n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(postgresqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(5432)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgresqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n databaseVersion: POSTGRES_12\n settings:\n tier: db-custom-2-13312\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n properties:\n commonName: my-cert\n instance: ${postgresqldb.name}\n options:\n dependson:\n - ${postgresqldb}\n sqldbUser:\n type: gcp:sql:User\n properties:\n instance: ${postgresqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n postgresprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n postgresql:\n host: ${postgresqldb.ipAddresses[0].ipAddress}\n port: 5432\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n ", "properties": { "alloydb": { "$ref": "#/types/gcp:databasemigrationservice/ConnectionProfileAlloydb:ConnectionProfileAlloydb", @@ -136547,7 +137200,7 @@ } }, "gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType": { - "description": "Allows creation of custom info types.\n\n\nTo get more information about StoredInfoType, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.storedInfoTypes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-stored-infotypes)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dlp Stored Info Type Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionStoredInfoType(\"basic\", {\n description: \"Description\",\n displayName: \"Displayname\",\n parent: \"projects/my-project-name\",\n regex: {\n groupIndexes: [2],\n pattern: \"patient\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionStoredInfoType(\"basic\",\n description=\"Description\",\n display_name=\"Displayname\",\n parent=\"projects/my-project-name\",\n regex=gcp.dataloss.PreventionStoredInfoTypeRegexArgs(\n group_indexes=[2],\n pattern=\"patient\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionStoredInfoType(\"basic\", new()\n {\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Parent = \"projects/my-project-name\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n GroupIndexes = new[]\n {\n 2,\n },\n Pattern = \"patient\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionStoredInfoType(ctx, \"basic\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeRegexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionStoredInfoType(\"basic\", PreventionStoredInfoTypeArgs.builder() \n .description(\"Description\")\n .displayName(\"Displayname\")\n .parent(\"projects/my-project-name\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .groupIndexes(2)\n .pattern(\"patient\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n description: Description\n displayName: Displayname\n parent: projects/my-project-name\n regex:\n groupIndexes:\n - 2\n pattern: patient\n```\n{{% /example %}}\n{{% example %}}\n### Dlp Stored Info Type Dictionary\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dictionary = new gcp.dataloss.PreventionStoredInfoType(\"dictionary\", {\n description: \"Description\",\n dictionary: {\n wordList: {\n words: [\n \"word\",\n \"word2\",\n ],\n },\n },\n displayName: \"Displayname\",\n parent: \"projects/my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndictionary = gcp.dataloss.PreventionStoredInfoType(\"dictionary\",\n description=\"Description\",\n dictionary=gcp.dataloss.PreventionStoredInfoTypeDictionaryArgs(\n word_list=gcp.dataloss.PreventionStoredInfoTypeDictionaryWordListArgs(\n words=[\n \"word\",\n \"word2\",\n ],\n ),\n ),\n display_name=\"Displayname\",\n parent=\"projects/my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dictionary = new Gcp.DataLoss.PreventionStoredInfoType(\"dictionary\", new()\n {\n Description = \"Description\",\n Dictionary = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeDictionaryArgs\n {\n WordList = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeDictionaryWordListArgs\n {\n Words = new[]\n {\n \"word\",\n \"word2\",\n },\n },\n },\n DisplayName = \"Displayname\",\n Parent = \"projects/my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionStoredInfoType(ctx, \"dictionary\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDictionary: \u0026dataloss.PreventionStoredInfoTypeDictionaryArgs{\n\t\t\t\tWordList: \u0026dataloss.PreventionStoredInfoTypeDictionaryWordListArgs{\n\t\t\t\t\tWords: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"word\"),\n\t\t\t\t\t\tpulumi.String(\"word2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeDictionaryArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeDictionaryWordListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dictionary = new PreventionStoredInfoType(\"dictionary\", PreventionStoredInfoTypeArgs.builder() \n .description(\"Description\")\n .dictionary(PreventionStoredInfoTypeDictionaryArgs.builder()\n .wordList(PreventionStoredInfoTypeDictionaryWordListArgs.builder()\n .words( \n \"word\",\n \"word2\")\n .build())\n .build())\n .displayName(\"Displayname\")\n .parent(\"projects/my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dictionary:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n description: Description\n dictionary:\n wordList:\n words:\n - word\n - word2\n displayName: Displayname\n parent: projects/my-project-name\n```\n{{% /example %}}\n{{% example %}}\n### Dlp Stored Info Type Large Custom Dictionary\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n location: \"US\",\n forceDestroy: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/dlp/words.txt\"),\n});\nconst large = new gcp.dataloss.PreventionStoredInfoType(\"large\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n largeCustomDictionary: {\n cloudStorageFileSet: {\n url: pulumi.interpolate`gs://${bucket.name}/${object.name}`,\n },\n outputPath: {\n path: pulumi.interpolate`gs://${bucket.name}/output/dictionary.txt`,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n location=\"US\",\n force_destroy=True)\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/dlp/words.txt\"))\nlarge = gcp.dataloss.PreventionStoredInfoType(\"large\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n large_custom_dictionary=gcp.dataloss.PreventionStoredInfoTypeLargeCustomDictionaryArgs(\n cloud_storage_file_set=gcp.dataloss.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs(\n url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"gs://{bucket_name}/{object_name}\"),\n ),\n output_path=gcp.dataloss.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs(\n path=bucket.name.apply(lambda name: f\"gs://{name}/output/dictionary.txt\"),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/dlp/words.txt\"),\n });\n\n var large = new Gcp.DataLoss.PreventionStoredInfoType(\"large\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n LargeCustomDictionary = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeLargeCustomDictionaryArgs\n {\n CloudStorageFileSet = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs\n {\n Url = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"gs://{bucketName}/{objectName}\";\n }),\n },\n OutputPath = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs\n {\n Path = bucket.Name.Apply(name =\u003e $\"gs://{name}/output/dictionary.txt\"),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/dlp/words.txt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataloss.NewPreventionStoredInfoType(ctx, \"large\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tLargeCustomDictionary: \u0026dataloss.PreventionStoredInfoTypeLargeCustomDictionaryArgs{\n\t\t\t\tCloudStorageFileSet: \u0026dataloss.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs{\n\t\t\t\t\tUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tOutputPath: \u0026dataloss.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs{\n\t\t\t\t\tPath: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/output/dictionary.txt\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeLargeCustomDictionaryArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/dlp/words.txt\"))\n .build());\n\n var large = new PreventionStoredInfoType(\"large\", PreventionStoredInfoTypeArgs.builder() \n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .largeCustomDictionary(PreventionStoredInfoTypeLargeCustomDictionaryArgs.builder()\n .cloudStorageFileSet(PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs.builder()\n .url(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,objectName);\n }))\n .build())\n .outputPath(PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs.builder()\n .path(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/output/dictionary.txt\", name)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n large:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n largeCustomDictionary:\n cloudStorageFileSet:\n url: gs://${bucket.name}/${object.name}\n outputPath:\n path: gs://${bucket.name}/output/dictionary.txt\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n forceDestroy: true\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/dlp/words.txt\n```\n{{% /example %}}\n{{% example %}}\n### Dlp Stored Info Type With Id\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withStoredInfoTypeId = new gcp.dataloss.PreventionStoredInfoType(\"withStoredInfoTypeId\", {\n description: \"Description\",\n displayName: \"Displayname\",\n parent: \"projects/my-project-name\",\n regex: {\n groupIndexes: [2],\n pattern: \"patient\",\n },\n storedInfoTypeId: \"id-\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_stored_info_type_id = gcp.dataloss.PreventionStoredInfoType(\"withStoredInfoTypeId\",\n description=\"Description\",\n display_name=\"Displayname\",\n parent=\"projects/my-project-name\",\n regex=gcp.dataloss.PreventionStoredInfoTypeRegexArgs(\n group_indexes=[2],\n pattern=\"patient\",\n ),\n stored_info_type_id=\"id-\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var withStoredInfoTypeId = new Gcp.DataLoss.PreventionStoredInfoType(\"withStoredInfoTypeId\", new()\n {\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Parent = \"projects/my-project-name\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n GroupIndexes = new[]\n {\n 2,\n },\n Pattern = \"patient\",\n },\n StoredInfoTypeId = \"id-\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionStoredInfoType(ctx, \"withStoredInfoTypeId\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t},\n\t\t\tStoredInfoTypeId: pulumi.String(\"id-\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeRegexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var withStoredInfoTypeId = new PreventionStoredInfoType(\"withStoredInfoTypeId\", PreventionStoredInfoTypeArgs.builder() \n .description(\"Description\")\n .displayName(\"Displayname\")\n .parent(\"projects/my-project-name\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .groupIndexes(2)\n .pattern(\"patient\")\n .build())\n .storedInfoTypeId(\"id-\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withStoredInfoTypeId:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n description: Description\n displayName: Displayname\n parent: projects/my-project-name\n regex:\n groupIndexes:\n - 2\n pattern: patient\n storedInfoTypeId: id-\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nStoredInfoType can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/storedInfoTypes/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/{{name}}\n```\n\n ", + "description": "Allows creation of custom info types.\n\n\nTo get more information about StoredInfoType, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.storedInfoTypes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-stored-infotypes)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dlp Stored Info Type Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionStoredInfoType(\"basic\", {\n description: \"Description\",\n displayName: \"Displayname\",\n parent: \"projects/my-project-name\",\n regex: {\n groupIndexes: [2],\n pattern: \"patient\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionStoredInfoType(\"basic\",\n description=\"Description\",\n display_name=\"Displayname\",\n parent=\"projects/my-project-name\",\n regex=gcp.dataloss.PreventionStoredInfoTypeRegexArgs(\n group_indexes=[2],\n pattern=\"patient\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionStoredInfoType(\"basic\", new()\n {\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Parent = \"projects/my-project-name\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n GroupIndexes = new[]\n {\n 2,\n },\n Pattern = \"patient\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionStoredInfoType(ctx, \"basic\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeRegexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionStoredInfoType(\"basic\", PreventionStoredInfoTypeArgs.builder() \n .description(\"Description\")\n .displayName(\"Displayname\")\n .parent(\"projects/my-project-name\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .groupIndexes(2)\n .pattern(\"patient\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n description: Description\n displayName: Displayname\n parent: projects/my-project-name\n regex:\n groupIndexes:\n - 2\n pattern: patient\n```\n{{% /example %}}\n{{% example %}}\n### Dlp Stored Info Type Dictionary\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dictionary = new gcp.dataloss.PreventionStoredInfoType(\"dictionary\", {\n description: \"Description\",\n dictionary: {\n wordList: {\n words: [\n \"word\",\n \"word2\",\n ],\n },\n },\n displayName: \"Displayname\",\n parent: \"projects/my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndictionary = gcp.dataloss.PreventionStoredInfoType(\"dictionary\",\n description=\"Description\",\n dictionary=gcp.dataloss.PreventionStoredInfoTypeDictionaryArgs(\n word_list=gcp.dataloss.PreventionStoredInfoTypeDictionaryWordListArgs(\n words=[\n \"word\",\n \"word2\",\n ],\n ),\n ),\n display_name=\"Displayname\",\n parent=\"projects/my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dictionary = new Gcp.DataLoss.PreventionStoredInfoType(\"dictionary\", new()\n {\n Description = \"Description\",\n Dictionary = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeDictionaryArgs\n {\n WordList = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeDictionaryWordListArgs\n {\n Words = new[]\n {\n \"word\",\n \"word2\",\n },\n },\n },\n DisplayName = \"Displayname\",\n Parent = \"projects/my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionStoredInfoType(ctx, \"dictionary\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDictionary: \u0026dataloss.PreventionStoredInfoTypeDictionaryArgs{\n\t\t\t\tWordList: \u0026dataloss.PreventionStoredInfoTypeDictionaryWordListArgs{\n\t\t\t\t\tWords: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"word\"),\n\t\t\t\t\t\tpulumi.String(\"word2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeDictionaryArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeDictionaryWordListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dictionary = new PreventionStoredInfoType(\"dictionary\", PreventionStoredInfoTypeArgs.builder() \n .description(\"Description\")\n .dictionary(PreventionStoredInfoTypeDictionaryArgs.builder()\n .wordList(PreventionStoredInfoTypeDictionaryWordListArgs.builder()\n .words( \n \"word\",\n \"word2\")\n .build())\n .build())\n .displayName(\"Displayname\")\n .parent(\"projects/my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dictionary:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n description: Description\n dictionary:\n wordList:\n words:\n - word\n - word2\n displayName: Displayname\n parent: projects/my-project-name\n```\n{{% /example %}}\n{{% example %}}\n### Dlp Stored Info Type Large Custom Dictionary\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n location: \"US\",\n forceDestroy: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/words.txt\"),\n});\nconst large = new gcp.dataloss.PreventionStoredInfoType(\"large\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n largeCustomDictionary: {\n cloudStorageFileSet: {\n url: pulumi.interpolate`gs://${bucket.name}/${object.name}`,\n },\n outputPath: {\n path: pulumi.interpolate`gs://${bucket.name}/output/dictionary.txt`,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n location=\"US\",\n force_destroy=True)\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/words.txt\"))\nlarge = gcp.dataloss.PreventionStoredInfoType(\"large\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n large_custom_dictionary=gcp.dataloss.PreventionStoredInfoTypeLargeCustomDictionaryArgs(\n cloud_storage_file_set=gcp.dataloss.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs(\n url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"gs://{bucket_name}/{object_name}\"),\n ),\n output_path=gcp.dataloss.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs(\n path=bucket.name.apply(lambda name: f\"gs://{name}/output/dictionary.txt\"),\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/words.txt\"),\n });\n\n var large = new Gcp.DataLoss.PreventionStoredInfoType(\"large\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n LargeCustomDictionary = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeLargeCustomDictionaryArgs\n {\n CloudStorageFileSet = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs\n {\n Url = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"gs://{bucketName}/{objectName}\";\n }),\n },\n OutputPath = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs\n {\n Path = bucket.Name.Apply(name =\u003e $\"gs://{name}/output/dictionary.txt\"),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/words.txt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataloss.NewPreventionStoredInfoType(ctx, \"large\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tLargeCustomDictionary: \u0026dataloss.PreventionStoredInfoTypeLargeCustomDictionaryArgs{\n\t\t\t\tCloudStorageFileSet: \u0026dataloss.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs{\n\t\t\t\t\tUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tOutputPath: \u0026dataloss.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs{\n\t\t\t\t\tPath: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/output/dictionary.txt\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeLargeCustomDictionaryArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/words.txt\"))\n .build());\n\n var large = new PreventionStoredInfoType(\"large\", PreventionStoredInfoTypeArgs.builder() \n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .largeCustomDictionary(PreventionStoredInfoTypeLargeCustomDictionaryArgs.builder()\n .cloudStorageFileSet(PreventionStoredInfoTypeLargeCustomDictionaryCloudStorageFileSetArgs.builder()\n .url(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,objectName);\n }))\n .build())\n .outputPath(PreventionStoredInfoTypeLargeCustomDictionaryOutputPathArgs.builder()\n .path(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/output/dictionary.txt\", name)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n large:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n largeCustomDictionary:\n cloudStorageFileSet:\n url: gs://${bucket.name}/${object.name}\n outputPath:\n path: gs://${bucket.name}/output/dictionary.txt\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n forceDestroy: true\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/words.txt\n```\n{{% /example %}}\n{{% example %}}\n### Dlp Stored Info Type With Id\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withStoredInfoTypeId = new gcp.dataloss.PreventionStoredInfoType(\"withStoredInfoTypeId\", {\n description: \"Description\",\n displayName: \"Displayname\",\n parent: \"projects/my-project-name\",\n regex: {\n groupIndexes: [2],\n pattern: \"patient\",\n },\n storedInfoTypeId: \"id-\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_stored_info_type_id = gcp.dataloss.PreventionStoredInfoType(\"withStoredInfoTypeId\",\n description=\"Description\",\n display_name=\"Displayname\",\n parent=\"projects/my-project-name\",\n regex=gcp.dataloss.PreventionStoredInfoTypeRegexArgs(\n group_indexes=[2],\n pattern=\"patient\",\n ),\n stored_info_type_id=\"id-\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var withStoredInfoTypeId = new Gcp.DataLoss.PreventionStoredInfoType(\"withStoredInfoTypeId\", new()\n {\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Parent = \"projects/my-project-name\",\n Regex = new Gcp.DataLoss.Inputs.PreventionStoredInfoTypeRegexArgs\n {\n GroupIndexes = new[]\n {\n 2,\n },\n Pattern = \"patient\",\n },\n StoredInfoTypeId = \"id-\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionStoredInfoType(ctx, \"withStoredInfoTypeId\", \u0026dataloss.PreventionStoredInfoTypeArgs{\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRegex: \u0026dataloss.PreventionStoredInfoTypeRegexArgs{\n\t\t\t\tGroupIndexes: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t},\n\t\t\tStoredInfoTypeId: pulumi.String(\"id-\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoType;\nimport com.pulumi.gcp.dataloss.PreventionStoredInfoTypeArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionStoredInfoTypeRegexArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var withStoredInfoTypeId = new PreventionStoredInfoType(\"withStoredInfoTypeId\", PreventionStoredInfoTypeArgs.builder() \n .description(\"Description\")\n .displayName(\"Displayname\")\n .parent(\"projects/my-project-name\")\n .regex(PreventionStoredInfoTypeRegexArgs.builder()\n .groupIndexes(2)\n .pattern(\"patient\")\n .build())\n .storedInfoTypeId(\"id-\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withStoredInfoTypeId:\n type: gcp:dataloss:PreventionStoredInfoType\n properties:\n description: Description\n displayName: Displayname\n parent: projects/my-project-name\n regex:\n groupIndexes:\n - 2\n pattern: patient\n storedInfoTypeId: id-\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nStoredInfoType can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/storedInfoTypes/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dataloss/preventionStoredInfoType:PreventionStoredInfoType default {{parent}}/{{name}}\n```\n\n ", "properties": { "description": { "type": "string", @@ -141415,7 +142068,7 @@ } }, "gcp:dataproc/metastoreService:MetastoreService": { - "description": "A managed metastore service that serves metadata queries.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/dataproc-metastore/docs/reference/rest/v1/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc-metastore/docs/overview)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dataproc Metastore Service Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n hiveMetastoreConfig: {\n version: \"2.3.6\",\n },\n location: \"us-central1\",\n maintenanceWindow: {\n dayOfWeek: \"SUNDAY\",\n hourOfDay: 2,\n },\n port: 9080,\n serviceId: \"metastore-srv\",\n tier: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.dataproc.MetastoreService(\"default\",\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"2.3.6\",\n ),\n location=\"us-central1\",\n maintenance_window=gcp.dataproc.MetastoreServiceMaintenanceWindowArgs(\n day_of_week=\"SUNDAY\",\n hour_of_day=2,\n ),\n port=9080,\n service_id=\"metastore-srv\",\n tier=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"2.3.6\",\n },\n Location = \"us-central1\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n DayOfWeek = \"SUNDAY\",\n HourOfDay = 2,\n },\n Port = 9080,\n ServiceId = \"metastore-srv\",\n Tier = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.3.6\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t},\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tServiceId: pulumi.String(\"metastore-srv\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new MetastoreService(\"default\", MetastoreServiceArgs.builder() \n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"2.3.6\")\n .build())\n .location(\"us-central1\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"SUNDAY\")\n .hourOfDay(2)\n .build())\n .port(9080)\n .serviceId(\"metastore-srv\")\n .tier(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n hiveMetastoreConfig:\n version: 2.3.6\n location: us-central1\n maintenanceWindow:\n dayOfWeek: SUNDAY\n hourOfDay: 2\n port: 9080\n serviceId: metastore-srv\n tier: DEVELOPER\n```\n{{% /example %}}\n{{% example %}}\n### Dataproc Metastore Service Cmek Example\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"keyRing\", {location: \"us-central1\"}, {\n provider: google_beta,\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"cryptoKey\", {\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n}, {\n provider: google_beta,\n});\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"example-service\",\n location: \"us-central1\",\n encryptionConfig: {\n kmsKey: cryptoKey.id,\n },\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"keyRing\", location=\"us-central1\",\nopts=pulumi.ResourceOptions(provider=google_beta))\ncrypto_key = gcp.kms.CryptoKey(\"cryptoKey\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\",\n opts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"example-service\",\n location=\"us-central1\",\n encryption_config=gcp.dataproc.MetastoreServiceEncryptionConfigArgs(\n kms_key=crypto_key.id,\n ),\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"3.1.2\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"keyRing\", new()\n {\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"cryptoKey\", new()\n {\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"example-service\",\n Location = \"us-central1\",\n EncryptionConfig = new Gcp.Dataproc.Inputs.MetastoreServiceEncryptionConfigArgs\n {\n KmsKey = cryptoKey.Id,\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"keyRing\", \u0026kms.KeyRingArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"cryptoKey\", \u0026kms.CryptoKeyArgs{\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"example-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEncryptionConfig: \u0026dataproc.MetastoreServiceEncryptionConfigArgs{\n\t\t\t\tKmsKey: cryptoKey.ID(),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceEncryptionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder() \n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder() \n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new MetastoreService(\"default\", MetastoreServiceArgs.builder() \n .serviceId(\"example-service\")\n .location(\"us-central1\")\n .encryptionConfig(MetastoreServiceEncryptionConfigArgs.builder()\n .kmsKey(cryptoKey.id())\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: example-service\n location: us-central1\n encryptionConfig:\n kmsKey: ${cryptoKey.id}\n hiveMetastoreConfig:\n version: 3.1.2\n cryptoKey:\n type: gcp:kms:CryptoKey\n properties:\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n options:\n provider: ${[\"google-beta\"]}\n keyRing:\n type: gcp:kms:KeyRing\n properties:\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Dataproc Metastore Service Private Service Connect\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {autoCreateSubnetworks: false});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n region: \"us-central1\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/22\",\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-srv\",\n location: \"us-central1\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n networkConfig: {\n consumers: [{\n subnetwork: subnet.id,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n region=\"us-central1\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/22\",\n private_ip_google_access=True)\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-srv\",\n location=\"us-central1\",\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"3.1.2\",\n ),\n network_config=gcp.dataproc.MetastoreServiceNetworkConfigArgs(\n consumers=[gcp.dataproc.MetastoreServiceNetworkConfigConsumerArgs(\n subnetwork=subnet.id,\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var net = new Gcp.Compute.Network(\"net\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Region = \"us-central1\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/22\",\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-srv\",\n Location = \"us-central1\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n NetworkConfig = new Gcp.Dataproc.Inputs.MetastoreServiceNetworkConfigArgs\n {\n Consumers = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreServiceNetworkConfigConsumerArgs\n {\n Subnetwork = subnet.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"metastore-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026dataproc.MetastoreServiceNetworkConfigArgs{\n\t\t\t\tConsumers: dataproc.MetastoreServiceNetworkConfigConsumerArray{\n\t\t\t\t\t\u0026dataproc.MetastoreServiceNetworkConfigConsumerArgs{\n\t\t\t\t\t\tSubnetwork: subnet.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceNetworkConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var net = new Network(\"net\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder() \n .region(\"us-central1\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/22\")\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new MetastoreService(\"default\", MetastoreServiceArgs.builder() \n .serviceId(\"metastore-srv\")\n .location(\"us-central1\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .networkConfig(MetastoreServiceNetworkConfigArgs.builder()\n .consumers(MetastoreServiceNetworkConfigConsumerArgs.builder()\n .subnetwork(subnet.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n region: us-central1\n network: ${net.id}\n ipCidrRange: 10.0.0.0/22\n privateIpGoogleAccess: true\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: metastore-srv\n location: us-central1\n hiveMetastoreConfig:\n version: 3.1.2\n networkConfig:\n consumers:\n - subnetwork: ${subnet.id}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dataproc/metastoreService:MetastoreService default projects/{{project}}/locations/{{location}}/services/{{service_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{project}}/{{location}}/{{service_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{location}}/{{service_id}}\n```\n\n ", + "description": "A managed metastore service that serves metadata queries.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/dataproc-metastore/docs/reference/rest/v1/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc-metastore/docs/overview)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dataproc Metastore Service Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n hiveMetastoreConfig: {\n version: \"2.3.6\",\n },\n location: \"us-central1\",\n maintenanceWindow: {\n dayOfWeek: \"SUNDAY\",\n hourOfDay: 2,\n },\n port: 9080,\n serviceId: \"metastore-srv\",\n tier: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.dataproc.MetastoreService(\"default\",\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"2.3.6\",\n ),\n location=\"us-central1\",\n maintenance_window=gcp.dataproc.MetastoreServiceMaintenanceWindowArgs(\n day_of_week=\"SUNDAY\",\n hour_of_day=2,\n ),\n port=9080,\n service_id=\"metastore-srv\",\n tier=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"2.3.6\",\n },\n Location = \"us-central1\",\n MaintenanceWindow = new Gcp.Dataproc.Inputs.MetastoreServiceMaintenanceWindowArgs\n {\n DayOfWeek = \"SUNDAY\",\n HourOfDay = 2,\n },\n Port = 9080,\n ServiceId = \"metastore-srv\",\n Tier = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"2.3.6\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMaintenanceWindow: \u0026dataproc.MetastoreServiceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"SUNDAY\"),\n\t\t\t\tHourOfDay: pulumi.Int(2),\n\t\t\t},\n\t\t\tPort: pulumi.Int(9080),\n\t\t\tServiceId: pulumi.String(\"metastore-srv\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new MetastoreService(\"default\", MetastoreServiceArgs.builder() \n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"2.3.6\")\n .build())\n .location(\"us-central1\")\n .maintenanceWindow(MetastoreServiceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"SUNDAY\")\n .hourOfDay(2)\n .build())\n .port(9080)\n .serviceId(\"metastore-srv\")\n .tier(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n hiveMetastoreConfig:\n version: 2.3.6\n location: us-central1\n maintenanceWindow:\n dayOfWeek: SUNDAY\n hourOfDay: 2\n port: 9080\n serviceId: metastore-srv\n tier: DEVELOPER\n```\n{{% /example %}}\n{{% example %}}\n### Dataproc Metastore Service Cmek Example\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"keyRing\", {location: \"us-central1\"}, {\n provider: google_beta,\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"cryptoKey\", {\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n}, {\n provider: google_beta,\n});\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"example-service\",\n location: \"us-central1\",\n encryptionConfig: {\n kmsKey: cryptoKey.id,\n },\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"keyRing\", location=\"us-central1\",\nopts=pulumi.ResourceOptions(provider=google_beta))\ncrypto_key = gcp.kms.CryptoKey(\"cryptoKey\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\",\n opts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"example-service\",\n location=\"us-central1\",\n encryption_config=gcp.dataproc.MetastoreServiceEncryptionConfigArgs(\n kms_key=crypto_key.id,\n ),\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"3.1.2\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"keyRing\", new()\n {\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"cryptoKey\", new()\n {\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"example-service\",\n Location = \"us-central1\",\n EncryptionConfig = new Gcp.Dataproc.Inputs.MetastoreServiceEncryptionConfigArgs\n {\n KmsKey = cryptoKey.Id,\n },\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"keyRing\", \u0026kms.KeyRingArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"cryptoKey\", \u0026kms.CryptoKeyArgs{\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"example-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEncryptionConfig: \u0026dataproc.MetastoreServiceEncryptionConfigArgs{\n\t\t\t\tKmsKey: cryptoKey.ID(),\n\t\t\t},\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceEncryptionConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder() \n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder() \n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new MetastoreService(\"default\", MetastoreServiceArgs.builder() \n .serviceId(\"example-service\")\n .location(\"us-central1\")\n .encryptionConfig(MetastoreServiceEncryptionConfigArgs.builder()\n .kmsKey(cryptoKey.id())\n .build())\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: example-service\n location: us-central1\n encryptionConfig:\n kmsKey: ${cryptoKey.id}\n hiveMetastoreConfig:\n version: 3.1.2\n cryptoKey:\n type: gcp:kms:CryptoKey\n properties:\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n options:\n provider: ${[\"google-beta\"]}\n keyRing:\n type: gcp:kms:KeyRing\n properties:\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Dataproc Metastore Service Private Service Connect\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net = new gcp.compute.Network(\"net\", {autoCreateSubnetworks: false});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n region: \"us-central1\",\n network: net.id,\n ipCidrRange: \"10.0.0.0/22\",\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-srv\",\n location: \"us-central1\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n networkConfig: {\n consumers: [{\n subnetwork: subnet.id,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet = gcp.compute.Network(\"net\", auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n region=\"us-central1\",\n network=net.id,\n ip_cidr_range=\"10.0.0.0/22\",\n private_ip_google_access=True)\ndefault = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-srv\",\n location=\"us-central1\",\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"3.1.2\",\n ),\n network_config=gcp.dataproc.MetastoreServiceNetworkConfigArgs(\n consumers=[gcp.dataproc.MetastoreServiceNetworkConfigConsumerArgs(\n subnetwork=subnet.id,\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var net = new Gcp.Compute.Network(\"net\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Region = \"us-central1\",\n Network = net.Id,\n IpCidrRange = \"10.0.0.0/22\",\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-srv\",\n Location = \"us-central1\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n NetworkConfig = new Gcp.Dataproc.Inputs.MetastoreServiceNetworkConfigArgs\n {\n Consumers = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreServiceNetworkConfigConsumerArgs\n {\n Subnetwork = subnet.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnet, err := compute.NewNetwork(ctx, \"net\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: net.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"metastore-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026dataproc.MetastoreServiceNetworkConfigArgs{\n\t\t\t\tConsumers: dataproc.MetastoreServiceNetworkConfigConsumerArray{\n\t\t\t\t\t\u0026dataproc.MetastoreServiceNetworkConfigConsumerArgs{\n\t\t\t\t\t\tSubnetwork: subnet.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceNetworkConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var net = new Network(\"net\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder() \n .region(\"us-central1\")\n .network(net.id())\n .ipCidrRange(\"10.0.0.0/22\")\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new MetastoreService(\"default\", MetastoreServiceArgs.builder() \n .serviceId(\"metastore-srv\")\n .location(\"us-central1\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .networkConfig(MetastoreServiceNetworkConfigArgs.builder()\n .consumers(MetastoreServiceNetworkConfigConsumerArgs.builder()\n .subnetwork(subnet.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n net:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n region: us-central1\n network: ${net.id}\n ipCidrRange: 10.0.0.0/22\n privateIpGoogleAccess: true\n default:\n type: gcp:dataproc:MetastoreService\n properties:\n serviceId: metastore-srv\n location: us-central1\n hiveMetastoreConfig:\n version: 3.1.2\n networkConfig:\n consumers:\n - subnetwork: ${subnet.id}\n```\n{{% /example %}}\n{{% example %}}\n### Dataproc Metastore Service Dpms2\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dpms2 = new gcp.dataproc.MetastoreService(\"dpms2\", {\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n location: \"us-central1\",\n scalingConfig: {\n instanceSize: \"EXTRA_SMALL\",\n },\n serviceId: \"dpms2\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndpms2 = gcp.dataproc.MetastoreService(\"dpms2\",\n database_type=\"SPANNER\",\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"3.1.2\",\n ),\n location=\"us-central1\",\n scaling_config=gcp.dataproc.MetastoreServiceScalingConfigArgs(\n instance_size=\"EXTRA_SMALL\",\n ),\n service_id=\"dpms2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dpms2 = new Gcp.Dataproc.MetastoreService(\"dpms2\", new()\n {\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n Location = \"us-central1\",\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n InstanceSize = \"EXTRA_SMALL\",\n },\n ServiceId = \"dpms2\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewMetastoreService(ctx, \"dpms2\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tDatabaseType: pulumi.String(\"SPANNER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tInstanceSize: pulumi.String(\"EXTRA_SMALL\"),\n\t\t\t},\n\t\t\tServiceId: pulumi.String(\"dpms2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dpms2 = new MetastoreService(\"dpms2\", MetastoreServiceArgs.builder() \n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .location(\"us-central1\")\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .instanceSize(\"EXTRA_SMALL\")\n .build())\n .serviceId(\"dpms2\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dpms2:\n type: gcp:dataproc:MetastoreService\n properties:\n # DPMS 2 requires SPANNER database type, and does not require\n # // a maintenance window.\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n location: us-central1\n scalingConfig:\n instanceSize: EXTRA_SMALL\n serviceId: dpms2\n```\n{{% /example %}}\n{{% example %}}\n### Dataproc Metastore Service Dpms2 Scaling Factor\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dpms2ScalingFactor = new gcp.dataproc.MetastoreService(\"dpms2ScalingFactor\", {\n databaseType: \"SPANNER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n },\n location: \"us-central1\",\n scalingConfig: {\n scalingFactor: 2,\n },\n serviceId: \"dpms2sf\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndpms2_scaling_factor = gcp.dataproc.MetastoreService(\"dpms2ScalingFactor\",\n database_type=\"SPANNER\",\n hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs(\n version=\"3.1.2\",\n ),\n location=\"us-central1\",\n scaling_config=gcp.dataproc.MetastoreServiceScalingConfigArgs(\n scaling_factor=2,\n ),\n service_id=\"dpms2sf\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dpms2ScalingFactor = new Gcp.Dataproc.MetastoreService(\"dpms2ScalingFactor\", new()\n {\n DatabaseType = \"SPANNER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n },\n Location = \"us-central1\",\n ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs\n {\n ScalingFactor = 2,\n },\n ServiceId = \"dpms2sf\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewMetastoreService(ctx, \"dpms2ScalingFactor\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tDatabaseType: pulumi.String(\"SPANNER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tScalingConfig: \u0026dataproc.MetastoreServiceScalingConfigArgs{\n\t\t\t\tScalingFactor: pulumi.Float64(2),\n\t\t\t},\n\t\t\tServiceId: pulumi.String(\"dpms2sf\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dpms2ScalingFactor = new MetastoreService(\"dpms2ScalingFactor\", MetastoreServiceArgs.builder() \n .databaseType(\"SPANNER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .build())\n .location(\"us-central1\")\n .scalingConfig(MetastoreServiceScalingConfigArgs.builder()\n .scalingFactor(\"2\")\n .build())\n .serviceId(\"dpms2sf\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dpms2ScalingFactor:\n type: gcp:dataproc:MetastoreService\n properties:\n # DPMS 2 requires SPANNER database type, and does not require\n # // a maintenance window.\n databaseType: SPANNER\n hiveMetastoreConfig:\n version: 3.1.2\n location: us-central1\n scalingConfig:\n scalingFactor: '2'\n serviceId: dpms2sf\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nService can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dataproc/metastoreService:MetastoreService default projects/{{project}}/locations/{{location}}/services/{{service_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{project}}/{{location}}/{{service_id}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dataproc/metastoreService:MetastoreService default {{location}}/{{service_id}}\n```\n\n ", "properties": { "artifactGcsUri": { "type": "string", @@ -141480,6 +142133,10 @@ "type": "string", "description": "The release channel of the service. If unspecified, defaults to `STABLE`.\nDefault value is `STABLE`.\nPossible values are: `CANARY`, `STABLE`.\n" }, + "scalingConfig": { + "$ref": "#/types/gcp:dataproc/MetastoreServiceScalingConfig:MetastoreServiceScalingConfig", + "description": "Represents the scaling configuration of a metastore service.\nStructure is documented below.\n" + }, "serviceId": { "type": "string", "description": "The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),\nand hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between\n3 and 63 characters.\n\n\n- - -\n" @@ -141577,6 +142234,10 @@ "description": "The release channel of the service. If unspecified, defaults to `STABLE`.\nDefault value is `STABLE`.\nPossible values are: `CANARY`, `STABLE`.\n", "willReplaceOnChanges": true }, + "scalingConfig": { + "$ref": "#/types/gcp:dataproc/MetastoreServiceScalingConfig:MetastoreServiceScalingConfig", + "description": "Represents the scaling configuration of a metastore service.\nStructure is documented below.\n" + }, "serviceId": { "type": "string", "description": "The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),\nand hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between\n3 and 63 characters.\n\n\n- - -\n", @@ -141666,6 +142327,10 @@ "description": "The release channel of the service. If unspecified, defaults to `STABLE`.\nDefault value is `STABLE`.\nPossible values are: `CANARY`, `STABLE`.\n", "willReplaceOnChanges": true }, + "scalingConfig": { + "$ref": "#/types/gcp:dataproc/MetastoreServiceScalingConfig:MetastoreServiceScalingConfig", + "description": "Represents the scaling configuration of a metastore service.\nStructure is documented below.\n" + }, "serviceId": { "type": "string", "description": "The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),\nand hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between\n3 and 63 characters.\n\n\n- - -\n", @@ -145086,7 +145751,7 @@ } }, "gcp:dns/managedZone:ManagedZone": { - "description": "A zone is a subtree of the DNS namespace under one administrative\nresponsibility. A ManagedZone is a resource that represents a DNS zone\nhosted by the Cloud DNS service.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/dns/api/v1/managedZones)\n* How-to Guides\n * [Managing Zones](https://cloud.google.com/dns/zones/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dns Managed Zone Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_zone = new gcp.dns.ManagedZone(\"example-zone\", {\n description: \"Example DNS zone\",\n dnsName: \"my-domain.com.\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_zone = gcp.dns.ManagedZone(\"example-zone\",\n description=\"Example DNS zone\",\n dns_name=\"my-domain.com.\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_zone = new Gcp.Dns.ManagedZone(\"example-zone\", new()\n {\n Description = \"Example DNS zone\",\n DnsName = \"my-domain.com.\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewManagedZone(ctx, \"example-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example_zone = new ManagedZone(\"example-zone\", ManagedZoneArgs.builder() \n .description(\"Example DNS zone\")\n .dnsName(\"my-domain.com.\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-zone:\n type: gcp:dns:ManagedZone\n properties:\n description: Example DNS zone\n dnsName: my-domain.com.\n labels:\n foo: bar\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst network_2 = new gcp.compute.Network(\"network-2\", {autoCreateSubnetworks: false});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\", auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n ),\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_2.id,\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Forwarding\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst network_2 = new gcp.compute.Network(\"network-2\", {autoCreateSubnetworks: false});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n forwardingConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\", auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n ),\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_2.id,\n ),\n ],\n ),\n forwarding_config=gcp.dns.ManagedZoneForwardingConfigArgs(\n target_name_servers=[\n gcp.dns.ManagedZoneForwardingConfigTargetNameServerArgs(\n ipv4_address=\"172.16.1.10\",\n ),\n gcp.dns.ManagedZoneForwardingConfigTargetNameServerArgs(\n ipv4_address=\"172.16.1.20\",\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n ForwardingConfig = new Gcp.Dns.Inputs.ManagedZoneForwardingConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n },\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForwardingConfig: \u0026dns.ManagedZoneForwardingConfigArgs{\n\t\t\t\tTargetNameServers: dns.ManagedZoneForwardingConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneForwardingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .forwardingConfig(ManagedZoneForwardingConfigArgs.builder()\n .targetNameServers( \n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .build(),\n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n forwardingConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n - ipv4Address: 172.16.1.20\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Gke\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n network: network_1.name,\n ipCidrRange: \"10.0.36.0/24\",\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst cluster_1 = new gcp.container.Cluster(\"cluster-1\", {\n location: \"us-central1-c\",\n initialNodeCount: 1,\n networkingMode: \"VPC_NATIVE\",\n defaultSnatStatus: {\n disabled: true,\n },\n network: network_1.name,\n subnetwork: subnetwork_1.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n masterGlobalAccessConfig: {\n enabled: true,\n },\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n});\nconst private_zone_gke = new gcp.dns.ManagedZone(\"private-zone-gke\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network_1.id,\n }],\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n network=network_1.name,\n ip_cidr_range=\"10.0.36.0/24\",\n region=\"us-central1\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"pod\",\n ip_cidr_range=\"10.0.0.0/19\",\n ),\n gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"svc\",\n ip_cidr_range=\"10.0.32.0/22\",\n ),\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status=gcp.container.ClusterDefaultSnatStatusArgs(\n disabled=True,\n ),\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config=gcp.container.ClusterPrivateClusterConfigArgs(\n enable_private_endpoint=True,\n enable_private_nodes=True,\n master_ipv4_cidr_block=\"10.42.0.0/28\",\n master_global_access_config=gcp.container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs(\n enabled=True,\n ),\n ),\n master_authorized_networks_config=gcp.container.ClusterMasterAuthorizedNetworksConfigArgs(),\n ip_allocation_policy=gcp.container.ClusterIpAllocationPolicyArgs(\n cluster_secondary_range_name=subnetwork_1.secondary_ip_ranges[0].range_name,\n services_secondary_range_name=subnetwork_1.secondary_ip_ranges[1].range_name,\n ))\nprivate_zone_gke = gcp.dns.ManagedZone(\"private-zone-gke\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n )],\n gke_clusters=[gcp.dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs(\n gke_cluster_name=cluster_1.id,\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Network = network_1.Name,\n IpCidrRange = \"10.0.36.0/24\",\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var cluster_1 = new Gcp.Container.Cluster(\"cluster-1\", new()\n {\n Location = \"us-central1-c\",\n InitialNodeCount = 1,\n NetworkingMode = \"VPC_NATIVE\",\n DefaultSnatStatus = new Gcp.Container.Inputs.ClusterDefaultSnatStatusArgs\n {\n Disabled = true,\n },\n Network = network_1.Name,\n Subnetwork = subnetwork_1.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n MasterGlobalAccessConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs\n {\n Enabled = true,\n },\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n });\n\n var private_zone_gke = new Gcp.Dns.ManagedZone(\"private-zone-gke\", new()\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n },\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-1\", \u0026compute.SubnetworkArgs{\n\t\t\tNetwork: network_1.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"cluster-1\", \u0026container.ClusterArgs{\n\t\t\tLocation: pulumi.String(\"us-central1-c\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetworkingMode: pulumi.String(\"VPC_NATIVE\"),\n\t\t\tDefaultSnatStatus: \u0026container.ClusterDefaultSnatStatusArgs{\n\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetwork: network_1.Name,\n\t\t\tSubnetwork: subnetwork_1.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t\tMasterGlobalAccessConfig: \u0026container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone-gke\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGkeClusters: dns.ManagedZonePrivateVisibilityConfigGkeClusterArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs{\n\t\t\t\t\t\tGkeClusterName: cluster_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterDefaultSnatStatusArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder() \n .network(network_1.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var cluster_1 = new Cluster(\"cluster-1\", ClusterArgs.builder() \n .location(\"us-central1-c\")\n .initialNodeCount(1)\n .networkingMode(\"VPC_NATIVE\")\n .defaultSnatStatus(ClusterDefaultSnatStatusArgs.builder()\n .disabled(true)\n .build())\n .network(network_1.name())\n .subnetwork(subnetwork_1.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .masterGlobalAccessConfig(ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .build());\n\n var private_zone_gke = new ManagedZone(\"private-zone-gke\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build())\n .gkeClusters(ManagedZonePrivateVisibilityConfigGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone-gke:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n network: ${[\"network-1\"].name}\n ipCidrRange: 10.0.36.0/24\n region: us-central1\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n cluster-1:\n type: gcp:container:Cluster\n properties:\n location: us-central1-c\n initialNodeCount: 1\n networkingMode: VPC_NATIVE\n defaultSnatStatus:\n disabled: true\n network: ${[\"network-1\"].name}\n subnetwork: ${[\"subnetwork-1\"].name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterGlobalAccessConfig:\n enabled: true\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[1].rangeName}\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Peering\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {autoCreateSubnetworks: false});\nconst network_target = new gcp.compute.Network(\"network-target\", {autoCreateSubnetworks: false});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n dnsName: \"peering.example.com.\",\n description: \"Example private DNS peering zone\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network_source.id,\n }],\n },\n peeringConfig: {\n targetNetwork: {\n networkUrl: network_target.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_source = gcp.compute.Network(\"network-source\", auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\", auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_source.id,\n )],\n ),\n peering_config=gcp.dns.ManagedZonePeeringConfigArgs(\n target_network=gcp.dns.ManagedZonePeeringConfigTargetNetworkArgs(\n network_url=network_target.id,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_source = new Gcp.Compute.Network(\"network-source\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_target = new Gcp.Compute.Network(\"network-target\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new()\n {\n DnsName = \"peering.example.com.\",\n Description = \"Example private DNS peering zone\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_source.Id,\n },\n },\n },\n PeeringConfig = new Gcp.Dns.Inputs.ManagedZonePeeringConfigArgs\n {\n TargetNetwork = new Gcp.Dns.Inputs.ManagedZonePeeringConfigTargetNetworkArgs\n {\n NetworkUrl = network_target.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-source\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-target\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"peering-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"peering.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS peering zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_source.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPeeringConfig: \u0026dns.ManagedZonePeeringConfigArgs{\n\t\t\t\tTargetNetwork: \u0026dns.ManagedZonePeeringConfigTargetNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_target.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigTargetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_source = new Network(\"network-source\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder() \n .dnsName(\"peering.example.com.\")\n .description(\"Example private DNS peering zone\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_source.id())\n .build())\n .build())\n .peeringConfig(ManagedZonePeeringConfigArgs.builder()\n .targetNetwork(ManagedZonePeeringConfigTargetNetworkArgs.builder()\n .networkUrl(network_target.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: peering.example.com.\n description: Example private DNS peering zone\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-source\"].id}\n peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Service Directory\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example\",\n location: \"us-central1\",\n}, {\n provider: google_beta,\n});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n dnsName: \"services.example.com.\",\n description: \"Example private DNS Service Directory zone\",\n visibility: \"private\",\n serviceDirectoryConfig: {\n namespace: {\n namespaceUrl: example.id,\n },\n },\n}, {\n provider: google_beta,\n});\nconst network = new gcp.compute.Network(\"network\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example\",\n location=\"us-central1\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config=gcp.dns.ManagedZoneServiceDirectoryConfigArgs(\n namespace=gcp.dns.ManagedZoneServiceDirectoryConfigNamespaceArgs(\n namespace_url=example.id,\n ),\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\nnetwork = gcp.compute.Network(\"network\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example\",\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new()\n {\n DnsName = \"services.example.com.\",\n Description = \"Example private DNS Service Directory zone\",\n Visibility = \"private\",\n ServiceDirectoryConfig = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigArgs\n {\n Namespace = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs\n {\n NamespaceUrl = example.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"sd-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS Service Directory zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tServiceDirectoryConfig: \u0026dns.ManagedZoneServiceDirectoryConfigArgs{\n\t\t\t\tNamespace: \u0026dns.ManagedZoneServiceDirectoryConfigNamespaceArgs{\n\t\t\t\t\tNamespaceUrl: example.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Namespace(\"example\", NamespaceArgs.builder() \n .namespaceId(\"example\")\n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder() \n .dnsName(\"services.example.com.\")\n .description(\"Example private DNS Service Directory zone\")\n .visibility(\"private\")\n .serviceDirectoryConfig(ManagedZoneServiceDirectoryConfigArgs.builder()\n .namespace(ManagedZoneServiceDirectoryConfigNamespaceArgs.builder()\n .namespaceUrl(example.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: services.example.com.\n description: Example private DNS Service Directory zone\n visibility: private\n serviceDirectoryConfig:\n namespace:\n namespaceUrl: ${example.id}\n options:\n provider: ${[\"google-beta\"]}\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n network:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Cloud Logging\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloud_logging_enabled_zone = new gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\", {\n cloudLoggingConfig: {\n enableLogging: true,\n },\n description: \"Example cloud logging enabled DNS zone\",\n dnsName: \"services.example.com.\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_logging_enabled_zone = gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\",\n cloud_logging_config=gcp.dns.ManagedZoneCloudLoggingConfigArgs(\n enable_logging=True,\n ),\n description=\"Example cloud logging enabled DNS zone\",\n dns_name=\"services.example.com.\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloud_logging_enabled_zone = new Gcp.Dns.ManagedZone(\"cloud-logging-enabled-zone\", new()\n {\n CloudLoggingConfig = new Gcp.Dns.Inputs.ManagedZoneCloudLoggingConfigArgs\n {\n EnableLogging = true,\n },\n Description = \"Example cloud logging enabled DNS zone\",\n DnsName = \"services.example.com.\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewManagedZone(ctx, \"cloud-logging-enabled-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tCloudLoggingConfig: \u0026dns.ManagedZoneCloudLoggingConfigArgs{\n\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Example cloud logging enabled DNS zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneCloudLoggingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloud_logging_enabled_zone = new ManagedZone(\"cloud-logging-enabled-zone\", ManagedZoneArgs.builder() \n .cloudLoggingConfig(ManagedZoneCloudLoggingConfigArgs.builder()\n .enableLogging(true)\n .build())\n .description(\"Example cloud logging enabled DNS zone\")\n .dnsName(\"services.example.com.\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloud-logging-enabled-zone:\n type: gcp:dns:ManagedZone\n properties:\n cloudLoggingConfig:\n enableLogging: true\n description: Example cloud logging enabled DNS zone\n dnsName: services.example.com.\n labels:\n foo: bar\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nManagedZone can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default {{name}}\n```\n\n ", + "description": "A zone is a subtree of the DNS namespace under one administrative\nresponsibility. A ManagedZone is a resource that represents a DNS zone\nhosted by the Cloud DNS service.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/dns/api/v1/managedZones)\n* How-to Guides\n * [Managing Zones](https://cloud.google.com/dns/zones/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Dns Managed Zone Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_zone = new gcp.dns.ManagedZone(\"example-zone\", {\n description: \"Example DNS zone\",\n dnsName: \"my-domain.com.\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_zone = gcp.dns.ManagedZone(\"example-zone\",\n description=\"Example DNS zone\",\n dns_name=\"my-domain.com.\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_zone = new Gcp.Dns.ManagedZone(\"example-zone\", new()\n {\n Description = \"Example DNS zone\",\n DnsName = \"my-domain.com.\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewManagedZone(ctx, \"example-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example_zone = new ManagedZone(\"example-zone\", ManagedZoneArgs.builder() \n .description(\"Example DNS zone\")\n .dnsName(\"my-domain.com.\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-zone:\n type: gcp:dns:ManagedZone\n properties:\n description: Example DNS zone\n dnsName: my-domain.com.\n labels:\n foo: bar\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst network_2 = new gcp.compute.Network(\"network-2\", {autoCreateSubnetworks: false});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\", auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n ),\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_2.id,\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Forwarding\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst network_2 = new gcp.compute.Network(\"network-2\", {autoCreateSubnetworks: false});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n forwardingConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\", auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_1.id,\n ),\n gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_2.id,\n ),\n ],\n ),\n forwarding_config=gcp.dns.ManagedZoneForwardingConfigArgs(\n target_name_servers=[\n gcp.dns.ManagedZoneForwardingConfigTargetNameServerArgs(\n ipv4_address=\"172.16.1.10\",\n ),\n gcp.dns.ManagedZoneForwardingConfigTargetNameServerArgs(\n ipv4_address=\"172.16.1.20\",\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n ForwardingConfig = new Gcp.Dns.Inputs.ManagedZoneForwardingConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n },\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForwardingConfig: \u0026dns.ManagedZoneForwardingConfigArgs{\n\t\t\t\tTargetNameServers: dns.ManagedZoneForwardingConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneForwardingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .forwardingConfig(ManagedZoneForwardingConfigArgs.builder()\n .targetNameServers( \n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .build(),\n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n forwardingConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n - ipv4Address: 172.16.1.20\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Gke\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {autoCreateSubnetworks: false});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n network: network_1.name,\n ipCidrRange: \"10.0.36.0/24\",\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst cluster_1 = new gcp.container.Cluster(\"cluster-1\", {\n location: \"us-central1-c\",\n initialNodeCount: 1,\n networkingMode: \"VPC_NATIVE\",\n defaultSnatStatus: {\n disabled: true,\n },\n network: network_1.name,\n subnetwork: subnetwork_1.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n masterGlobalAccessConfig: {\n enabled: true,\n },\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n});\nconst private_zone_gke = new gcp.dns.ManagedZone(\"private-zone-gke\", {\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\", auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n network=network_1.name,\n ip_cidr_range=\"10.0.36.0/24\",\n region=\"us-central1\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"pod\",\n ip_cidr_range=\"10.0.0.0/19\",\n ),\n gcp.compute.SubnetworkSecondaryIpRangeArgs(\n range_name=\"svc\",\n ip_cidr_range=\"10.0.32.0/22\",\n ),\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status=gcp.container.ClusterDefaultSnatStatusArgs(\n disabled=True,\n ),\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config=gcp.container.ClusterPrivateClusterConfigArgs(\n enable_private_endpoint=True,\n enable_private_nodes=True,\n master_ipv4_cidr_block=\"10.42.0.0/28\",\n master_global_access_config=gcp.container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs(\n enabled=True,\n ),\n ),\n master_authorized_networks_config=gcp.container.ClusterMasterAuthorizedNetworksConfigArgs(),\n ip_allocation_policy=gcp.container.ClusterIpAllocationPolicyArgs(\n cluster_secondary_range_name=subnetwork_1.secondary_ip_ranges[0].range_name,\n services_secondary_range_name=subnetwork_1.secondary_ip_ranges[1].range_name,\n ))\nprivate_zone_gke = gcp.dns.ManagedZone(\"private-zone-gke\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n gke_clusters=[gcp.dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs(\n gke_cluster_name=cluster_1.id,\n )],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Network = network_1.Name,\n IpCidrRange = \"10.0.36.0/24\",\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var cluster_1 = new Gcp.Container.Cluster(\"cluster-1\", new()\n {\n Location = \"us-central1-c\",\n InitialNodeCount = 1,\n NetworkingMode = \"VPC_NATIVE\",\n DefaultSnatStatus = new Gcp.Container.Inputs.ClusterDefaultSnatStatusArgs\n {\n Disabled = true,\n },\n Network = network_1.Name,\n Subnetwork = subnetwork_1.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n MasterGlobalAccessConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs\n {\n Enabled = true,\n },\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n });\n\n var private_zone_gke = new Gcp.Dns.ManagedZone(\"private-zone-gke\", new()\n {\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-1\", \u0026compute.SubnetworkArgs{\n\t\t\tNetwork: network_1.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"cluster-1\", \u0026container.ClusterArgs{\n\t\t\tLocation: pulumi.String(\"us-central1-c\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetworkingMode: pulumi.String(\"VPC_NATIVE\"),\n\t\t\tDefaultSnatStatus: \u0026container.ClusterDefaultSnatStatusArgs{\n\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetwork: network_1.Name,\n\t\t\tSubnetwork: subnetwork_1.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t\tMasterGlobalAccessConfig: \u0026container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone-gke\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tGkeClusters: dns.ManagedZonePrivateVisibilityConfigGkeClusterArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs{\n\t\t\t\t\t\tGkeClusterName: cluster_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterDefaultSnatStatusArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder() \n .network(network_1.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var cluster_1 = new Cluster(\"cluster-1\", ClusterArgs.builder() \n .location(\"us-central1-c\")\n .initialNodeCount(1)\n .networkingMode(\"VPC_NATIVE\")\n .defaultSnatStatus(ClusterDefaultSnatStatusArgs.builder()\n .disabled(true)\n .build())\n .network(network_1.name())\n .subnetwork(subnetwork_1.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .masterGlobalAccessConfig(ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .build());\n\n var private_zone_gke = new ManagedZone(\"private-zone-gke\", ManagedZoneArgs.builder() \n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .gkeClusters(ManagedZonePrivateVisibilityConfigGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone-gke:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n network: ${[\"network-1\"].name}\n ipCidrRange: 10.0.36.0/24\n region: us-central1\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n cluster-1:\n type: gcp:container:Cluster\n properties:\n location: us-central1-c\n initialNodeCount: 1\n networkingMode: VPC_NATIVE\n defaultSnatStatus:\n disabled: true\n network: ${[\"network-1\"].name}\n subnetwork: ${[\"subnetwork-1\"].name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterGlobalAccessConfig:\n enabled: true\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[1].rangeName}\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Private Peering\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {autoCreateSubnetworks: false});\nconst network_target = new gcp.compute.Network(\"network-target\", {autoCreateSubnetworks: false});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n dnsName: \"peering.example.com.\",\n description: \"Example private DNS peering zone\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network_source.id,\n }],\n },\n peeringConfig: {\n targetNetwork: {\n networkUrl: network_target.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_source = gcp.compute.Network(\"network-source\", auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\", auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs(\n networks=[gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs(\n network_url=network_source.id,\n )],\n ),\n peering_config=gcp.dns.ManagedZonePeeringConfigArgs(\n target_network=gcp.dns.ManagedZonePeeringConfigTargetNetworkArgs(\n network_url=network_target.id,\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_source = new Gcp.Compute.Network(\"network-source\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var network_target = new Gcp.Compute.Network(\"network-target\", new()\n {\n AutoCreateSubnetworks = false,\n });\n\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new()\n {\n DnsName = \"peering.example.com.\",\n Description = \"Example private DNS peering zone\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_source.Id,\n },\n },\n },\n PeeringConfig = new Gcp.Dns.Inputs.ManagedZonePeeringConfigArgs\n {\n TargetNetwork = new Gcp.Dns.Inputs.ManagedZonePeeringConfigTargetNetworkArgs\n {\n NetworkUrl = network_target.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-source\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-target\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"peering-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"peering.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS peering zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_source.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPeeringConfig: \u0026dns.ManagedZonePeeringConfigArgs{\n\t\t\t\tTargetNetwork: \u0026dns.ManagedZonePeeringConfigTargetNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_target.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigTargetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_source = new Network(\"network-source\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder() \n .dnsName(\"peering.example.com.\")\n .description(\"Example private DNS peering zone\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_source.id())\n .build())\n .build())\n .peeringConfig(ManagedZonePeeringConfigArgs.builder()\n .targetNetwork(ManagedZonePeeringConfigTargetNetworkArgs.builder()\n .networkUrl(network_target.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: peering.example.com.\n description: Example private DNS peering zone\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-source\"].id}\n peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Service Directory\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example\",\n location: \"us-central1\",\n}, {\n provider: google_beta,\n});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n dnsName: \"services.example.com.\",\n description: \"Example private DNS Service Directory zone\",\n visibility: \"private\",\n serviceDirectoryConfig: {\n namespace: {\n namespaceUrl: example.id,\n },\n },\n}, {\n provider: google_beta,\n});\nconst network = new gcp.compute.Network(\"network\", {autoCreateSubnetworks: false}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example\",\n location=\"us-central1\",\n opts=pulumi.ResourceOptions(provider=google_beta))\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config=gcp.dns.ManagedZoneServiceDirectoryConfigArgs(\n namespace=gcp.dns.ManagedZoneServiceDirectoryConfigNamespaceArgs(\n namespace_url=example.id,\n ),\n ),\n opts=pulumi.ResourceOptions(provider=google_beta))\nnetwork = gcp.compute.Network(\"network\", auto_create_subnetworks=False,\nopts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example\",\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new()\n {\n DnsName = \"services.example.com.\",\n Description = \"Example private DNS Service Directory zone\",\n Visibility = \"private\",\n ServiceDirectoryConfig = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigArgs\n {\n Namespace = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs\n {\n NamespaceUrl = example.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"sd-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS Service Directory zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tServiceDirectoryConfig: \u0026dns.ManagedZoneServiceDirectoryConfigArgs{\n\t\t\t\tNamespace: \u0026dns.ManagedZoneServiceDirectoryConfigNamespaceArgs{\n\t\t\t\t\tNamespaceUrl: example.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Namespace(\"example\", NamespaceArgs.builder() \n .namespaceId(\"example\")\n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder() \n .dnsName(\"services.example.com.\")\n .description(\"Example private DNS Service Directory zone\")\n .visibility(\"private\")\n .serviceDirectoryConfig(ManagedZoneServiceDirectoryConfigArgs.builder()\n .namespace(ManagedZoneServiceDirectoryConfigNamespaceArgs.builder()\n .namespaceUrl(example.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder() \n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: services.example.com.\n description: Example private DNS Service Directory zone\n visibility: private\n serviceDirectoryConfig:\n namespace:\n namespaceUrl: ${example.id}\n options:\n provider: ${[\"google-beta\"]}\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n network:\n type: gcp:compute:Network\n properties:\n autoCreateSubnetworks: false\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% example %}}\n### Dns Managed Zone Cloud Logging\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloud_logging_enabled_zone = new gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\", {\n cloudLoggingConfig: {\n enableLogging: true,\n },\n description: \"Example cloud logging enabled DNS zone\",\n dnsName: \"services.example.com.\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_logging_enabled_zone = gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\",\n cloud_logging_config=gcp.dns.ManagedZoneCloudLoggingConfigArgs(\n enable_logging=True,\n ),\n description=\"Example cloud logging enabled DNS zone\",\n dns_name=\"services.example.com.\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloud_logging_enabled_zone = new Gcp.Dns.ManagedZone(\"cloud-logging-enabled-zone\", new()\n {\n CloudLoggingConfig = new Gcp.Dns.Inputs.ManagedZoneCloudLoggingConfigArgs\n {\n EnableLogging = true,\n },\n Description = \"Example cloud logging enabled DNS zone\",\n DnsName = \"services.example.com.\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewManagedZone(ctx, \"cloud-logging-enabled-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tCloudLoggingConfig: \u0026dns.ManagedZoneCloudLoggingConfigArgs{\n\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Example cloud logging enabled DNS zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneCloudLoggingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloud_logging_enabled_zone = new ManagedZone(\"cloud-logging-enabled-zone\", ManagedZoneArgs.builder() \n .cloudLoggingConfig(ManagedZoneCloudLoggingConfigArgs.builder()\n .enableLogging(true)\n .build())\n .description(\"Example cloud logging enabled DNS zone\")\n .dnsName(\"services.example.com.\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloud-logging-enabled-zone:\n type: gcp:dns:ManagedZone\n properties:\n cloudLoggingConfig:\n enableLogging: true\n description: Example cloud logging enabled DNS zone\n dnsName: services.example.com.\n labels:\n foo: bar\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nManagedZone can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/managedZone:ManagedZone default {{name}}\n```\n\n ", "properties": { "cloudLoggingConfig": { "$ref": "#/types/gcp:dns/ManagedZoneCloudLoggingConfig:ManagedZoneCloudLoggingConfig", @@ -145145,7 +145810,7 @@ }, "privateVisibilityConfig": { "$ref": "#/types/gcp:dns/ManagedZonePrivateVisibilityConfig:ManagedZonePrivateVisibilityConfig", - "description": "For privately visible zones, the set of Virtual Private Cloud\nresources that the zone is visible from.\nStructure is documented below.\n" + "description": "For privately visible zones, the set of Virtual Private Cloud\nresources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified.\nStructure is documented below.\n" }, "project": { "type": "string", @@ -145219,7 +145884,7 @@ }, "privateVisibilityConfig": { "$ref": "#/types/gcp:dns/ManagedZonePrivateVisibilityConfig:ManagedZonePrivateVisibilityConfig", - "description": "For privately visible zones, the set of Virtual Private Cloud\nresources that the zone is visible from.\nStructure is documented below.\n" + "description": "For privately visible zones, the set of Virtual Private Cloud\nresources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified.\nStructure is documented below.\n" }, "project": { "type": "string", @@ -145307,7 +145972,7 @@ }, "privateVisibilityConfig": { "$ref": "#/types/gcp:dns/ManagedZonePrivateVisibilityConfig:ManagedZonePrivateVisibilityConfig", - "description": "For privately visible zones, the set of Virtual Private Cloud\nresources that the zone is visible from.\nStructure is documented below.\n" + "description": "For privately visible zones, the set of Virtual Private Cloud\nresources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified.\nStructure is documented below.\n" }, "project": { "type": "string", @@ -145448,7 +146113,7 @@ } }, "gcp:dns/recordSet:RecordSet": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontendInstance\", {\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{}],\n }],\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst frontendRecordSet = new gcp.dns.RecordSet(\"frontendRecordSet\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n type: \"A\",\n ttl: 300,\n managedZone: prod.name,\n rrdatas: [frontendInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].accessConfigs?.[0]?.natIp)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfrontend_instance = gcp.compute.Instance(\"frontendInstance\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk=gcp.compute.InstanceBootDiskArgs(\n initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(\n image=\"debian-cloud/debian-11\",\n ),\n ),\n network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(\n network=\"default\",\n access_configs=[gcp.compute.InstanceNetworkInterfaceAccessConfigArgs()],\n )])\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nfrontend_record_set = gcp.dns.RecordSet(\"frontendRecordSet\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n type=\"A\",\n ttl=300,\n managed_zone=prod.name,\n rrdatas=[frontend_instance.network_interfaces[0].access_configs[0].nat_ip])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var frontendInstance = new Gcp.Compute.Instance(\"frontendInstance\", new()\n {\n MachineType = \"g1-small\",\n Zone = \"us-central1-b\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n null,\n },\n },\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontendRecordSet = new Gcp.Dns.RecordSet(\"frontendRecordSet\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = prod.Name,\n Rrdatas = new[]\n {\n frontendInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].AccessConfigs[0]?.NatIp),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontendInstance, err := compute.NewInstance(ctx, \"frontendInstance\", \u0026compute.InstanceArgs{\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontendRecordSet\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfrontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder() \n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs()\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontendRecordSet = new RecordSet(\"frontendRecordSet\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontendRecordSet:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n properties:\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n accessConfigs:\n - {}\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding an A record\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst recordSet = new gcp.dns.RecordSet(\"recordSet\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nrecord_set = gcp.dns.RecordSet(\"recordSet\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var recordSet = new Gcp.Dns.RecordSet(\"recordSet\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"recordSet\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"8.8.8.8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var recordSet = new RecordSet(\"recordSet\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"8.8.8.8\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n recordSet:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n rrdatas:\n - 8.8.8.8\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding an MX record\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst mx = new gcp.dns.RecordSet(\"mx\", {\n name: prod.dnsName,\n managedZone: prod.name,\n type: \"MX\",\n ttl: 3600,\n rrdatas: [\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nmx = gcp.dns.RecordSet(\"mx\",\n name=prod.dns_name,\n managed_zone=prod.name,\n type=\"MX\",\n ttl=3600,\n rrdatas=[\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var mx = new Gcp.Dns.RecordSet(\"mx\", new()\n {\n Name = prod.DnsName,\n ManagedZone = prod.Name,\n Type = \"MX\",\n Ttl = 3600,\n Rrdatas = new[]\n {\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"mx\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName,\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"MX\"),\n\t\t\tTtl: pulumi.Int(3600),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1 aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt1.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt2.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt3.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt4.aspmx.l.google.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var mx = new RecordSet(\"mx\", RecordSetArgs.builder() \n .name(prod.dnsName())\n .managedZone(prod.name())\n .type(\"MX\")\n .ttl(3600)\n .rrdatas( \n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mx:\n type: gcp:dns:RecordSet\n properties:\n name: ${prod.dnsName}\n managedZone: ${prod.name}\n type: MX\n ttl: 3600\n rrdatas:\n - 1 aspmx.l.google.com.\n - 5 alt1.aspmx.l.google.com.\n - 5 alt2.aspmx.l.google.com.\n - 10 alt3.aspmx.l.google.com.\n - 10 alt4.aspmx.l.google.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding an SPF record\n\nQuotes (`\"\"`) must be added around your `rrdatas` for a SPF record. Otherwise `rrdatas` string gets split on spaces.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst spf = new gcp.dns.RecordSet(\"spf\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"TXT\",\n ttl: 300,\n rrdatas: [\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nspf = gcp.dns.RecordSet(\"spf\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"TXT\",\n ttl=300,\n rrdatas=[\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var spf = new Gcp.Dns.RecordSet(\"spf\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"TXT\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"spf\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var spf = new RecordSet(\"spf\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"TXT\")\n .ttl(300)\n .rrdatas(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n spf:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: TXT\n ttl: 300\n rrdatas:\n - '\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\"'\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding a CNAME record\n\n The list of `rrdatas` should only contain a single string corresponding to the Canonical Name intended.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst cname = new gcp.dns.RecordSet(\"cname\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"CNAME\",\n ttl: 300,\n rrdatas: [\"frontend.mydomain.com.\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\ncname = gcp.dns.RecordSet(\"cname\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"CNAME\",\n ttl=300,\n rrdatas=[\"frontend.mydomain.com.\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var cname = new Gcp.Dns.RecordSet(\"cname\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"CNAME\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"frontend.mydomain.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"cname\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"CNAME\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"frontend.mydomain.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var cname = new RecordSet(\"cname\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"CNAME\")\n .ttl(300)\n .rrdatas(\"frontend.mydomain.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cname:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: CNAME\n ttl: 300\n rrdatas:\n - frontend.mydomain.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n### Setting Routing Policy instead of using rrdatas\n{{% example %}}\n### Geolocation\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst geo = new gcp.dns.RecordSet(\"geo\", {\n name: `backend.${google_dns_managed_zone.prod.dns_name}`,\n managedZone: google_dns_managed_zone.prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n geos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-central1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngeo = gcp.dns.RecordSet(\"geo\",\n name=f\"backend.{google_dns_managed_zone['prod']['dns_name']}\",\n managed_zone=google_dns_managed_zone[\"prod\"][\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy=gcp.dns.RecordSetRoutingPolicyArgs(\n geos=[\n gcp.dns.RecordSetRoutingPolicyGeoArgs(\n location=\"asia-east1\",\n rrdatas=[\"10.128.1.1\"],\n ),\n gcp.dns.RecordSetRoutingPolicyGeoArgs(\n location=\"us-central1\",\n rrdatas=[\"10.130.1.1\"],\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var geo = new Gcp.Dns.RecordSet(\"geo\", new()\n {\n Name = $\"backend.{google_dns_managed_zone.Prod.Dns_name}\",\n ManagedZone = google_dns_managed_zone.Prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n Geos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"us-central1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecordSet(ctx, \"geo\", \u0026dns.RecordSetArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"backend.%v\", google_dns_managed_zone.Prod.Dns_name)),\n\t\t\tManagedZone: pulumi.Any(google_dns_managed_zone.Prod.Name),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tGeos: dns.RecordSetRoutingPolicyGeoArray{\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var geo = new RecordSet(\"geo\", RecordSetArgs.builder() \n .name(String.format(\"backend.%s\", google_dns_managed_zone.prod().dns_name()))\n .managedZone(google_dns_managed_zone.prod().name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .geos( \n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"us-central1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n geo:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${google_dns_managed_zone.prod.dns_name}\n managedZone: ${google_dns_managed_zone.prod.name}\n type: A\n ttl: 300\n routingPolicy:\n geos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-central1\n rrdatas:\n - 10.130.1.1\n```\n{{% /example %}}\n{{% example %}}\n### Primary-Backup\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prodManagedZone = new gcp.dns.ManagedZone(\"prodManagedZone\", {dnsName: \"prod.mydomain.com.\"});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prodRegionBackendService\", {region: \"us-central1\"});\nconst prodNetwork = new gcp.compute.Network(\"prodNetwork\", {});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prodForwardingRule\", {\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst recordSet = new gcp.dns.RecordSet(\"recordSet\", {\n name: pulumi.interpolate`backend.${prodManagedZone.dnsName}`,\n managedZone: prodManagedZone.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n internalLoadBalancers: [{\n loadBalancerType: \"regionalL4ilb\",\n ipAddress: prodForwardingRule.ipAddress,\n port: \"80\",\n ipProtocol: \"tcp\",\n networkUrl: prodNetwork.id,\n project: prodForwardingRule.project,\n region: prodForwardingRule.region,\n }],\n },\n backupGeos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-west1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod_managed_zone = gcp.dns.ManagedZone(\"prodManagedZone\", dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prodRegionBackendService\", region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prodNetwork\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prodForwardingRule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=prod_region_backend_service.id,\n all_ports=True,\n network=prod_network.name,\n allow_global_access=True)\nrecord_set = gcp.dns.RecordSet(\"recordSet\",\n name=prod_managed_zone.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod_managed_zone.name,\n type=\"A\",\n ttl=300,\n routing_policy=gcp.dns.RecordSetRoutingPolicyArgs(\n primary_backup=gcp.dns.RecordSetRoutingPolicyPrimaryBackupArgs(\n trickle_ratio=0.1,\n primary=gcp.dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs(\n internal_load_balancers=[gcp.dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs(\n load_balancer_type=\"regionalL4ilb\",\n ip_address=prod_forwarding_rule.ip_address,\n port=\"80\",\n ip_protocol=\"tcp\",\n network_url=prod_network.id,\n project=prod_forwarding_rule.project,\n region=prod_forwarding_rule.region,\n )],\n ),\n backup_geos=[\n gcp.dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs(\n location=\"asia-east1\",\n rrdatas=[\"10.128.1.1\"],\n ),\n gcp.dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs(\n location=\"us-west1\",\n rrdatas=[\"10.130.1.1\"],\n ),\n ],\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prodManagedZone = new Gcp.Dns.ManagedZone(\"prodManagedZone\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prodRegionBackendService\", new()\n {\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prodNetwork\");\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prodForwardingRule\", new()\n {\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = prodRegionBackendService.Id,\n AllPorts = true,\n Network = prodNetwork.Name,\n AllowGlobalAccess = true,\n });\n\n var recordSet = new Gcp.Dns.RecordSet(\"recordSet\", new()\n {\n Name = prodManagedZone.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prodManagedZone.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n InternalLoadBalancers = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs\n {\n LoadBalancerType = \"regionalL4ilb\",\n IpAddress = prodForwardingRule.IpAddress,\n Port = \"80\",\n IpProtocol = \"tcp\",\n NetworkUrl = prodNetwork.Id,\n Project = prodForwardingRule.Project,\n Region = prodForwardingRule.Region,\n },\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprodManagedZone, err := dns.NewManagedZone(ctx, \"prodManagedZone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodRegionBackendService, err := compute.NewRegionBackendService(ctx, \"prodRegionBackendService\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodNetwork, err := compute.NewNetwork(ctx, \"prodNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prodForwardingRule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: prodRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: prodNetwork.Name,\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"recordSet\", \u0026dns.RecordSetArgs{\n\t\t\tName: prodManagedZone.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prodManagedZone.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tInternalLoadBalancers: dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArray{\n\t\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs{\n\t\t\t\t\t\t\t\tLoadBalancerType: pulumi.String(\"regionalL4ilb\"),\n\t\t\t\t\t\t\t\tIpAddress: prodForwardingRule.IpAddress,\n\t\t\t\t\t\t\t\tPort: pulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tNetworkUrl: prodNetwork.ID(),\n\t\t\t\t\t\t\t\tProject: prodForwardingRule.Project,\n\t\t\t\t\t\t\t\tRegion: prodForwardingRule.Region,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prodManagedZone = new ManagedZone(\"prodManagedZone\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\");\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(prodRegionBackendService.id())\n .allPorts(true)\n .network(prodNetwork.name())\n .allowGlobalAccess(true)\n .build());\n\n var recordSet = new RecordSet(\"recordSet\", RecordSetArgs.builder() \n .name(prodManagedZone.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prodManagedZone.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL4ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n recordSet:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prodManagedZone.dnsName}\n managedZone: ${prodManagedZone.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL4ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prodManagedZone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${prodRegionBackendService.id}\n allPorts: true\n network: ${prodNetwork.name}\n allowGlobalAccess: true\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n```\n{{% /example %}}\n{{% example %}}\n### Primary-Backup with a regional L7 ILB\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prodManagedZone = new ManagedZone(\"prodManagedZone\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionHealthCheck = new RegionHealthCheck(\"prodRegionHealthCheck\", RegionHealthCheckArgs.builder() \n .region(\"us-central1\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .protocol(\"HTTP\")\n .healthChecks(prodRegionHealthCheck.id())\n .build());\n\n var prodRegionUrlMap = new RegionUrlMap(\"prodRegionUrlMap\", RegionUrlMapArgs.builder() \n .region(\"us-central1\")\n .defaultService(prodRegionBackendService.id())\n .build());\n\n var prodRegionTargetHttpProxy = new RegionTargetHttpProxy(\"prodRegionTargetHttpProxy\", RegionTargetHttpProxyArgs.builder() \n .region(\"us-central1\")\n .urlMap(prodRegionUrlMap.id())\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\");\n\n var prodProxy = new Subnetwork(\"prodProxy\", SubnetworkArgs.builder() \n .ipCidrRange(\"10.100.0.0/24\")\n .region(\"us-central1\")\n .purpose(\"INTERNAL_HTTPS_LOAD_BALANCER\")\n .role(\"ACTIVE\")\n .network(prodNetwork.id())\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .target(prodRegionTargetHttpProxy.id())\n .portRange(\"80\")\n .allowGlobalAccess(true)\n .network(prodNetwork.name())\n .ipProtocol(\"TCP\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(prodProxy)\n .build());\n\n var recordSet = new RecordSet(\"recordSet\", RecordSetArgs.builder() \n .name(prodManagedZone.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prodManagedZone.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL7ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n recordSet:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prodManagedZone.dnsName}\n managedZone: ${prodManagedZone.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL7ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prodManagedZone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n target: ${prodRegionTargetHttpProxy.id}\n portRange: '80'\n allowGlobalAccess: true\n network: ${prodNetwork.name}\n ipProtocol: TCP\n options:\n dependson:\n - ${prodProxy}\n prodRegionTargetHttpProxy:\n type: gcp:compute:RegionTargetHttpProxy\n properties:\n region: us-central1\n urlMap: ${prodRegionUrlMap.id}\n prodRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n defaultService: ${prodRegionBackendService.id}\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n protocol: HTTP\n healthChecks:\n - ${prodRegionHealthCheck.id}\n prodRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n httpHealthCheck:\n port: 80\n prodProxy:\n type: gcp:compute:Subnetwork\n properties:\n ipCidrRange: 10.100.0.0/24\n region: us-central1\n purpose: INTERNAL_HTTPS_LOAD_BALANCER\n role: ACTIVE\n network: ${prodNetwork.id}\n prodNetwork:\n type: gcp:compute:Network\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats\n\n```sh\n $ pulumi import gcp:dns/recordSet:RecordSet frontend projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/recordSet:RecordSet frontend {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/recordSet:RecordSet frontend {{zone}}/{{name}}/{{type}}\n```\n\n NoteThe record name must include the trailing dot at the end. ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontendInstance\", {\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{}],\n }],\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst frontendRecordSet = new gcp.dns.RecordSet(\"frontendRecordSet\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n type: \"A\",\n ttl: 300,\n managedZone: prod.name,\n rrdatas: [frontendInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].accessConfigs?.[0]?.natIp)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfrontend_instance = gcp.compute.Instance(\"frontendInstance\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk=gcp.compute.InstanceBootDiskArgs(\n initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(\n image=\"debian-cloud/debian-11\",\n ),\n ),\n network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(\n network=\"default\",\n access_configs=[gcp.compute.InstanceNetworkInterfaceAccessConfigArgs()],\n )])\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nfrontend_record_set = gcp.dns.RecordSet(\"frontendRecordSet\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n type=\"A\",\n ttl=300,\n managed_zone=prod.name,\n rrdatas=[frontend_instance.network_interfaces[0].access_configs[0].nat_ip])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var frontendInstance = new Gcp.Compute.Instance(\"frontendInstance\", new()\n {\n MachineType = \"g1-small\",\n Zone = \"us-central1-b\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n null,\n },\n },\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontendRecordSet = new Gcp.Dns.RecordSet(\"frontendRecordSet\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = prod.Name,\n Rrdatas = new[]\n {\n frontendInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].AccessConfigs[0]?.NatIp),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontendInstance, err := compute.NewInstance(ctx, \"frontendInstance\", \u0026compute.InstanceArgs{\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontendRecordSet\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfrontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder() \n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs()\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontendRecordSet = new RecordSet(\"frontendRecordSet\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontendRecordSet:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n properties:\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n accessConfigs:\n - {}\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding an A record\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst recordSet = new gcp.dns.RecordSet(\"recordSet\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nrecord_set = gcp.dns.RecordSet(\"recordSet\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var recordSet = new Gcp.Dns.RecordSet(\"recordSet\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"recordSet\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"8.8.8.8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var recordSet = new RecordSet(\"recordSet\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"8.8.8.8\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n recordSet:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n rrdatas:\n - 8.8.8.8\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding an MX record\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst mx = new gcp.dns.RecordSet(\"mx\", {\n name: prod.dnsName,\n managedZone: prod.name,\n type: \"MX\",\n ttl: 3600,\n rrdatas: [\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nmx = gcp.dns.RecordSet(\"mx\",\n name=prod.dns_name,\n managed_zone=prod.name,\n type=\"MX\",\n ttl=3600,\n rrdatas=[\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var mx = new Gcp.Dns.RecordSet(\"mx\", new()\n {\n Name = prod.DnsName,\n ManagedZone = prod.Name,\n Type = \"MX\",\n Ttl = 3600,\n Rrdatas = new[]\n {\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"mx\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName,\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"MX\"),\n\t\t\tTtl: pulumi.Int(3600),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1 aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt1.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt2.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt3.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt4.aspmx.l.google.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var mx = new RecordSet(\"mx\", RecordSetArgs.builder() \n .name(prod.dnsName())\n .managedZone(prod.name())\n .type(\"MX\")\n .ttl(3600)\n .rrdatas( \n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mx:\n type: gcp:dns:RecordSet\n properties:\n name: ${prod.dnsName}\n managedZone: ${prod.name}\n type: MX\n ttl: 3600\n rrdatas:\n - 1 aspmx.l.google.com.\n - 5 alt1.aspmx.l.google.com.\n - 5 alt2.aspmx.l.google.com.\n - 10 alt3.aspmx.l.google.com.\n - 10 alt4.aspmx.l.google.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding an SPF record\n\nQuotes (`\"\"`) must be added around your `rrdatas` for a SPF record. Otherwise `rrdatas` string gets split on spaces.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst spf = new gcp.dns.RecordSet(\"spf\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"TXT\",\n ttl: 300,\n rrdatas: [\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\nspf = gcp.dns.RecordSet(\"spf\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"TXT\",\n ttl=300,\n rrdatas=[\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var spf = new Gcp.Dns.RecordSet(\"spf\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"TXT\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"spf\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var spf = new RecordSet(\"spf\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"TXT\")\n .ttl(300)\n .rrdatas(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n spf:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: TXT\n ttl: 300\n rrdatas:\n - '\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\"'\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n{{% example %}}\n### Adding a CNAME record\n\n The list of `rrdatas` should only contain a single string corresponding to the Canonical Name intended.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {dnsName: \"prod.mydomain.com.\"});\nconst cname = new gcp.dns.RecordSet(\"cname\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"CNAME\",\n ttl: 300,\n rrdatas: [\"frontend.mydomain.com.\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\", dns_name=\"prod.mydomain.com.\")\ncname = gcp.dns.RecordSet(\"cname\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"CNAME\",\n ttl=300,\n rrdatas=[\"frontend.mydomain.com.\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var cname = new Gcp.Dns.RecordSet(\"cname\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"CNAME\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"frontend.mydomain.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"cname\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"CNAME\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"frontend.mydomain.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var cname = new RecordSet(\"cname\", RecordSetArgs.builder() \n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"CNAME\")\n .ttl(300)\n .rrdatas(\"frontend.mydomain.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cname:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: CNAME\n ttl: 300\n rrdatas:\n - frontend.mydomain.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n```\n{{% /example %}}\n### Setting Routing Policy instead of using rrdatas\n{{% example %}}\n### Geolocation\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst geo = new gcp.dns.RecordSet(\"geo\", {\n name: `backend.${google_dns_managed_zone.prod.dns_name}`,\n managedZone: google_dns_managed_zone.prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n geos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-central1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngeo = gcp.dns.RecordSet(\"geo\",\n name=f\"backend.{google_dns_managed_zone['prod']['dns_name']}\",\n managed_zone=google_dns_managed_zone[\"prod\"][\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy=gcp.dns.RecordSetRoutingPolicyArgs(\n geos=[\n gcp.dns.RecordSetRoutingPolicyGeoArgs(\n location=\"asia-east1\",\n rrdatas=[\"10.128.1.1\"],\n ),\n gcp.dns.RecordSetRoutingPolicyGeoArgs(\n location=\"us-central1\",\n rrdatas=[\"10.130.1.1\"],\n ),\n ],\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var geo = new Gcp.Dns.RecordSet(\"geo\", new()\n {\n Name = $\"backend.{google_dns_managed_zone.Prod.Dns_name}\",\n ManagedZone = google_dns_managed_zone.Prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n Geos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"us-central1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecordSet(ctx, \"geo\", \u0026dns.RecordSetArgs{\n\t\t\tName: pulumi.String(fmt.Sprintf(\"backend.%v\", google_dns_managed_zone.Prod.Dns_name)),\n\t\t\tManagedZone: pulumi.Any(google_dns_managed_zone.Prod.Name),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tGeos: dns.RecordSetRoutingPolicyGeoArray{\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var geo = new RecordSet(\"geo\", RecordSetArgs.builder() \n .name(String.format(\"backend.%s\", google_dns_managed_zone.prod().dns_name()))\n .managedZone(google_dns_managed_zone.prod().name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .geos( \n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"us-central1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n geo:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${google_dns_managed_zone.prod.dns_name}\n managedZone: ${google_dns_managed_zone.prod.name}\n type: A\n ttl: 300\n routingPolicy:\n geos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-central1\n rrdatas:\n - 10.130.1.1\n```\n{{% /example %}}\n{{% example %}}\n### Primary-Backup\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prodManagedZone = new gcp.dns.ManagedZone(\"prodManagedZone\", {dnsName: \"prod.mydomain.com.\"});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prodRegionBackendService\", {region: \"us-central1\"});\nconst prodNetwork = new gcp.compute.Network(\"prodNetwork\", {});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prodForwardingRule\", {\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst recordSet = new gcp.dns.RecordSet(\"recordSet\", {\n name: pulumi.interpolate`backend.${prodManagedZone.dnsName}`,\n managedZone: prodManagedZone.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n internalLoadBalancers: [{\n loadBalancerType: \"regionalL4ilb\",\n ipAddress: prodForwardingRule.ipAddress,\n port: \"80\",\n ipProtocol: \"tcp\",\n networkUrl: prodNetwork.id,\n project: prodForwardingRule.project,\n region: prodForwardingRule.region,\n }],\n },\n backupGeos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-west1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod_managed_zone = gcp.dns.ManagedZone(\"prodManagedZone\", dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prodRegionBackendService\", region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prodNetwork\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prodForwardingRule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=prod_region_backend_service.id,\n all_ports=True,\n network=prod_network.name,\n allow_global_access=True)\nrecord_set = gcp.dns.RecordSet(\"recordSet\",\n name=prod_managed_zone.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod_managed_zone.name,\n type=\"A\",\n ttl=300,\n routing_policy=gcp.dns.RecordSetRoutingPolicyArgs(\n primary_backup=gcp.dns.RecordSetRoutingPolicyPrimaryBackupArgs(\n trickle_ratio=0.1,\n primary=gcp.dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs(\n internal_load_balancers=[gcp.dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs(\n load_balancer_type=\"regionalL4ilb\",\n ip_address=prod_forwarding_rule.ip_address,\n port=\"80\",\n ip_protocol=\"tcp\",\n network_url=prod_network.id,\n project=prod_forwarding_rule.project,\n region=prod_forwarding_rule.region,\n )],\n ),\n backup_geos=[\n gcp.dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs(\n location=\"asia-east1\",\n rrdatas=[\"10.128.1.1\"],\n ),\n gcp.dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs(\n location=\"us-west1\",\n rrdatas=[\"10.130.1.1\"],\n ),\n ],\n ),\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prodManagedZone = new Gcp.Dns.ManagedZone(\"prodManagedZone\", new()\n {\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prodRegionBackendService\", new()\n {\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prodNetwork\");\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prodForwardingRule\", new()\n {\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = prodRegionBackendService.Id,\n AllPorts = true,\n Network = prodNetwork.Name,\n AllowGlobalAccess = true,\n });\n\n var recordSet = new Gcp.Dns.RecordSet(\"recordSet\", new()\n {\n Name = prodManagedZone.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prodManagedZone.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n InternalLoadBalancers = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs\n {\n LoadBalancerType = \"regionalL4ilb\",\n IpAddress = prodForwardingRule.IpAddress,\n Port = \"80\",\n IpProtocol = \"tcp\",\n NetworkUrl = prodNetwork.Id,\n Project = prodForwardingRule.Project,\n Region = prodForwardingRule.Region,\n },\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprodManagedZone, err := dns.NewManagedZone(ctx, \"prodManagedZone\", \u0026dns.ManagedZoneArgs{\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodRegionBackendService, err := compute.NewRegionBackendService(ctx, \"prodRegionBackendService\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodNetwork, err := compute.NewNetwork(ctx, \"prodNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prodForwardingRule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: prodRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: prodNetwork.Name,\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"recordSet\", \u0026dns.RecordSetArgs{\n\t\t\tName: prodManagedZone.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prodManagedZone.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tInternalLoadBalancers: dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArray{\n\t\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs{\n\t\t\t\t\t\t\t\tLoadBalancerType: pulumi.String(\"regionalL4ilb\"),\n\t\t\t\t\t\t\t\tIpAddress: prodForwardingRule.IpAddress,\n\t\t\t\t\t\t\t\tPort: pulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tNetworkUrl: prodNetwork.ID(),\n\t\t\t\t\t\t\t\tProject: prodForwardingRule.Project,\n\t\t\t\t\t\t\t\tRegion: prodForwardingRule.Region,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prodManagedZone = new ManagedZone(\"prodManagedZone\", ManagedZoneArgs.builder() \n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder() \n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\");\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder() \n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(prodRegionBackendService.id())\n .allPorts(true)\n .network(prodNetwork.name())\n .allowGlobalAccess(true)\n .build());\n\n var recordSet = new RecordSet(\"recordSet\", RecordSetArgs.builder() \n .name(prodManagedZone.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prodManagedZone.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL4ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n recordSet:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prodManagedZone.dnsName}\n managedZone: ${prodManagedZone.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL4ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prodManagedZone:\n type: gcp:dns:ManagedZone\n properties:\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n properties:\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${prodRegionBackendService.id}\n allPorts: true\n network: ${prodNetwork.name}\n allowGlobalAccess: true\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats\n\n```sh\n $ pulumi import gcp:dns/recordSet:RecordSet frontend projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/recordSet:RecordSet frontend {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n\n\n```sh\n $ pulumi import gcp:dns/recordSet:RecordSet frontend {{zone}}/{{name}}/{{type}}\n```\n\n NoteThe record name must include the trailing dot at the end. ", "properties": { "managedZone": { "type": "string", @@ -154881,7 +155546,7 @@ } }, "gcp:healthcare/fhirStore:FhirStore": { - "description": "A FhirStore is a datastore inside a Healthcare dataset that conforms to the FHIR (https://www.hl7.org/fhir/STU3/)\nstandard for Healthcare information exchange\n\n\nTo get more information about FhirStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.fhirStores)\n* How-to Guides\n * [Creating a FHIR store](https://cloud.google.com/healthcare/docs/how-tos/fhir)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Healthcare Fhir Store Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n complexDataTypeReferenceParsing: \"DISABLED\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n notificationConfig: {\n pubsubTopic: topic.id,\n },\n labels: {\n label1: \"labelvalue1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\")\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n complex_data_type_reference_parsing=\"DISABLED\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n notification_config=gcp.healthcare.FhirStoreNotificationConfigArgs(\n pubsub_topic=topic.id,\n ),\n labels={\n \"label1\": \"labelvalue1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\");\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n ComplexDataTypeReferenceParsing = \"DISABLED\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n NotificationConfig = new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n },\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tComplexDataTypeReferenceParsing: pulumi.String(\"DISABLED\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tNotificationConfig: \u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreNotificationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\");\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .complexDataTypeReferenceParsing(\"DISABLED\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .notificationConfig(FhirStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .build())\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n complexDataTypeReferenceParsing: DISABLED\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n notificationConfig:\n pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Healthcare Fhir Store Streaming Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"});\nconst bqDataset = new gcp.bigquery.Dataset(\"bqDataset\", {\n datasetId: \"bq_example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n labels: {\n label1: \"labelvalue1\",\n },\n streamConfigs: [{\n resourceTypes: [\"Observation\"],\n bigqueryDestination: {\n datasetUri: pulumi.interpolate`bq://${bqDataset.project}.${bqDataset.datasetId}`,\n schemaConfig: {\n recursiveStructureDepth: 3,\n lastUpdatedPartitionConfig: {\n type: \"HOUR\",\n expirationMs: \"1000000\",\n },\n },\n },\n }],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\")\nbq_dataset = gcp.bigquery.Dataset(\"bqDataset\",\n dataset_id=\"bq_example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n labels={\n \"label1\": \"labelvalue1\",\n },\n stream_configs=[gcp.healthcare.FhirStoreStreamConfigArgs(\n resource_types=[\"Observation\"],\n bigquery_destination=gcp.healthcare.FhirStoreStreamConfigBigqueryDestinationArgs(\n dataset_uri=pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f\"bq://{project}.{dataset_id}\"),\n schema_config=gcp.healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs(\n recursive_structure_depth=3,\n last_updated_partition_config=gcp.healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs(\n type=\"HOUR\",\n expiration_ms=\"1000000\",\n ),\n ),\n ),\n )])\ntopic = gcp.pubsub.Topic(\"topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n });\n\n var bqDataset = new Gcp.BigQuery.Dataset(\"bqDataset\", new()\n {\n DatasetId = \"bq_example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n StreamConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.FhirStoreStreamConfigArgs\n {\n ResourceTypes = new[]\n {\n \"Observation\",\n },\n BigqueryDestination = new Gcp.Healthcare.Inputs.FhirStoreStreamConfigBigqueryDestinationArgs\n {\n DatasetUri = Output.Tuple(bqDataset.Project, bqDataset.DatasetId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n return $\"bq://{project}.{datasetId}\";\n }),\n SchemaConfig = new Gcp.Healthcare.Inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs\n {\n RecursiveStructureDepth = 3,\n LastUpdatedPartitionConfig = new Gcp.Healthcare.Inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs\n {\n Type = \"HOUR\",\n ExpirationMs = \"1000000\",\n },\n },\n },\n },\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqDataset, err := bigquery.NewDataset(ctx, \"bqDataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"bq_example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDeleteContentsOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t\tStreamConfigs: healthcare.FhirStoreStreamConfigArray{\n\t\t\t\t\u0026healthcare.FhirStoreStreamConfigArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Observation\"),\n\t\t\t\t\t},\n\t\t\t\t\tBigqueryDestination: \u0026healthcare.FhirStoreStreamConfigBigqueryDestinationArgs{\n\t\t\t\t\t\tDatasetUri: pulumi.All(bqDataset.Project, bqDataset.DatasetId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v\", project, datasetId), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tSchemaConfig: \u0026healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs{\n\t\t\t\t\t\t\tRecursiveStructureDepth: pulumi.Int(3),\n\t\t\t\t\t\t\tLastUpdatedPartitionConfig: \u0026healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs{\n\t\t\t\t\t\t\t\tType: pulumi.String(\"HOUR\"),\n\t\t\t\t\t\t\t\tExpirationMs: pulumi.String(\"1000000\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"topic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigBigqueryDestinationArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var bqDataset = new Dataset(\"bqDataset\", DatasetArgs.builder() \n .datasetId(\"bq_example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .streamConfigs(FhirStoreStreamConfigArgs.builder()\n .resourceTypes(\"Observation\")\n .bigqueryDestination(FhirStoreStreamConfigBigqueryDestinationArgs.builder()\n .datasetUri(Output.tuple(bqDataset.project(), bqDataset.datasetId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n return String.format(\"bq://%s.%s\", project,datasetId);\n }))\n .schemaConfig(FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs.builder()\n .recursiveStructureDepth(3)\n .lastUpdatedPartitionConfig(FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs.builder()\n .type(\"HOUR\")\n .expirationMs(1000000)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var topic = new Topic(\"topic\");\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n labels:\n label1: labelvalue1\n streamConfigs:\n - resourceTypes:\n - Observation\n bigqueryDestination:\n datasetUri: bq://${bqDataset.project}.${bqDataset.datasetId}\n schemaConfig:\n recursiveStructureDepth: 3\n lastUpdatedPartitionConfig:\n type: HOUR\n expirationMs: 1e+06\n topic:\n type: gcp:pubsub:Topic\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n bqDataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: bq_example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n```\n{{% /example %}}\n{{% example %}}\n### Healthcare Fhir Store Notification Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n labels: {\n label1: \"labelvalue1\",\n },\n notificationConfig: {\n pubsubTopic: topic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\")\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n labels={\n \"label1\": \"labelvalue1\",\n },\n notification_config=gcp.healthcare.FhirStoreNotificationConfigArgs(\n pubsub_topic=topic.id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\");\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n NotificationConfig = new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t\tNotificationConfig: \u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreNotificationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\");\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .notificationConfig(FhirStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n labels:\n label1: labelvalue1\n notificationConfig:\n pubsubTopic: ${topic.id}\n topic:\n type: gcp:pubsub:Topic\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Healthcare Fhir Store Notification Configs\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {}, {\n provider: google_beta,\n});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"}, {\n provider: google_beta,\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n labels: {\n label1: \"labelvalue1\",\n },\n notificationConfigs: [{\n pubsubTopic: topic.id,\n sendFullResource: true,\n sendPreviousResourceOnDelete: true,\n }],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", opts=pulumi.ResourceOptions(provider=google_beta))\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\",\nopts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n labels={\n \"label1\": \"labelvalue1\",\n },\n notification_configs=[gcp.healthcare.FhirStoreNotificationConfigArgs(\n pubsub_topic=topic.id,\n send_full_resource=True,\n send_previous_resource_on_delete=True,\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n NotificationConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n SendFullResource = true,\n SendPreviousResourceOnDelete = true,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", nil, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t\tNotificationConfigs: healthcare.FhirStoreNotificationConfigArray{\n\t\t\t\t\u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\t\tSendFullResource: pulumi.Bool(true),\n\t\t\t\t\tSendPreviousResourceOnDelete: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreNotificationConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\", TopicArgs.Empty, CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .notificationConfigs(FhirStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .sendFullResource(true)\n .sendPreviousResourceOnDelete(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n labels:\n label1: labelvalue1\n notificationConfigs:\n - pubsubTopic: ${topic.id}\n sendFullResource: true\n sendPreviousResourceOnDelete: true\n options:\n provider: ${[\"google-beta\"]}\n topic:\n type: gcp:pubsub:Topic\n options:\n provider: ${[\"google-beta\"]}\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nFhirStore can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/fhirStores/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/{{name}}\n```\n\n ", + "description": "A FhirStore is a datastore inside a Healthcare dataset that conforms to the FHIR (https://www.hl7.org/fhir/STU3/)\nstandard for Healthcare information exchange\n\n\nTo get more information about FhirStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.fhirStores)\n* How-to Guides\n * [Creating a FHIR store](https://cloud.google.com/healthcare/docs/how-tos/fhir)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Healthcare Fhir Store Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n complexDataTypeReferenceParsing: \"DISABLED\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n defaultSearchHandlingStrict: false,\n notificationConfig: {\n pubsubTopic: topic.id,\n },\n labels: {\n label1: \"labelvalue1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\")\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n complex_data_type_reference_parsing=\"DISABLED\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n default_search_handling_strict=False,\n notification_config=gcp.healthcare.FhirStoreNotificationConfigArgs(\n pubsub_topic=topic.id,\n ),\n labels={\n \"label1\": \"labelvalue1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\");\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n ComplexDataTypeReferenceParsing = \"DISABLED\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n DefaultSearchHandlingStrict = false,\n NotificationConfig = new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n },\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tComplexDataTypeReferenceParsing: pulumi.String(\"DISABLED\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tDefaultSearchHandlingStrict: pulumi.Bool(false),\n\t\t\tNotificationConfig: \u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreNotificationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\");\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .complexDataTypeReferenceParsing(\"DISABLED\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .defaultSearchHandlingStrict(false)\n .notificationConfig(FhirStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .build())\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n complexDataTypeReferenceParsing: DISABLED\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n defaultSearchHandlingStrict: false\n notificationConfig:\n pubsubTopic: ${topic.id}\n labels:\n label1: labelvalue1\n topic:\n type: gcp:pubsub:Topic\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Healthcare Fhir Store Streaming Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"});\nconst bqDataset = new gcp.bigquery.Dataset(\"bqDataset\", {\n datasetId: \"bq_example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n labels: {\n label1: \"labelvalue1\",\n },\n streamConfigs: [{\n resourceTypes: [\"Observation\"],\n bigqueryDestination: {\n datasetUri: pulumi.interpolate`bq://${bqDataset.project}.${bqDataset.datasetId}`,\n schemaConfig: {\n recursiveStructureDepth: 3,\n lastUpdatedPartitionConfig: {\n type: \"HOUR\",\n expirationMs: \"1000000\",\n },\n },\n },\n }],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\")\nbq_dataset = gcp.bigquery.Dataset(\"bqDataset\",\n dataset_id=\"bq_example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n labels={\n \"label1\": \"labelvalue1\",\n },\n stream_configs=[gcp.healthcare.FhirStoreStreamConfigArgs(\n resource_types=[\"Observation\"],\n bigquery_destination=gcp.healthcare.FhirStoreStreamConfigBigqueryDestinationArgs(\n dataset_uri=pulumi.Output.all(bq_dataset.project, bq_dataset.dataset_id).apply(lambda project, dataset_id: f\"bq://{project}.{dataset_id}\"),\n schema_config=gcp.healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs(\n recursive_structure_depth=3,\n last_updated_partition_config=gcp.healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs(\n type=\"HOUR\",\n expiration_ms=\"1000000\",\n ),\n ),\n ),\n )])\ntopic = gcp.pubsub.Topic(\"topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n });\n\n var bqDataset = new Gcp.BigQuery.Dataset(\"bqDataset\", new()\n {\n DatasetId = \"bq_example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n StreamConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.FhirStoreStreamConfigArgs\n {\n ResourceTypes = new[]\n {\n \"Observation\",\n },\n BigqueryDestination = new Gcp.Healthcare.Inputs.FhirStoreStreamConfigBigqueryDestinationArgs\n {\n DatasetUri = Output.Tuple(bqDataset.Project, bqDataset.DatasetId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n return $\"bq://{project}.{datasetId}\";\n }),\n SchemaConfig = new Gcp.Healthcare.Inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs\n {\n RecursiveStructureDepth = 3,\n LastUpdatedPartitionConfig = new Gcp.Healthcare.Inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs\n {\n Type = \"HOUR\",\n ExpirationMs = \"1000000\",\n },\n },\n },\n },\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqDataset, err := bigquery.NewDataset(ctx, \"bqDataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"bq_example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDeleteContentsOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t\tStreamConfigs: healthcare.FhirStoreStreamConfigArray{\n\t\t\t\t\u0026healthcare.FhirStoreStreamConfigArgs{\n\t\t\t\t\tResourceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Observation\"),\n\t\t\t\t\t},\n\t\t\t\t\tBigqueryDestination: \u0026healthcare.FhirStoreStreamConfigBigqueryDestinationArgs{\n\t\t\t\t\t\tDatasetUri: pulumi.All(bqDataset.Project, bqDataset.DatasetId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v\", project, datasetId), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tSchemaConfig: \u0026healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs{\n\t\t\t\t\t\t\tRecursiveStructureDepth: pulumi.Int(3),\n\t\t\t\t\t\t\tLastUpdatedPartitionConfig: \u0026healthcare.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs{\n\t\t\t\t\t\t\t\tType: pulumi.String(\"HOUR\"),\n\t\t\t\t\t\t\t\tExpirationMs: pulumi.String(\"1000000\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"topic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigBigqueryDestinationArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var bqDataset = new Dataset(\"bqDataset\", DatasetArgs.builder() \n .datasetId(\"bq_example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .streamConfigs(FhirStoreStreamConfigArgs.builder()\n .resourceTypes(\"Observation\")\n .bigqueryDestination(FhirStoreStreamConfigBigqueryDestinationArgs.builder()\n .datasetUri(Output.tuple(bqDataset.project(), bqDataset.datasetId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n return String.format(\"bq://%s.%s\", project,datasetId);\n }))\n .schemaConfig(FhirStoreStreamConfigBigqueryDestinationSchemaConfigArgs.builder()\n .recursiveStructureDepth(3)\n .lastUpdatedPartitionConfig(FhirStoreStreamConfigBigqueryDestinationSchemaConfigLastUpdatedPartitionConfigArgs.builder()\n .type(\"HOUR\")\n .expirationMs(1000000)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var topic = new Topic(\"topic\");\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n labels:\n label1: labelvalue1\n streamConfigs:\n - resourceTypes:\n - Observation\n bigqueryDestination:\n datasetUri: bq://${bqDataset.project}.${bqDataset.datasetId}\n schemaConfig:\n recursiveStructureDepth: 3\n lastUpdatedPartitionConfig:\n type: HOUR\n expirationMs: 1e+06\n topic:\n type: gcp:pubsub:Topic\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n bqDataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: bq_example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n```\n{{% /example %}}\n{{% example %}}\n### Healthcare Fhir Store Notification Config\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n labels: {\n label1: \"labelvalue1\",\n },\n notificationConfig: {\n pubsubTopic: topic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\")\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\")\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n labels={\n \"label1\": \"labelvalue1\",\n },\n notification_config=gcp.healthcare.FhirStoreNotificationConfigArgs(\n pubsub_topic=topic.id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\");\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n NotificationConfig = new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t\tNotificationConfig: \u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreNotificationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\");\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .notificationConfig(FhirStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n labels:\n label1: labelvalue1\n notificationConfig:\n pubsubTopic: ${topic.id}\n topic:\n type: gcp:pubsub:Topic\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n```\n{{% /example %}}\n{{% example %}}\n### Healthcare Fhir Store Notification Configs\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {}, {\n provider: google_beta,\n});\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {location: \"us-central1\"}, {\n provider: google_beta,\n});\nconst _default = new gcp.healthcare.FhirStore(\"default\", {\n dataset: dataset.id,\n version: \"R4\",\n enableUpdateCreate: false,\n disableReferentialIntegrity: false,\n disableResourceVersioning: false,\n enableHistoryImport: false,\n labels: {\n label1: \"labelvalue1\",\n },\n notificationConfigs: [{\n pubsubTopic: topic.id,\n sendFullResource: true,\n sendPreviousResourceOnDelete: true,\n }],\n}, {\n provider: google_beta,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntopic = gcp.pubsub.Topic(\"topic\", opts=pulumi.ResourceOptions(provider=google_beta))\ndataset = gcp.healthcare.Dataset(\"dataset\", location=\"us-central1\",\nopts=pulumi.ResourceOptions(provider=google_beta))\ndefault = gcp.healthcare.FhirStore(\"default\",\n dataset=dataset.id,\n version=\"R4\",\n enable_update_create=False,\n disable_referential_integrity=False,\n disable_resource_versioning=False,\n enable_history_import=False,\n labels={\n \"label1\": \"labelvalue1\",\n },\n notification_configs=[gcp.healthcare.FhirStoreNotificationConfigArgs(\n pubsub_topic=topic.id,\n send_full_resource=True,\n send_previous_resource_on_delete=True,\n )],\n opts=pulumi.ResourceOptions(provider=google_beta))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n var @default = new Gcp.Healthcare.FhirStore(\"default\", new()\n {\n Dataset = dataset.Id,\n Version = \"R4\",\n EnableUpdateCreate = false,\n DisableReferentialIntegrity = false,\n DisableResourceVersioning = false,\n EnableHistoryImport = false,\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n NotificationConfigs = new[]\n {\n new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n SendFullResource = true,\n SendPreviousResourceOnDelete = true,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = google_beta,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", nil, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewFhirStore(ctx, \"default\", \u0026healthcare.FhirStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tVersion: pulumi.String(\"R4\"),\n\t\t\tEnableUpdateCreate: pulumi.Bool(false),\n\t\t\tDisableReferentialIntegrity: pulumi.Bool(false),\n\t\t\tDisableResourceVersioning: pulumi.Bool(false),\n\t\t\tEnableHistoryImport: pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t\tNotificationConfigs: healthcare.FhirStoreNotificationConfigArray{\n\t\t\t\t\u0026healthcare.FhirStoreNotificationConfigArgs{\n\t\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\t\tSendFullResource: pulumi.Bool(true),\n\t\t\t\t\tSendPreviousResourceOnDelete: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(google_beta))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.FhirStore;\nimport com.pulumi.gcp.healthcare.FhirStoreArgs;\nimport com.pulumi.gcp.healthcare.inputs.FhirStoreNotificationConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\", TopicArgs.Empty, CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder() \n .location(\"us-central1\")\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n var default_ = new FhirStore(\"default\", FhirStoreArgs.builder() \n .dataset(dataset.id())\n .version(\"R4\")\n .enableUpdateCreate(false)\n .disableReferentialIntegrity(false)\n .disableResourceVersioning(false)\n .enableHistoryImport(false)\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .notificationConfigs(FhirStoreNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .sendFullResource(true)\n .sendPreviousResourceOnDelete(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(google_beta)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:FhirStore\n properties:\n dataset: ${dataset.id}\n version: R4\n enableUpdateCreate: false\n disableReferentialIntegrity: false\n disableResourceVersioning: false\n enableHistoryImport: false\n labels:\n label1: labelvalue1\n notificationConfigs:\n - pubsubTopic: ${topic.id}\n sendFullResource: true\n sendPreviousResourceOnDelete: true\n options:\n provider: ${[\"google-beta\"]}\n topic:\n type: gcp:pubsub:Topic\n options:\n provider: ${[\"google-beta\"]}\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n options:\n provider: ${[\"google-beta\"]}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nFhirStore can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/fhirStores/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:healthcare/fhirStore:FhirStore default {{dataset}}/{{name}}\n```\n\n ", "properties": { "complexDataTypeReferenceParsing": { "type": "string", @@ -154891,6 +155556,10 @@ "type": "string", "description": "Identifies the dataset addressed by this request. Must be in the format\n'projects/{project}/locations/{location}/datasets/{dataset}'\n\n\n- - -\n" }, + "defaultSearchHandlingStrict": { + "type": "boolean", + "description": "If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters.\nIf false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters.\nThe handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient.\n" + }, "disableReferentialIntegrity": { "type": "boolean", "description": "Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store\ncreation. The default value is false, meaning that the API will enforce referential integrity and fail the\nrequests that will result in inconsistent state in the FHIR store. When this field is set to true, the API\nwill skip referential integrity check. Consequently, operations that rely on references, such as\nPatient.get$everything, will not return all the results if broken references exist.\n** Changing this property may recreate the FHIR store (removing all data) **\n" @@ -154961,6 +155630,10 @@ "description": "Identifies the dataset addressed by this request. Must be in the format\n'projects/{project}/locations/{location}/datasets/{dataset}'\n\n\n- - -\n", "willReplaceOnChanges": true }, + "defaultSearchHandlingStrict": { + "type": "boolean", + "description": "If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters.\nIf false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters.\nThe handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient.\n" + }, "disableReferentialIntegrity": { "type": "boolean", "description": "Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store\ncreation. The default value is false, meaning that the API will enforce referential integrity and fail the\nrequests that will result in inconsistent state in the FHIR store. When this field is set to true, the API\nwill skip referential integrity check. Consequently, operations that rely on references, such as\nPatient.get$everything, will not return all the results if broken references exist.\n** Changing this property may recreate the FHIR store (removing all data) **\n", @@ -155031,6 +155704,10 @@ "description": "Identifies the dataset addressed by this request. Must be in the format\n'projects/{project}/locations/{location}/datasets/{dataset}'\n\n\n- - -\n", "willReplaceOnChanges": true }, + "defaultSearchHandlingStrict": { + "type": "boolean", + "description": "If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters.\nIf false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters.\nThe handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient.\n" + }, "disableReferentialIntegrity": { "type": "boolean", "description": "Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store\ncreation. The default value is false, meaning that the API will enforce referential integrity and fail the\nrequests that will result in inconsistent state in the FHIR store. When this field is set to true, the API\nwill skip referential integrity check. Consequently, operations that rely on references, such as\nPatient.get$everything, will not return all the results if broken references exist.\n** Changing this property may recreate the FHIR store (removing all data) **\n", @@ -168352,7 +169029,7 @@ } }, "gcp:networkservices/gateway:Gateway": { - "description": "Gateway represents the configuration for a proxy, typically a load balancer.\nIt captures the ip:port over which the services are exposed by the proxy,\nalong with any policy configurations. Routes have reference to to Gateways\nto dictate how requests should be routed by this Gateway.\n\n\nTo get more information about Gateway, see:\n\n* [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-services/rest/v1/projects.locations.gateways)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Network Services Gateway Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n ports: [443],\n scope: \"default-scope-basic\",\n type: \"OPEN_MESH\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n ports=[443],\n scope=\"default-scope-basic\",\n type=\"OPEN_MESH\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-basic\",\n Type = \"OPEN_MESH\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"default-scope-basic\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder() \n .ports(443)\n .scope(\"default-scope-basic\")\n .type(\"OPEN_MESH\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n ports:\n - 443\n scope: default-scope-basic\n type: OPEN_MESH\n```\n{{% /example %}}\n{{% example %}}\n### Network Services Gateway Advanced\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n description: \"my description\",\n labels: {\n foo: \"bar\",\n },\n ports: [443],\n scope: \"default-scope-advance\",\n type: \"OPEN_MESH\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n description=\"my description\",\n labels={\n \"foo\": \"bar\",\n },\n ports=[443],\n scope=\"default-scope-advance\",\n type=\"OPEN_MESH\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Description = \"my description\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-advance\",\n Type = \"OPEN_MESH\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"default-scope-advance\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder() \n .description(\"my description\")\n .labels(Map.of(\"foo\", \"bar\"))\n .ports(443)\n .scope(\"default-scope-advance\")\n .type(\"OPEN_MESH\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n description: my description\n labels:\n foo: bar\n ports:\n - 443\n scope: default-scope-advance\n type: OPEN_MESH\n```\n{{% /example %}}\n{{% example %}}\n### Network Services Gateway Secure Web Proxy\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"defaultCertificate\", {\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: fs.readFileSync(\"test-fixtures/certificatemanager/cert.pem\"),\n pemPrivateKey: fs.readFileSync(\"test-fixtures/certificatemanager/private-key.pem\"),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"defaultNetwork\", {\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"defaultSubnetwork\", {\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", {location: \"us-central1\"});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", {\n location: \"us-central1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"defaultGateway\", {\n location: \"us-central1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [defaultCertificate.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"defaultCertificate\",\n location=\"us-central1\",\n self_managed=gcp.certificatemanager.CertificateSelfManagedArgs(\n pem_certificate=(lambda path: open(path).read())(\"test-fixtures/certificatemanager/cert.pem\"),\n pem_private_key=(lambda path: open(path).read())(\"test-fixtures/certificatemanager/private-key.pem\"),\n ))\ndefault_network = gcp.compute.Network(\"defaultNetwork\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"defaultSubnetwork\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", location=\"us-central1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\",\n location=\"us-central1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"defaultGateway\",\n location=\"us-central1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default_certificate.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts=pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"defaultCertificate\", new()\n {\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = File.ReadAllText(\"test-fixtures/certificatemanager/cert.pem\"),\n PemPrivateKey = File.ReadAllText(\"test-fixtures/certificatemanager/private-key.pem\"),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"defaultNetwork\", new()\n {\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"defaultSubnetwork\", new()\n {\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", new()\n {\n Location = \"us-central1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", new()\n {\n Location = \"us-central1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"defaultGateway\", new()\n {\n Location = \"us-central1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n defaultCertificate.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"defaultCertificate\", \u0026certificatemanager.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: readFileOrPanic(\"test-fixtures/certificatemanager/cert.pem\"),\n\t\t\t\tPemPrivateKey: readFileOrPanic(\"test-fixtures/certificatemanager/private-key.pem\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"defaultNetwork\", \u0026compute.NetworkArgs{\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"defaultSubnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"defaultGatewaySecurityPolicy\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"defaultGatewaySecurityPolicyRule\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"defaultGateway\", \u0026networkservices.GatewayArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder() \n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(Files.readString(Paths.get(\"test-fixtures/certificatemanager/cert.pem\")))\n .pemPrivateKey(Files.readString(Paths.get(\"test-fixtures/certificatemanager/private-key.pem\")))\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder() \n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder() \n .location(\"us-central1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder() \n .location(\"us-central1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(defaultCertificate.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n properties:\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::readFile: test-fixtures/certificatemanager/cert.pem\n pemPrivateKey:\n fn::readFile: test-fixtures/certificatemanager/private-key.pem\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n location: us-central1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n properties:\n location: us-central1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n properties:\n location: us-central1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${defaultCertificate.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n{{% /example %}}\n{{% example %}}\n### Network Services Gateway Multiple Swp Same Network\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"defaultCertificate\", {\n location: \"us-south1\",\n selfManaged: {\n pemCertificate: fs.readFileSync(\"test-fixtures/certificatemanager/cert.pem\"),\n pemPrivateKey: fs.readFileSync(\"test-fixtures/certificatemanager/private-key.pem\"),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"defaultNetwork\", {\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"defaultSubnetwork\", {\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", {location: \"us-south1\"});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", {\n location: \"us-south1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"defaultGateway\", {\n location: \"us-south1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [defaultCertificate.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\nconst gateway2 = new gcp.networkservices.Gateway(\"gateway2\", {\n location: \"us-south1\",\n addresses: [\"10.128.0.98\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope2\",\n certificateUrls: [defaultCertificate.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"defaultCertificate\",\n location=\"us-south1\",\n self_managed=gcp.certificatemanager.CertificateSelfManagedArgs(\n pem_certificate=(lambda path: open(path).read())(\"test-fixtures/certificatemanager/cert.pem\"),\n pem_private_key=(lambda path: open(path).read())(\"test-fixtures/certificatemanager/private-key.pem\"),\n ))\ndefault_network = gcp.compute.Network(\"defaultNetwork\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"defaultSubnetwork\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", location=\"us-south1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\",\n location=\"us-south1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"defaultGateway\",\n location=\"us-south1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default_certificate.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts=pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\ngateway2 = gcp.networkservices.Gateway(\"gateway2\",\n location=\"us-south1\",\n addresses=[\"10.128.0.98\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope2\",\n certificate_urls=[default_certificate.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts=pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"defaultCertificate\", new()\n {\n Location = \"us-south1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = File.ReadAllText(\"test-fixtures/certificatemanager/cert.pem\"),\n PemPrivateKey = File.ReadAllText(\"test-fixtures/certificatemanager/private-key.pem\"),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"defaultNetwork\", new()\n {\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"defaultSubnetwork\", new()\n {\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", new()\n {\n Location = \"us-south1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", new()\n {\n Location = \"us-south1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"defaultGateway\", new()\n {\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n defaultCertificate.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n proxyonlysubnet,\n },\n });\n\n var gateway2 = new Gcp.NetworkServices.Gateway(\"gateway2\", new()\n {\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.98\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope2\",\n CertificateUrls = new[]\n {\n defaultCertificate.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"defaultCertificate\", \u0026certificatemanager.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: readFileOrPanic(\"test-fixtures/certificatemanager/cert.pem\"),\n\t\t\t\tPemPrivateKey: readFileOrPanic(\"test-fixtures/certificatemanager/private-key.pem\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"defaultNetwork\", \u0026compute.NetworkArgs{\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"defaultSubnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"defaultGatewaySecurityPolicy\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"defaultGatewaySecurityPolicyRule\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"defaultGateway\", \u0026networkservices.GatewayArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"gateway2\", \u0026networkservices.GatewayArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.98\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope2\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder() \n .location(\"us-south1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(Files.readString(Paths.get(\"test-fixtures/certificatemanager/cert.pem\")))\n .pemPrivateKey(Files.readString(Paths.get(\"test-fixtures/certificatemanager/private-key.pem\")))\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder() \n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder() \n .location(\"us-south1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder() \n .location(\"us-south1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder() \n .location(\"us-south1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(defaultCertificate.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n var gateway2 = new Gateway(\"gateway2\", GatewayArgs.builder() \n .location(\"us-south1\")\n .addresses(\"10.128.0.98\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope2\")\n .certificateUrls(defaultCertificate.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n properties:\n location: us-south1\n selfManaged:\n pemCertificate:\n fn::readFile: test-fixtures/certificatemanager/cert.pem\n pemPrivateKey:\n fn::readFile: test-fixtures/certificatemanager/private-key.pem\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n location: us-south1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n properties:\n location: us-south1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n properties:\n location: us-south1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${defaultCertificate.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n gateway2:\n type: gcp:networkservices:Gateway\n properties:\n location: us-south1\n addresses:\n - 10.128.0.98\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope2\n certificateUrls:\n - ${defaultCertificate.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGateway can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:networkservices/gateway:Gateway default projects/{{project}}/locations/{{location}}/gateways/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:networkservices/gateway:Gateway default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:networkservices/gateway:Gateway default {{location}}/{{name}}\n```\n\n ", + "description": "Gateway represents the configuration for a proxy, typically a load balancer.\nIt captures the ip:port over which the services are exposed by the proxy,\nalong with any policy configurations. Routes have reference to to Gateways\nto dictate how requests should be routed by this Gateway.\n\n\nTo get more information about Gateway, see:\n\n* [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-services/rest/v1/projects.locations.gateways)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Network Services Gateway Basic\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n ports: [443],\n scope: \"default-scope-basic\",\n type: \"OPEN_MESH\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n ports=[443],\n scope=\"default-scope-basic\",\n type=\"OPEN_MESH\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-basic\",\n Type = \"OPEN_MESH\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"default-scope-basic\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder() \n .ports(443)\n .scope(\"default-scope-basic\")\n .type(\"OPEN_MESH\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n ports:\n - 443\n scope: default-scope-basic\n type: OPEN_MESH\n```\n{{% /example %}}\n{{% example %}}\n### Network Services Gateway Advanced\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n description: \"my description\",\n labels: {\n foo: \"bar\",\n },\n ports: [443],\n scope: \"default-scope-advance\",\n type: \"OPEN_MESH\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n description=\"my description\",\n labels={\n \"foo\": \"bar\",\n },\n ports=[443],\n scope=\"default-scope-advance\",\n type=\"OPEN_MESH\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Description = \"my description\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-advance\",\n Type = \"OPEN_MESH\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"default-scope-advance\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder() \n .description(\"my description\")\n .labels(Map.of(\"foo\", \"bar\"))\n .ports(443)\n .scope(\"default-scope-advance\")\n .type(\"OPEN_MESH\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n description: my description\n labels:\n foo: bar\n ports:\n - 443\n scope: default-scope-advance\n type: OPEN_MESH\n```\n{{% /example %}}\n{{% example %}}\n### Network Services Gateway Secure Web Proxy\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"defaultCertificate\", {\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: fs.readFileSync(\"test-fixtures/cert.pem\"),\n pemPrivateKey: fs.readFileSync(\"test-fixtures/private-key.pem\"),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"defaultNetwork\", {\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"defaultSubnetwork\", {\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", {location: \"us-central1\"});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", {\n location: \"us-central1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"defaultGateway\", {\n location: \"us-central1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [defaultCertificate.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"defaultCertificate\",\n location=\"us-central1\",\n self_managed=gcp.certificatemanager.CertificateSelfManagedArgs(\n pem_certificate=(lambda path: open(path).read())(\"test-fixtures/cert.pem\"),\n pem_private_key=(lambda path: open(path).read())(\"test-fixtures/private-key.pem\"),\n ))\ndefault_network = gcp.compute.Network(\"defaultNetwork\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"defaultSubnetwork\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", location=\"us-central1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\",\n location=\"us-central1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"defaultGateway\",\n location=\"us-central1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default_certificate.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts=pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"defaultCertificate\", new()\n {\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = File.ReadAllText(\"test-fixtures/cert.pem\"),\n PemPrivateKey = File.ReadAllText(\"test-fixtures/private-key.pem\"),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"defaultNetwork\", new()\n {\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"defaultSubnetwork\", new()\n {\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", new()\n {\n Location = \"us-central1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", new()\n {\n Location = \"us-central1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"defaultGateway\", new()\n {\n Location = \"us-central1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n defaultCertificate.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"defaultCertificate\", \u0026certificatemanager.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: readFileOrPanic(\"test-fixtures/cert.pem\"),\n\t\t\t\tPemPrivateKey: readFileOrPanic(\"test-fixtures/private-key.pem\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"defaultNetwork\", \u0026compute.NetworkArgs{\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"defaultSubnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"defaultGatewaySecurityPolicy\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"defaultGatewaySecurityPolicyRule\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"defaultGateway\", \u0026networkservices.GatewayArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder() \n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(Files.readString(Paths.get(\"test-fixtures/cert.pem\")))\n .pemPrivateKey(Files.readString(Paths.get(\"test-fixtures/private-key.pem\")))\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder() \n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder() \n .location(\"us-central1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder() \n .location(\"us-central1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder() \n .location(\"us-central1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(defaultCertificate.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n properties:\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::readFile: test-fixtures/cert.pem\n pemPrivateKey:\n fn::readFile: test-fixtures/private-key.pem\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n location: us-central1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n properties:\n location: us-central1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n properties:\n location: us-central1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${defaultCertificate.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n{{% /example %}}\n{{% example %}}\n### Network Services Gateway Multiple Swp Same Network\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"defaultCertificate\", {\n location: \"us-south1\",\n selfManaged: {\n pemCertificate: fs.readFileSync(\"test-fixtures/cert.pem\"),\n pemPrivateKey: fs.readFileSync(\"test-fixtures/private-key.pem\"),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"defaultNetwork\", {\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"defaultSubnetwork\", {\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", {location: \"us-south1\"});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", {\n location: \"us-south1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"defaultGateway\", {\n location: \"us-south1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [defaultCertificate.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\nconst gateway2 = new gcp.networkservices.Gateway(\"gateway2\", {\n location: \"us-south1\",\n addresses: [\"10.128.0.98\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope2\",\n certificateUrls: [defaultCertificate.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"defaultCertificate\",\n location=\"us-south1\",\n self_managed=gcp.certificatemanager.CertificateSelfManagedArgs(\n pem_certificate=(lambda path: open(path).read())(\"test-fixtures/cert.pem\"),\n pem_private_key=(lambda path: open(path).read())(\"test-fixtures/private-key.pem\"),\n ))\ndefault_network = gcp.compute.Network(\"defaultNetwork\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"defaultSubnetwork\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", location=\"us-south1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\",\n location=\"us-south1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"defaultGateway\",\n location=\"us-south1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default_certificate.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts=pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\ngateway2 = gcp.networkservices.Gateway(\"gateway2\",\n location=\"us-south1\",\n addresses=[\"10.128.0.98\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope2\",\n certificate_urls=[default_certificate.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts=pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"defaultCertificate\", new()\n {\n Location = \"us-south1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = File.ReadAllText(\"test-fixtures/cert.pem\"),\n PemPrivateKey = File.ReadAllText(\"test-fixtures/private-key.pem\"),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"defaultNetwork\", new()\n {\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"defaultSubnetwork\", new()\n {\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", new()\n {\n Location = \"us-south1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", new()\n {\n Location = \"us-south1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"defaultGateway\", new()\n {\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n defaultCertificate.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n proxyonlysubnet,\n },\n });\n\n var gateway2 = new Gcp.NetworkServices.Gateway(\"gateway2\", new()\n {\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.98\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope2\",\n CertificateUrls = new[]\n {\n defaultCertificate.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn = new[]\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"defaultCertificate\", \u0026certificatemanager.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: readFileOrPanic(\"test-fixtures/cert.pem\"),\n\t\t\t\tPemPrivateKey: readFileOrPanic(\"test-fixtures/private-key.pem\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"defaultNetwork\", \u0026compute.NetworkArgs{\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"defaultSubnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"defaultGatewaySecurityPolicy\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"defaultGatewaySecurityPolicyRule\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"defaultGateway\", \u0026networkservices.GatewayArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"gateway2\", \u0026networkservices.GatewayArgs{\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.98\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope2\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder() \n .location(\"us-south1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(Files.readString(Paths.get(\"test-fixtures/cert.pem\")))\n .pemPrivateKey(Files.readString(Paths.get(\"test-fixtures/private-key.pem\")))\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder() \n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder() \n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder() \n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder() \n .location(\"us-south1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder() \n .location(\"us-south1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder() \n .location(\"us-south1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(defaultCertificate.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n var gateway2 = new Gateway(\"gateway2\", GatewayArgs.builder() \n .location(\"us-south1\")\n .addresses(\"10.128.0.98\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope2\")\n .certificateUrls(defaultCertificate.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n properties:\n location: us-south1\n selfManaged:\n pemCertificate:\n fn::readFile: test-fixtures/cert.pem\n pemPrivateKey:\n fn::readFile: test-fixtures/private-key.pem\n defaultNetwork:\n type: gcp:compute:Network\n properties:\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n properties:\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n location: us-south1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n properties:\n location: us-south1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n properties:\n location: us-south1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${defaultCertificate.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n gateway2:\n type: gcp:networkservices:Gateway\n properties:\n location: us-south1\n addresses:\n - 10.128.0.98\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope2\n certificateUrls:\n - ${defaultCertificate.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependson:\n - ${proxyonlysubnet}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGateway can be imported using any of these accepted formats\n\n```sh\n $ pulumi import gcp:networkservices/gateway:Gateway default projects/{{project}}/locations/{{location}}/gateways/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:networkservices/gateway:Gateway default {{project}}/{{location}}/{{name}}\n```\n\n\n\n```sh\n $ pulumi import gcp:networkservices/gateway:Gateway default {{location}}/{{name}}\n```\n\n ", "properties": { "addresses": { "type": "array", @@ -176314,6 +176991,13 @@ "ttl": { "type": "string", "description": "The TTL for the Secret.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n" + }, + "versionAliases": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Mapping from version alias to version name.\nA version alias is a string with a maximum length of 63 characters and can contain\nuppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_')\ncharacters. An alias string must start with a letter and cannot be the string\n'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret.\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n" } }, "required": [ @@ -176373,6 +177057,13 @@ "type": "string", "description": "The TTL for the Secret.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n", "willReplaceOnChanges": true + }, + "versionAliases": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Mapping from version alias to version name.\nA version alias is a string with a maximum length of 63 characters and can contain\nuppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_')\ncharacters. An alias string must start with a letter and cannot be the string\n'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret.\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n" } }, "requiredInputs": [ @@ -176438,6 +177129,13 @@ "type": "string", "description": "The TTL for the Secret.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n", "willReplaceOnChanges": true + }, + "versionAliases": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Mapping from version alias to version name.\nA version alias is a string with a maximum length of 63 characters and can contain\nuppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_')\ncharacters. An alias string must start with a letter and cannot be the string\n'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret.\nAn object containing a list of \"key\": value pairs. Example:\n{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n" } }, "type": "object" @@ -200756,7 +201454,7 @@ } }, "gcp:monitoring/getAppEngineService:getAppEngineService": { - "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nAn App Engine monitoring service is automatically created by GCP to monitor\nApp Engine services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Monitoring App Engine Service\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n});\nconst myapp = new gcp.appengine.StandardAppVersion(\"myapp\", {\n versionId: \"v1\",\n service: \"myapp\",\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n deleteServiceOnDestroy: false,\n});\nconst srv = gcp.monitoring.getAppEngineServiceOutput({\n moduleId: myapp.service,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\nmyapp = gcp.appengine.StandardAppVersion(\"myapp\",\n version_id=\"v1\",\n service=\"myapp\",\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n delete_service_on_destroy=False)\nsrv = gcp.monitoring.get_app_engine_service_output(module_id=myapp.service)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n });\n\n var myapp = new Gcp.AppEngine.StandardAppVersion(\"myapp\", new()\n {\n VersionId = \"v1\",\n Service = \"myapp\",\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n DeleteServiceOnDestroy = false,\n });\n\n var srv = Gcp.Monitoring.GetAppEngineService.Invoke(new()\n {\n ModuleId = myapp.Service,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/appengine/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyapp, err := appengine.NewStandardAppVersion(ctx, \"myapp\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = monitoring.GetAppEngineServiceOutput(ctx, monitoring.GetAppEngineServiceOutputArgs{\n\t\t\tModuleId: myapp.Service,\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetAppEngineServiceArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/appengine/hello-world.zip\"))\n .build());\n\n var myapp = new StandardAppVersion(\"myapp\", StandardAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"myapp\")\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .deleteServiceOnDestroy(false)\n .build());\n\n final var srv = MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(myapp.service())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myapp:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: myapp\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n deleteServiceOnDestroy: false\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/appengine/hello-world.zip\nvariables:\n srv:\n fn::invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: ${myapp.service}\n```\n{{% /example %}}\n{{% /examples %}}", + "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nAn App Engine monitoring service is automatically created by GCP to monitor\nApp Engine services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### Monitoring App Engine Service\n\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {location: \"US\"});\nconst object = new gcp.storage.BucketObject(\"object\", {\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst myapp = new gcp.appengine.StandardAppVersion(\"myapp\", {\n versionId: \"v1\",\n service: \"myapp\",\n runtime: \"nodejs10\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n deleteServiceOnDestroy: false,\n});\nconst srv = gcp.monitoring.getAppEngineServiceOutput({\n moduleId: myapp.service,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\", location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nmyapp = gcp.appengine.StandardAppVersion(\"myapp\",\n version_id=\"v1\",\n service=\"myapp\",\n runtime=\"nodejs10\",\n entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(\n shell=\"node ./app.js\",\n ),\n deployment=gcp.appengine.StandardAppVersionDeploymentArgs(\n zip=gcp.appengine.StandardAppVersionDeploymentZipArgs(\n source_url=pulumi.Output.all(bucket.name, object.name).apply(lambda bucketName, objectName: f\"https://storage.googleapis.com/{bucket_name}/{object_name}\"),\n ),\n ),\n env_variables={\n \"port\": \"8080\",\n },\n delete_service_on_destroy=False)\nsrv = gcp.monitoring.get_app_engine_service_output(module_id=myapp.service)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var myapp = new Gcp.AppEngine.StandardAppVersion(\"myapp\", new()\n {\n VersionId = \"v1\",\n Service = \"myapp\",\n Runtime = \"nodejs10\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n DeleteServiceOnDestroy = false,\n });\n\n var srv = Gcp.Monitoring.GetAppEngineService.Invoke(new()\n {\n ModuleId = myapp.Service,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyapp, err := appengine.NewStandardAppVersion(ctx, \"myapp\", \u0026appengine.StandardAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"myapp\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tEntrypoint: \u0026appengine.StandardAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.StandardAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.StandardAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", bucketName, objectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = monitoring.GetAppEngineServiceOutput(ctx, monitoring.GetAppEngineServiceOutputArgs{\n\t\t\tModuleId: myapp.Service,\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.StandardAppVersion;\nimport com.pulumi.gcp.appengine.StandardAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetAppEngineServiceArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder() \n .location(\"US\")\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder() \n .bucket(bucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var myapp = new StandardAppVersion(\"myapp\", StandardAppVersionArgs.builder() \n .versionId(\"v1\")\n .service(\"myapp\")\n .runtime(\"nodejs10\")\n .entrypoint(StandardAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(StandardAppVersionDeploymentArgs.builder()\n .zip(StandardAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", bucketName,objectName);\n }))\n .build())\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .deleteServiceOnDestroy(false)\n .build());\n\n final var srv = MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(myapp.service())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myapp:\n type: gcp:appengine:StandardAppVersion\n properties:\n versionId: v1\n service: myapp\n runtime: nodejs10\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n deleteServiceOnDestroy: false\n bucket:\n type: gcp:storage:Bucket\n properties:\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\nvariables:\n srv:\n fn::invoke:\n Function: gcp:monitoring:getAppEngineService\n Arguments:\n moduleId: ${myapp.service}\n```\n{{% /example %}}\n{{% /examples %}}", "inputs": { "description": "A collection of arguments for invoking getAppEngineService.\n", "properties": { @@ -202801,6 +203499,12 @@ }, "ttl": { "type": "string" + }, + "versionAliases": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "type": "object", @@ -202815,6 +203519,7 @@ "secretId", "topics", "ttl", + "versionAliases", "id" ] } diff --git a/provider/resources.go b/provider/resources.go index 655a0631b1..7b2cc60ec5 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -44,6 +44,7 @@ const ( gcpAppEngine = "AppEngine" // AppEngine resources gcpArtifactRegistry = "ArtifactRegistry" // ArtifactRegistry resources gcpAssuredWorkloads = "AssuredWorkloads" // AssuredWorkloads resources + gcpBackupDR = "BackupDisasterRecovery" // Backup and Disaster Recovery resources gcpBeyondcorp = "Beyondcorp" // Beyondcorp resources gcpBigQueryAnalyticsHub = "BigQueryAnalyticsHub" // BigQuery Analytics Hub resources gcpBigQueryDataPolicy = "BigQueryDataPolicy" // BigQuery Data Policy resources @@ -149,6 +150,7 @@ var moduleMapping = map[string]string{ "app_engine": gcpAppEngine, "artifact_registry": gcpArtifactRegistry, "assured_workloads": gcpAssuredWorkloads, + "backup_dr": gcpBackupDR, "beyondcorp": gcpBeyondcorp, "bigquery_analytics_hub": gcpBigQueryAnalyticsHub, "bigquery_datapolicy_data_policy": gcpBigQueryDataPolicy, diff --git a/sdk/dotnet/ApiGateway/ApiConfig.cs b/sdk/dotnet/ApiGateway/ApiConfig.cs index 66058b5a70..90c709886e 100644 --- a/sdk/dotnet/ApiGateway/ApiConfig.cs +++ b/sdk/dotnet/ApiGateway/ApiConfig.cs @@ -54,7 +54,7 @@ namespace Pulumi.Gcp.ApiGateway /// Document = new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentDocumentArgs /// { /// Path = "spec.yaml", - /// Contents = ReadFileBase64("test-fixtures/apigateway/openapi.yaml"), + /// Contents = ReadFileBase64("test-fixtures/openapi.yaml"), /// }, /// }, /// }, diff --git a/sdk/dotnet/ApiGateway/Gateway.cs b/sdk/dotnet/ApiGateway/Gateway.cs index 078c02caa3..da2f234e16 100644 --- a/sdk/dotnet/ApiGateway/Gateway.cs +++ b/sdk/dotnet/ApiGateway/Gateway.cs @@ -54,7 +54,7 @@ namespace Pulumi.Gcp.ApiGateway /// Document = new Gcp.ApiGateway.Inputs.ApiConfigOpenapiDocumentDocumentArgs /// { /// Path = "spec.yaml", - /// Contents = ReadFileBase64("test-fixtures/apigateway/openapi.yaml"), + /// Contents = ReadFileBase64("test-fixtures/openapi.yaml"), /// }, /// }, /// }, diff --git a/sdk/dotnet/AppEngine/ApplicationUrlDispatchRules.cs b/sdk/dotnet/AppEngine/ApplicationUrlDispatchRules.cs index c4e6700abc..197d9ce617 100644 --- a/sdk/dotnet/AppEngine/ApplicationUrlDispatchRules.cs +++ b/sdk/dotnet/AppEngine/ApplicationUrlDispatchRules.cs @@ -35,7 +35,7 @@ namespace Pulumi.Gcp.AppEngine /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var adminV3 = new Gcp.AppEngine.StandardAppVersion("adminV3", new() diff --git a/sdk/dotnet/AppEngine/EngineSplitTraffic.cs b/sdk/dotnet/AppEngine/EngineSplitTraffic.cs index 35eb0f1403..875b36a8fb 100644 --- a/sdk/dotnet/AppEngine/EngineSplitTraffic.cs +++ b/sdk/dotnet/AppEngine/EngineSplitTraffic.cs @@ -35,7 +35,7 @@ namespace Pulumi.Gcp.AppEngine /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var liveappV1 = new Gcp.AppEngine.StandardAppVersion("liveappV1", new() diff --git a/sdk/dotnet/AppEngine/FlexibleAppVersion.cs b/sdk/dotnet/AppEngine/FlexibleAppVersion.cs index 67290a82bd..3b66aa10f8 100644 --- a/sdk/dotnet/AppEngine/FlexibleAppVersion.cs +++ b/sdk/dotnet/AppEngine/FlexibleAppVersion.cs @@ -92,7 +92,7 @@ namespace Pulumi.Gcp.AppEngine /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var myappV1 = new Gcp.AppEngine.FlexibleAppVersion("myappV1", new() diff --git a/sdk/dotnet/AppEngine/ServiceNetworkSettings.cs b/sdk/dotnet/AppEngine/ServiceNetworkSettings.cs index 2e98c51f80..0fc1523df8 100644 --- a/sdk/dotnet/AppEngine/ServiceNetworkSettings.cs +++ b/sdk/dotnet/AppEngine/ServiceNetworkSettings.cs @@ -35,7 +35,7 @@ namespace Pulumi.Gcp.AppEngine /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var internalappStandardAppVersion = new Gcp.AppEngine.StandardAppVersion("internalappStandardAppVersion", new() diff --git a/sdk/dotnet/AppEngine/StandardAppVersion.cs b/sdk/dotnet/AppEngine/StandardAppVersion.cs index c6a28a15b2..30c911e628 100644 --- a/sdk/dotnet/AppEngine/StandardAppVersion.cs +++ b/sdk/dotnet/AppEngine/StandardAppVersion.cs @@ -60,7 +60,7 @@ namespace Pulumi.Gcp.AppEngine /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var myappV1 = new Gcp.AppEngine.StandardAppVersion("myappV1", new() diff --git a/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriArgs.cs b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriArgs.cs new file mode 100644 index 0000000000..42b8c6220f --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriArgs.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery.Inputs +{ + + public sealed class ManagementServerManagementUriArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// The management console api endpoint. + /// + [Input("api")] + public Input? Api { get; set; } + + /// + /// (Output) + /// The management console webUi. + /// + [Input("webUi")] + public Input? WebUi { get; set; } + + public ManagementServerManagementUriArgs() + { + } + public static new ManagementServerManagementUriArgs Empty => new ManagementServerManagementUriArgs(); + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriGetArgs.cs b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriGetArgs.cs new file mode 100644 index 0000000000..6491751a24 --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerManagementUriGetArgs.cs @@ -0,0 +1,34 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery.Inputs +{ + + public sealed class ManagementServerManagementUriGetArgs : global::Pulumi.ResourceArgs + { + /// + /// (Output) + /// The management console api endpoint. + /// + [Input("api")] + public Input? Api { get; set; } + + /// + /// (Output) + /// The management console webUi. + /// + [Input("webUi")] + public Input? WebUi { get; set; } + + public ManagementServerManagementUriGetArgs() + { + } + public static new ManagementServerManagementUriGetArgs Empty => new ManagementServerManagementUriGetArgs(); + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkArgs.cs b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkArgs.cs new file mode 100644 index 0000000000..b6a8b2ada9 --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkArgs.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery.Inputs +{ + + public sealed class ManagementServerNetworkArgs : global::Pulumi.ResourceArgs + { + /// + /// Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + /// + [Input("network", required: true)] + public Input Network { get; set; } = null!; + + /// + /// Type of Network peeringMode + /// Default value is `PRIVATE_SERVICE_ACCESS`. + /// Possible values are: `PRIVATE_SERVICE_ACCESS`. + /// + /// - - - + /// + [Input("peeringMode")] + public Input? PeeringMode { get; set; } + + public ManagementServerNetworkArgs() + { + } + public static new ManagementServerNetworkArgs Empty => new ManagementServerNetworkArgs(); + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkGetArgs.cs b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkGetArgs.cs new file mode 100644 index 0000000000..69d8a72f6a --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/Inputs/ManagementServerNetworkGetArgs.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery.Inputs +{ + + public sealed class ManagementServerNetworkGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + /// + [Input("network", required: true)] + public Input Network { get; set; } = null!; + + /// + /// Type of Network peeringMode + /// Default value is `PRIVATE_SERVICE_ACCESS`. + /// Possible values are: `PRIVATE_SERVICE_ACCESS`. + /// + /// - - - + /// + [Input("peeringMode")] + public Input? PeeringMode { get; set; } + + public ManagementServerNetworkGetArgs() + { + } + public static new ManagementServerNetworkGetArgs Empty => new ManagementServerNetworkGetArgs(); + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/ManagementServer.cs b/sdk/dotnet/BackupDisasterRecovery/ManagementServer.cs new file mode 100644 index 0000000000..2e686761e3 --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/ManagementServer.cs @@ -0,0 +1,303 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery +{ + /// + /// ## Example Usage + /// ### Backup Dr Management Server + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var defaultNetwork = new Gcp.Compute.Network("defaultNetwork", new() + /// { + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var privateIpAddress = new Gcp.Compute.GlobalAddress("privateIpAddress", new() + /// { + /// AddressType = "INTERNAL", + /// Purpose = "VPC_PEERING", + /// PrefixLength = 20, + /// Network = defaultNetwork.Id, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var defaultConnection = new Gcp.ServiceNetworking.Connection("defaultConnection", new() + /// { + /// Network = defaultNetwork.Id, + /// Service = "servicenetworking.googleapis.com", + /// ReservedPeeringRanges = new[] + /// { + /// privateIpAddress.Name, + /// }, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var ms_console = new Gcp.BackupDisasterRecovery.ManagementServer("ms-console", new() + /// { + /// Location = "us-central1", + /// Type = "BACKUP_RESTORE", + /// Networks = new[] + /// { + /// new Gcp.BackupDisasterRecovery.Inputs.ManagementServerNetworkArgs + /// { + /// Network = defaultNetwork.Id, + /// PeeringMode = "PRIVATE_SERVICE_ACCESS", + /// }, + /// }, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// DependsOn = new[] + /// { + /// defaultConnection, + /// }, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// ManagementServer can be imported using any of these accepted formats + /// + /// ```sh + /// $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}} + /// ``` + /// + [GcpResourceType("gcp:backupdisasterrecovery/managementServer:ManagementServer")] + public partial class ManagementServer : global::Pulumi.CustomResource + { + /// + /// The location for the management server (management console) + /// + [Output("location")] + public Output Location { get; private set; } = null!; + + /// + /// The management console URI + /// Structure is documented below. + /// + [Output("managementUris")] + public Output> ManagementUris { get; private set; } = null!; + + /// + /// The name of management server (management console) + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + /// + /// Network details to create management server (management console). + /// Structure is documented below. + /// + [Output("networks")] + public Output> Networks { get; private set; } = null!; + + /// + /// The oauth2ClientId of management console. + /// + [Output("oauth2ClientId")] + public Output Oauth2ClientId { get; private set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Output("project")] + public Output Project { get; private set; } = null!; + + /// + /// The type of management server (management console). + /// Default value is `BACKUP_RESTORE`. + /// Possible values are: `BACKUP_RESTORE`. + /// + [Output("type")] + public Output Type { get; private set; } = null!; + + + /// + /// Create a ManagementServer resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public ManagementServer(string name, ManagementServerArgs args, CustomResourceOptions? options = null) + : base("gcp:backupdisasterrecovery/managementServer:ManagementServer", name, args ?? new ManagementServerArgs(), MakeResourceOptions(options, "")) + { + } + + private ManagementServer(string name, Input id, ManagementServerState? state = null, CustomResourceOptions? options = null) + : base("gcp:backupdisasterrecovery/managementServer:ManagementServer", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing ManagementServer resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static ManagementServer Get(string name, Input id, ManagementServerState? state = null, CustomResourceOptions? options = null) + { + return new ManagementServer(name, id, state, options); + } + } + + public sealed class ManagementServerArgs : global::Pulumi.ResourceArgs + { + /// + /// The location for the management server (management console) + /// + [Input("location", required: true)] + public Input Location { get; set; } = null!; + + /// + /// The name of management server (management console) + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("networks", required: true)] + private InputList? _networks; + + /// + /// Network details to create management server (management console). + /// Structure is documented below. + /// + public InputList Networks + { + get => _networks ?? (_networks = new InputList()); + set => _networks = value; + } + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + /// + /// The type of management server (management console). + /// Default value is `BACKUP_RESTORE`. + /// Possible values are: `BACKUP_RESTORE`. + /// + [Input("type")] + public Input? Type { get; set; } + + public ManagementServerArgs() + { + } + public static new ManagementServerArgs Empty => new ManagementServerArgs(); + } + + public sealed class ManagementServerState : global::Pulumi.ResourceArgs + { + /// + /// The location for the management server (management console) + /// + [Input("location")] + public Input? Location { get; set; } + + [Input("managementUris")] + private InputList? _managementUris; + + /// + /// The management console URI + /// Structure is documented below. + /// + public InputList ManagementUris + { + get => _managementUris ?? (_managementUris = new InputList()); + set => _managementUris = value; + } + + /// + /// The name of management server (management console) + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("networks")] + private InputList? _networks; + + /// + /// Network details to create management server (management console). + /// Structure is documented below. + /// + public InputList Networks + { + get => _networks ?? (_networks = new InputList()); + set => _networks = value; + } + + /// + /// The oauth2ClientId of management console. + /// + [Input("oauth2ClientId")] + public Input? Oauth2ClientId { get; set; } + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + /// + /// The type of management server (management console). + /// Default value is `BACKUP_RESTORE`. + /// Possible values are: `BACKUP_RESTORE`. + /// + [Input("type")] + public Input? Type { get; set; } + + public ManagementServerState() + { + } + public static new ManagementServerState Empty => new ManagementServerState(); + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerManagementUri.cs b/sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerManagementUri.cs new file mode 100644 index 0000000000..6a3a92c456 --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerManagementUri.cs @@ -0,0 +1,37 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery.Outputs +{ + + [OutputType] + public sealed class ManagementServerManagementUri + { + /// + /// (Output) + /// The management console api endpoint. + /// + public readonly string? Api; + /// + /// (Output) + /// The management console webUi. + /// + public readonly string? WebUi; + + [OutputConstructor] + private ManagementServerManagementUri( + string? api, + + string? webUi) + { + Api = api; + WebUi = webUi; + } + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerNetwork.cs b/sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerNetwork.cs new file mode 100644 index 0000000000..31a6247b41 --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/Outputs/ManagementServerNetwork.cs @@ -0,0 +1,39 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.BackupDisasterRecovery.Outputs +{ + + [OutputType] + public sealed class ManagementServerNetwork + { + /// + /// Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + /// + public readonly string Network; + /// + /// Type of Network peeringMode + /// Default value is `PRIVATE_SERVICE_ACCESS`. + /// Possible values are: `PRIVATE_SERVICE_ACCESS`. + /// + /// - - - + /// + public readonly string? PeeringMode; + + [OutputConstructor] + private ManagementServerNetwork( + string network, + + string? peeringMode) + { + Network = network; + PeeringMode = peeringMode; + } + } +} diff --git a/sdk/dotnet/BackupDisasterRecovery/README.md b/sdk/dotnet/BackupDisasterRecovery/README.md new file mode 100644 index 0000000000..061b113996 --- /dev/null +++ b/sdk/dotnet/BackupDisasterRecovery/README.md @@ -0,0 +1 @@ +A Pulumi package for creating and managing Google Cloud Platform resources. diff --git a/sdk/dotnet/BigQuery/Job.cs b/sdk/dotnet/BigQuery/Job.cs index 024ee8e70f..eb8774519a 100644 --- a/sdk/dotnet/BigQuery/Job.cs +++ b/sdk/dotnet/BigQuery/Job.cs @@ -201,7 +201,7 @@ namespace Pulumi.Gcp.BigQuery /// /// var testBucketObject = new Gcp.Storage.BucketObject("testBucketObject", new() /// { - /// Source = new FileAsset("./test-fixtures/bigquerytable/test.parquet.gzip"), + /// Source = new FileAsset("./test-fixtures/test.parquet.gzip"), /// Bucket = testBucket.Name, /// }); /// diff --git a/sdk/dotnet/CertificateManager/Certificate.cs b/sdk/dotnet/CertificateManager/Certificate.cs index 49f2fd87d9..516956d7ce 100644 --- a/sdk/dotnet/CertificateManager/Certificate.cs +++ b/sdk/dotnet/CertificateManager/Certificate.cs @@ -80,7 +80,7 @@ namespace Pulumi.Gcp.CertificateManager /// { /// Location = "us-central1", /// Pool = pool.Name, - /// CertificateAuthorityId = "my-ca", + /// CertificateAuthorityId = "ca-authority", /// Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs /// { /// SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs @@ -225,8 +225,8 @@ namespace Pulumi.Gcp.CertificateManager /// Location = "us-central1", /// SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs /// { - /// PemCertificate = File.ReadAllText("test-fixtures/certificatemanager/cert.pem"), - /// PemPrivateKey = File.ReadAllText("test-fixtures/certificatemanager/private-key.pem"), + /// PemCertificate = File.ReadAllText("test-fixtures/cert.pem"), + /// PemPrivateKey = File.ReadAllText("test-fixtures/private-key.pem"), /// }, /// }); /// @@ -303,7 +303,8 @@ public partial class Certificate : global::Pulumi.CustomResource /// If unsure, choose this option. /// EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, /// served from non-core Google data centers. - /// Currently allowed only for managed certificates. + /// ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + /// see https://cloud.google.com/compute/docs/regions-zones /// [Output("scope")] public Output Scope { get; private set; } = null!; @@ -420,7 +421,8 @@ public InputMap Labels /// If unsure, choose this option. /// EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, /// served from non-core Google data centers. - /// Currently allowed only for managed certificates. + /// ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + /// see https://cloud.google.com/compute/docs/regions-zones /// [Input("scope")] public Input? Scope { get; set; } @@ -499,7 +501,8 @@ public InputMap Labels /// If unsure, choose this option. /// EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, /// served from non-core Google data centers. - /// Currently allowed only for managed certificates. + /// ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + /// see https://cloud.google.com/compute/docs/regions-zones /// [Input("scope")] public Input? Scope { get; set; } diff --git a/sdk/dotnet/CertificateManager/CertificateIssuanceConfig.cs b/sdk/dotnet/CertificateManager/CertificateIssuanceConfig.cs index 380ffaba79..37145ebd7c 100644 --- a/sdk/dotnet/CertificateManager/CertificateIssuanceConfig.cs +++ b/sdk/dotnet/CertificateManager/CertificateIssuanceConfig.cs @@ -39,7 +39,7 @@ namespace Pulumi.Gcp.CertificateManager /// { /// Location = "us-central1", /// Pool = pool.Name, - /// CertificateAuthorityId = "my-ca", + /// CertificateAuthorityId = "ca-authority", /// Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs /// { /// SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs diff --git a/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceArgs.cs b/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceArgs.cs index 1212d79cd2..2cf005291b 100644 --- a/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceArgs.cs +++ b/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.CloudBuild.Inputs public sealed class TriggerGitFileSourceArgs : global::Pulumi.ResourceArgs { + /// + /// The full resource name of the bitbucket server config. + /// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + /// + [Input("bitbucketServerConfig")] + public Input? BitbucketServerConfig { get; set; } + /// /// The full resource name of the github enterprise config. /// Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. diff --git a/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceGetArgs.cs b/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceGetArgs.cs index 28073a80ae..7b941f62c6 100644 --- a/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceGetArgs.cs +++ b/sdk/dotnet/CloudBuild/Inputs/TriggerGitFileSourceGetArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.CloudBuild.Inputs public sealed class TriggerGitFileSourceGetArgs : global::Pulumi.ResourceArgs { + /// + /// The full resource name of the bitbucket server config. + /// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + /// + [Input("bitbucketServerConfig")] + public Input? BitbucketServerConfig { get; set; } + /// /// The full resource name of the github enterprise config. /// Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. diff --git a/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildArgs.cs b/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildArgs.cs index 8c49c39ec9..42621507b9 100644 --- a/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildArgs.cs +++ b/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.CloudBuild.Inputs public sealed class TriggerSourceToBuildArgs : global::Pulumi.ResourceArgs { + /// + /// The full resource name of the bitbucket server config. + /// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + /// + [Input("bitbucketServerConfig")] + public Input? BitbucketServerConfig { get; set; } + /// /// The full resource name of the github enterprise config. /// Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. diff --git a/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildGetArgs.cs b/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildGetArgs.cs index a942d1a130..1f10ab0aa1 100644 --- a/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildGetArgs.cs +++ b/sdk/dotnet/CloudBuild/Inputs/TriggerSourceToBuildGetArgs.cs @@ -12,6 +12,13 @@ namespace Pulumi.Gcp.CloudBuild.Inputs public sealed class TriggerSourceToBuildGetArgs : global::Pulumi.ResourceArgs { + /// + /// The full resource name of the bitbucket server config. + /// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + /// + [Input("bitbucketServerConfig")] + public Input? BitbucketServerConfig { get; set; } + /// /// The full resource name of the github enterprise config. /// Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. diff --git a/sdk/dotnet/CloudBuild/Outputs/GetTriggerGitFileSourceResult.cs b/sdk/dotnet/CloudBuild/Outputs/GetTriggerGitFileSourceResult.cs index f55f32c36b..6f835d3ac4 100644 --- a/sdk/dotnet/CloudBuild/Outputs/GetTriggerGitFileSourceResult.cs +++ b/sdk/dotnet/CloudBuild/Outputs/GetTriggerGitFileSourceResult.cs @@ -13,6 +13,7 @@ namespace Pulumi.Gcp.CloudBuild.Outputs [OutputType] public sealed class GetTriggerGitFileSourceResult { + public readonly string BitbucketServerConfig; public readonly string GithubEnterpriseConfig; public readonly string Path; public readonly string RepoType; @@ -22,6 +23,8 @@ public sealed class GetTriggerGitFileSourceResult [OutputConstructor] private GetTriggerGitFileSourceResult( + string bitbucketServerConfig, + string githubEnterpriseConfig, string path, @@ -34,6 +37,7 @@ private GetTriggerGitFileSourceResult( string uri) { + BitbucketServerConfig = bitbucketServerConfig; GithubEnterpriseConfig = githubEnterpriseConfig; Path = path; RepoType = repoType; diff --git a/sdk/dotnet/CloudBuild/Outputs/GetTriggerSourceToBuildResult.cs b/sdk/dotnet/CloudBuild/Outputs/GetTriggerSourceToBuildResult.cs index bb0810b34f..6ff1150537 100644 --- a/sdk/dotnet/CloudBuild/Outputs/GetTriggerSourceToBuildResult.cs +++ b/sdk/dotnet/CloudBuild/Outputs/GetTriggerSourceToBuildResult.cs @@ -13,6 +13,7 @@ namespace Pulumi.Gcp.CloudBuild.Outputs [OutputType] public sealed class GetTriggerSourceToBuildResult { + public readonly string BitbucketServerConfig; public readonly string GithubEnterpriseConfig; public readonly string Ref; public readonly string RepoType; @@ -21,6 +22,8 @@ public sealed class GetTriggerSourceToBuildResult [OutputConstructor] private GetTriggerSourceToBuildResult( + string bitbucketServerConfig, + string githubEnterpriseConfig, string @ref, @@ -31,6 +34,7 @@ private GetTriggerSourceToBuildResult( string uri) { + BitbucketServerConfig = bitbucketServerConfig; GithubEnterpriseConfig = githubEnterpriseConfig; Ref = @ref; RepoType = repoType; diff --git a/sdk/dotnet/CloudBuild/Outputs/TriggerGitFileSource.cs b/sdk/dotnet/CloudBuild/Outputs/TriggerGitFileSource.cs index 5d4885fa2e..c5a31bd5b4 100644 --- a/sdk/dotnet/CloudBuild/Outputs/TriggerGitFileSource.cs +++ b/sdk/dotnet/CloudBuild/Outputs/TriggerGitFileSource.cs @@ -13,6 +13,11 @@ namespace Pulumi.Gcp.CloudBuild.Outputs [OutputType] public sealed class TriggerGitFileSource { + /// + /// The full resource name of the bitbucket server config. + /// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + /// + public readonly string? BitbucketServerConfig; /// /// The full resource name of the github enterprise config. /// Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -47,6 +52,8 @@ public sealed class TriggerGitFileSource [OutputConstructor] private TriggerGitFileSource( + string? bitbucketServerConfig, + string? githubEnterpriseConfig, string path, @@ -59,6 +66,7 @@ private TriggerGitFileSource( string? uri) { + BitbucketServerConfig = bitbucketServerConfig; GithubEnterpriseConfig = githubEnterpriseConfig; Path = path; RepoType = repoType; diff --git a/sdk/dotnet/CloudBuild/Outputs/TriggerSourceToBuild.cs b/sdk/dotnet/CloudBuild/Outputs/TriggerSourceToBuild.cs index cd024f9a5f..c9a292b187 100644 --- a/sdk/dotnet/CloudBuild/Outputs/TriggerSourceToBuild.cs +++ b/sdk/dotnet/CloudBuild/Outputs/TriggerSourceToBuild.cs @@ -13,6 +13,11 @@ namespace Pulumi.Gcp.CloudBuild.Outputs [OutputType] public sealed class TriggerSourceToBuild { + /// + /// The full resource name of the bitbucket server config. + /// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + /// + public readonly string? BitbucketServerConfig; /// /// The full resource name of the github enterprise config. /// Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -40,6 +45,8 @@ public sealed class TriggerSourceToBuild [OutputConstructor] private TriggerSourceToBuild( + string? bitbucketServerConfig, + string? githubEnterpriseConfig, string @ref, @@ -50,6 +57,7 @@ private TriggerSourceToBuild( string? uri) { + BitbucketServerConfig = bitbucketServerConfig; GithubEnterpriseConfig = githubEnterpriseConfig; Ref = @ref; RepoType = repoType; diff --git a/sdk/dotnet/CloudBuild/Trigger.cs b/sdk/dotnet/CloudBuild/Trigger.cs index 8833c3e47d..48d9c8333d 100644 --- a/sdk/dotnet/CloudBuild/Trigger.cs +++ b/sdk/dotnet/CloudBuild/Trigger.cs @@ -316,6 +316,37 @@ namespace Pulumi.Gcp.CloudBuild /// /// }); /// ``` + /// ### Cloudbuild Trigger Manual Bitbucket Server + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var manual_bitbucket_trigger = new Gcp.CloudBuild.Trigger("manual-bitbucket-trigger", new() + /// { + /// GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs + /// { + /// BitbucketServerConfig = "projects/myProject/locations/global/bitbucketServerConfigs/configID", + /// Path = "cloudbuild.yaml", + /// RepoType = "BITBUCKET_SERVER", + /// Revision = "refs/heads/main", + /// Uri = "https://bbs.com/scm/stag/test-repo.git", + /// }, + /// SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs + /// { + /// BitbucketServerConfig = "projects/myProject/locations/global/bitbucketServerConfigs/configID", + /// Ref = "refs/heads/main", + /// RepoType = "BITBUCKET_SERVER", + /// Uri = "https://bbs.com/scm/stag/test-repo.git", + /// }, + /// }); + /// + /// }); + /// ``` /// ### Cloudbuild Trigger Repo /// /// ```csharp diff --git a/sdk/dotnet/CloudRunV2/Job.cs b/sdk/dotnet/CloudRunV2/Job.cs index 2b04648946..ee2ecb6d65 100644 --- a/sdk/dotnet/CloudRunV2/Job.cs +++ b/sdk/dotnet/CloudRunV2/Job.cs @@ -432,6 +432,26 @@ public partial class Job : global::Pulumi.CustomResource [Output("conditions")] public Output> Conditions { get; private set; } = null!; + /// + /// (Output) + /// Creation timestamp of the execution. + /// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// Email address of the authenticated creator. + /// + [Output("creator")] + public Output Creator { get; private set; } = null!; + + /// + /// The deletion time. + /// + [Output("deleteTime")] + public Output DeleteTime { get; private set; } = null!; + /// /// A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. /// @@ -444,6 +464,12 @@ public partial class Job : global::Pulumi.CustomResource [Output("executionCount")] public Output ExecutionCount { get; private set; } = null!; + /// + /// For a deleted resource, the time after which it will be permamently deleted. + /// + [Output("expireTime")] + public Output ExpireTime { get; private set; } = null!; + /// /// A number that monotonically increases every time the user modifies the desired state. /// @@ -466,6 +492,12 @@ public partial class Job : global::Pulumi.CustomResource [Output("labels")] public Output?> Labels { get; private set; } = null!; + /// + /// Email address of the last authenticated modifier. + /// + [Output("lastModifier")] + public Output LastModifier { get; private set; } = null!; + /// /// Name of the last created execution. /// Structure is documented below. @@ -536,6 +568,12 @@ public partial class Job : global::Pulumi.CustomResource [Output("uid")] public Output Uid { get; private set; } = null!; + /// + /// The last-modified time. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + /// /// Create a Job resource with the given unique name, arguments, and options. @@ -740,6 +778,26 @@ public InputList Conditions set => _conditions = value; } + /// + /// (Output) + /// Creation timestamp of the execution. + /// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// Email address of the authenticated creator. + /// + [Input("creator")] + public Input? Creator { get; set; } + + /// + /// The deletion time. + /// + [Input("deleteTime")] + public Input? DeleteTime { get; set; } + /// /// A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. /// @@ -752,6 +810,12 @@ public InputList Conditions [Input("executionCount")] public Input? ExecutionCount { get; set; } + /// + /// For a deleted resource, the time after which it will be permamently deleted. + /// + [Input("expireTime")] + public Input? ExpireTime { get; set; } + /// /// A number that monotonically increases every time the user modifies the desired state. /// @@ -780,6 +844,12 @@ public InputMap Labels set => _labels = value; } + /// + /// Email address of the last authenticated modifier. + /// + [Input("lastModifier")] + public Input? LastModifier { get; set; } + [Input("latestCreatedExecutions")] private InputList? _latestCreatedExecutions; @@ -862,6 +932,12 @@ public InputList TerminalConditions [Input("uid")] public Input? Uid { get; set; } + /// + /// The last-modified time. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + public JobState() { } diff --git a/sdk/dotnet/CloudRunV2/Service.cs b/sdk/dotnet/CloudRunV2/Service.cs index cc31d67f11..772265ba26 100644 --- a/sdk/dotnet/CloudRunV2/Service.cs +++ b/sdk/dotnet/CloudRunV2/Service.cs @@ -500,6 +500,18 @@ public partial class Service : global::Pulumi.CustomResource [Output("conditions")] public Output> Conditions { get; private set; } = null!; + /// + /// The creation time. + /// + [Output("createTime")] + public Output CreateTime { get; private set; } = null!; + + /// + /// Email address of the authenticated creator. + /// + [Output("creator")] + public Output Creator { get; private set; } = null!; + /// /// One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a /// string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see @@ -508,6 +520,12 @@ public partial class Service : global::Pulumi.CustomResource [Output("customAudiences")] public Output> CustomAudiences { get; private set; } = null!; + /// + /// The deletion time. + /// + [Output("deleteTime")] + public Output DeleteTime { get; private set; } = null!; + /// /// User-provided description of the Service. This field currently has a 512-character limit. /// @@ -520,6 +538,12 @@ public partial class Service : global::Pulumi.CustomResource [Output("etag")] public Output Etag { get; private set; } = null!; + /// + /// For a deleted resource, the time after which it will be permamently deleted. + /// + [Output("expireTime")] + public Output ExpireTime { get; private set; } = null!; + /// /// A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. /// @@ -548,6 +572,12 @@ public partial class Service : global::Pulumi.CustomResource [Output("labels")] public Output?> Labels { get; private set; } = null!; + /// + /// Email address of the last authenticated modifier. + /// + [Output("lastModifier")] + public Output LastModifier { get; private set; } = null!; + /// /// Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. /// @@ -637,6 +667,12 @@ public partial class Service : global::Pulumi.CustomResource [Output("uid")] public Output Uid { get; private set; } = null!; + /// + /// The last-modified time. + /// + [Output("updateTime")] + public Output UpdateTime { get; private set; } = null!; + /// /// (Output) /// Displays the target URI. @@ -887,6 +923,18 @@ public InputList Conditions set => _conditions = value; } + /// + /// The creation time. + /// + [Input("createTime")] + public Input? CreateTime { get; set; } + + /// + /// Email address of the authenticated creator. + /// + [Input("creator")] + public Input? Creator { get; set; } + [Input("customAudiences")] private InputList? _customAudiences; @@ -901,6 +949,12 @@ public InputList CustomAudiences set => _customAudiences = value; } + /// + /// The deletion time. + /// + [Input("deleteTime")] + public Input? DeleteTime { get; set; } + /// /// User-provided description of the Service. This field currently has a 512-character limit. /// @@ -913,6 +967,12 @@ public InputList CustomAudiences [Input("etag")] public Input? Etag { get; set; } + /// + /// For a deleted resource, the time after which it will be permamently deleted. + /// + [Input("expireTime")] + public Input? ExpireTime { get; set; } + /// /// A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. /// @@ -947,6 +1007,12 @@ public InputMap Labels set => _labels = value; } + /// + /// Email address of the last authenticated modifier. + /// + [Input("lastModifier")] + public Input? LastModifier { get; set; } + /// /// Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. /// @@ -1054,6 +1120,12 @@ public InputList Traffics [Input("uid")] public Input? Uid { get; set; } + /// + /// The last-modified time. + /// + [Input("updateTime")] + public Input? UpdateTime { get; set; } + /// /// (Output) /// Displays the target URI. diff --git a/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.cs b/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.cs index 64af5521e9..44c489742e 100644 --- a/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.cs +++ b/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.cs @@ -21,6 +21,9 @@ public sealed class EnvironmentConfigPrivateEnvironmentConfigArgs : global::Pulu [Input("cloudSqlIpv4CidrBlock")] public Input? CloudSqlIpv4CidrBlock { get; set; } + [Input("connectionType")] + public Input? ConnectionType { get; set; } + [Input("enablePrivateEndpoint")] public Input? EnablePrivateEndpoint { get; set; } diff --git a/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigGetArgs.cs b/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigGetArgs.cs index 4d01f23f8c..e6b6cec27f 100644 --- a/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigGetArgs.cs +++ b/sdk/dotnet/Composer/Inputs/EnvironmentConfigPrivateEnvironmentConfigGetArgs.cs @@ -21,6 +21,9 @@ public sealed class EnvironmentConfigPrivateEnvironmentConfigGetArgs : global::P [Input("cloudSqlIpv4CidrBlock")] public Input? CloudSqlIpv4CidrBlock { get; set; } + [Input("connectionType")] + public Input? ConnectionType { get; set; } + [Input("enablePrivateEndpoint")] public Input? EnablePrivateEndpoint { get; set; } diff --git a/sdk/dotnet/Composer/Outputs/EnvironmentConfigPrivateEnvironmentConfig.cs b/sdk/dotnet/Composer/Outputs/EnvironmentConfigPrivateEnvironmentConfig.cs index 5455d58fb6..549a7b1bb6 100644 --- a/sdk/dotnet/Composer/Outputs/EnvironmentConfigPrivateEnvironmentConfig.cs +++ b/sdk/dotnet/Composer/Outputs/EnvironmentConfigPrivateEnvironmentConfig.cs @@ -16,6 +16,7 @@ public sealed class EnvironmentConfigPrivateEnvironmentConfig public readonly string? CloudComposerConnectionSubnetwork; public readonly string? CloudComposerNetworkIpv4CidrBlock; public readonly string? CloudSqlIpv4CidrBlock; + public readonly string? ConnectionType; public readonly bool? EnablePrivateEndpoint; public readonly bool? EnablePrivatelyUsedPublicIps; public readonly string? MasterIpv4CidrBlock; @@ -29,6 +30,8 @@ private EnvironmentConfigPrivateEnvironmentConfig( string? cloudSqlIpv4CidrBlock, + string? connectionType, + bool? enablePrivateEndpoint, bool? enablePrivatelyUsedPublicIps, @@ -40,6 +43,7 @@ private EnvironmentConfigPrivateEnvironmentConfig( CloudComposerConnectionSubnetwork = cloudComposerConnectionSubnetwork; CloudComposerNetworkIpv4CidrBlock = cloudComposerNetworkIpv4CidrBlock; CloudSqlIpv4CidrBlock = cloudSqlIpv4CidrBlock; + ConnectionType = connectionType; EnablePrivateEndpoint = enablePrivateEndpoint; EnablePrivatelyUsedPublicIps = enablePrivatelyUsedPublicIps; MasterIpv4CidrBlock = masterIpv4CidrBlock; diff --git a/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigPrivateEnvironmentConfigResult.cs b/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigPrivateEnvironmentConfigResult.cs index 1b6bfde634..3e084461e0 100644 --- a/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigPrivateEnvironmentConfigResult.cs +++ b/sdk/dotnet/Composer/Outputs/GetEnvironmentConfigPrivateEnvironmentConfigResult.cs @@ -16,6 +16,7 @@ public sealed class GetEnvironmentConfigPrivateEnvironmentConfigResult public readonly string CloudComposerConnectionSubnetwork; public readonly string CloudComposerNetworkIpv4CidrBlock; public readonly string CloudSqlIpv4CidrBlock; + public readonly string ConnectionType; public readonly bool EnablePrivateEndpoint; public readonly bool EnablePrivatelyUsedPublicIps; public readonly string MasterIpv4CidrBlock; @@ -29,6 +30,8 @@ private GetEnvironmentConfigPrivateEnvironmentConfigResult( string cloudSqlIpv4CidrBlock, + string connectionType, + bool enablePrivateEndpoint, bool enablePrivatelyUsedPublicIps, @@ -40,6 +43,7 @@ private GetEnvironmentConfigPrivateEnvironmentConfigResult( CloudComposerConnectionSubnetwork = cloudComposerConnectionSubnetwork; CloudComposerNetworkIpv4CidrBlock = cloudComposerNetworkIpv4CidrBlock; CloudSqlIpv4CidrBlock = cloudSqlIpv4CidrBlock; + ConnectionType = connectionType; EnablePrivateEndpoint = enablePrivateEndpoint; EnablePrivatelyUsedPublicIps = enablePrivatelyUsedPublicIps; MasterIpv4CidrBlock = masterIpv4CidrBlock; diff --git a/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskArgs.cs index 0be386bc2b..eedfa1ddba 100644 --- a/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskArgs.cs +++ b/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskArgs.cs @@ -99,6 +99,9 @@ public InputMap Labels [Input("mode")] public Input? Mode { get; set; } + [Input("provisionedIops")] + public Input? ProvisionedIops { get; set; } + /// /// - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// diff --git a/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskGetArgs.cs b/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskGetArgs.cs index 322f5e044d..799e20dec4 100644 --- a/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/InstanceTemplateDiskGetArgs.cs @@ -99,6 +99,9 @@ public InputMap Labels [Input("mode")] public Input? Mode { get; set; } + [Input("provisionedIops")] + public Input? ProvisionedIops { get; set; } + /// /// - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// diff --git a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskArgs.cs b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskArgs.cs index 20a49a98f1..350c3c46c8 100644 --- a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskArgs.cs @@ -99,6 +99,9 @@ public InputMap Labels [Input("mode")] public Input? Mode { get; set; } + [Input("provisionedIops")] + public Input? ProvisionedIops { get; set; } + /// /// - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// diff --git a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskGetArgs.cs index 6ba4b6db64..b663164bf2 100644 --- a/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/RegionInstanceTemplateDiskGetArgs.cs @@ -99,6 +99,9 @@ public InputMap Labels [Input("mode")] public Input? Mode { get; set; } + [Input("provisionedIops")] + public Input? ProvisionedIops { get; set; } + /// /// - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchArgs.cs new file mode 100644 index 0000000000..4e3e36c8ee --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchArgs.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleMatchArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration options available when specifying versionedExpr. + /// This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + /// Structure is documented below. + /// + [Input("config")] + public Input? Config { get; set; } + + /// + /// Preconfigured versioned expression. If this field is specified, config must also be specified. + /// Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + /// Possible values are: `SRC_IPS_V1`. + /// + [Input("versionedExpr")] + public Input? VersionedExpr { get; set; } + + public RegionSecurityPolicyRuleMatchArgs() + { + } + public static new RegionSecurityPolicyRuleMatchArgs Empty => new RegionSecurityPolicyRuleMatchArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigArgs.cs new file mode 100644 index 0000000000..de8f1ce807 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleMatchConfigArgs : global::Pulumi.ResourceArgs + { + [Input("srcIpRanges")] + private InputList? _srcIpRanges; + + /// + /// CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + /// + public InputList SrcIpRanges + { + get => _srcIpRanges ?? (_srcIpRanges = new InputList()); + set => _srcIpRanges = value; + } + + public RegionSecurityPolicyRuleMatchConfigArgs() + { + } + public static new RegionSecurityPolicyRuleMatchConfigArgs Empty => new RegionSecurityPolicyRuleMatchConfigArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigGetArgs.cs new file mode 100644 index 0000000000..315e4bf343 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchConfigGetArgs.cs @@ -0,0 +1,32 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleMatchConfigGetArgs : global::Pulumi.ResourceArgs + { + [Input("srcIpRanges")] + private InputList? _srcIpRanges; + + /// + /// CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + /// + public InputList SrcIpRanges + { + get => _srcIpRanges ?? (_srcIpRanges = new InputList()); + set => _srcIpRanges = value; + } + + public RegionSecurityPolicyRuleMatchConfigGetArgs() + { + } + public static new RegionSecurityPolicyRuleMatchConfigGetArgs Empty => new RegionSecurityPolicyRuleMatchConfigGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchGetArgs.cs new file mode 100644 index 0000000000..7484f5dfee --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleMatchGetArgs.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleMatchGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The configuration options available when specifying versionedExpr. + /// This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + /// Structure is documented below. + /// + [Input("config")] + public Input? Config { get; set; } + + /// + /// Preconfigured versioned expression. If this field is specified, config must also be specified. + /// Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + /// Possible values are: `SRC_IPS_V1`. + /// + [Input("versionedExpr")] + public Input? VersionedExpr { get; set; } + + public RegionSecurityPolicyRuleMatchGetArgs() + { + } + public static new RegionSecurityPolicyRuleMatchGetArgs Empty => new RegionSecurityPolicyRuleMatchGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchArgs.cs new file mode 100644 index 0000000000..6b59e0f321 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchArgs.cs @@ -0,0 +1,117 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleNetworkMatchArgs : global::Pulumi.ResourceArgs + { + [Input("destIpRanges")] + private InputList? _destIpRanges; + + /// + /// Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + /// + public InputList DestIpRanges + { + get => _destIpRanges ?? (_destIpRanges = new InputList()); + set => _destIpRanges = value; + } + + [Input("destPorts")] + private InputList? _destPorts; + + /// + /// Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + /// + public InputList DestPorts + { + get => _destPorts ?? (_destPorts = new InputList()); + set => _destPorts = value; + } + + [Input("ipProtocols")] + private InputList? _ipProtocols; + + /// + /// IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + /// + public InputList IpProtocols + { + get => _ipProtocols ?? (_ipProtocols = new InputList()); + set => _ipProtocols = value; + } + + [Input("srcAsns")] + private InputList? _srcAsns; + + /// + /// BGP Autonomous System Number associated with the source IP address. + /// + public InputList SrcAsns + { + get => _srcAsns ?? (_srcAsns = new InputList()); + set => _srcAsns = value; + } + + [Input("srcIpRanges")] + private InputList? _srcIpRanges; + + /// + /// Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + /// + public InputList SrcIpRanges + { + get => _srcIpRanges ?? (_srcIpRanges = new InputList()); + set => _srcIpRanges = value; + } + + [Input("srcPorts")] + private InputList? _srcPorts; + + /// + /// Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + /// + public InputList SrcPorts + { + get => _srcPorts ?? (_srcPorts = new InputList()); + set => _srcPorts = value; + } + + [Input("srcRegionCodes")] + private InputList? _srcRegionCodes; + + /// + /// Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + /// + public InputList SrcRegionCodes + { + get => _srcRegionCodes ?? (_srcRegionCodes = new InputList()); + set => _srcRegionCodes = value; + } + + [Input("userDefinedFields")] + private InputList? _userDefinedFields; + + /// + /// User-defined fields. Each element names a defined field and lists the matching values for that field. + /// Structure is documented below. + /// + public InputList UserDefinedFields + { + get => _userDefinedFields ?? (_userDefinedFields = new InputList()); + set => _userDefinedFields = value; + } + + public RegionSecurityPolicyRuleNetworkMatchArgs() + { + } + public static new RegionSecurityPolicyRuleNetworkMatchArgs Empty => new RegionSecurityPolicyRuleNetworkMatchArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchGetArgs.cs new file mode 100644 index 0000000000..646f53b65e --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchGetArgs.cs @@ -0,0 +1,117 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleNetworkMatchGetArgs : global::Pulumi.ResourceArgs + { + [Input("destIpRanges")] + private InputList? _destIpRanges; + + /// + /// Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + /// + public InputList DestIpRanges + { + get => _destIpRanges ?? (_destIpRanges = new InputList()); + set => _destIpRanges = value; + } + + [Input("destPorts")] + private InputList? _destPorts; + + /// + /// Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + /// + public InputList DestPorts + { + get => _destPorts ?? (_destPorts = new InputList()); + set => _destPorts = value; + } + + [Input("ipProtocols")] + private InputList? _ipProtocols; + + /// + /// IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + /// + public InputList IpProtocols + { + get => _ipProtocols ?? (_ipProtocols = new InputList()); + set => _ipProtocols = value; + } + + [Input("srcAsns")] + private InputList? _srcAsns; + + /// + /// BGP Autonomous System Number associated with the source IP address. + /// + public InputList SrcAsns + { + get => _srcAsns ?? (_srcAsns = new InputList()); + set => _srcAsns = value; + } + + [Input("srcIpRanges")] + private InputList? _srcIpRanges; + + /// + /// Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + /// + public InputList SrcIpRanges + { + get => _srcIpRanges ?? (_srcIpRanges = new InputList()); + set => _srcIpRanges = value; + } + + [Input("srcPorts")] + private InputList? _srcPorts; + + /// + /// Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + /// + public InputList SrcPorts + { + get => _srcPorts ?? (_srcPorts = new InputList()); + set => _srcPorts = value; + } + + [Input("srcRegionCodes")] + private InputList? _srcRegionCodes; + + /// + /// Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + /// + public InputList SrcRegionCodes + { + get => _srcRegionCodes ?? (_srcRegionCodes = new InputList()); + set => _srcRegionCodes = value; + } + + [Input("userDefinedFields")] + private InputList? _userDefinedFields; + + /// + /// User-defined fields. Each element names a defined field and lists the matching values for that field. + /// Structure is documented below. + /// + public InputList UserDefinedFields + { + get => _userDefinedFields ?? (_userDefinedFields = new InputList()); + set => _userDefinedFields = value; + } + + public RegionSecurityPolicyRuleNetworkMatchGetArgs() + { + } + public static new RegionSecurityPolicyRuleNetworkMatchGetArgs Empty => new RegionSecurityPolicyRuleNetworkMatchGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.cs new file mode 100644 index 0000000000..77912cdb4d --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the user-defined field, as given in the definition. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("values")] + private InputList? _values; + + /// + /// Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + /// + public InputList Values + { + get => _values ?? (_values = new InputList()); + set => _values = value; + } + + public RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs() + { + } + public static new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs Empty => new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs.cs new file mode 100644 index 0000000000..276396daa5 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs.cs @@ -0,0 +1,38 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Name of the user-defined field, as given in the definition. + /// + [Input("name")] + public Input? Name { get; set; } + + [Input("values")] + private InputList? _values; + + /// + /// Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + /// + public InputList Values + { + get => _values ?? (_values = new InputList()); + set => _values = value; + } + + public RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs() + { + } + public static new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs Empty => new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldArgs.cs new file mode 100644 index 0000000000..71d046246f --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldArgs.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyUserDefinedFieldArgs : global::Pulumi.ResourceArgs + { + /// + /// The base relative to which 'offset' is measured. Possible values are: + /// - IPV4: Points to the beginning of the IPv4 header. + /// - IPV6: Points to the beginning of the IPv6 header. + /// - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + /// - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + /// Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + /// + [Input("base", required: true)] + public Input Base { get; set; } = null!; + + /// + /// If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + /// Encoded as a hexadecimal number (starting with "0x"). + /// The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + /// + [Input("mask")] + public Input? Mask { get; set; } + + /// + /// The name of this field. Must be unique within the policy. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Offset of the first byte of the field (in network byte order) relative to 'base'. + /// + [Input("offset")] + public Input? Offset { get; set; } + + /// + /// Size of the field in bytes. Valid values: 1-4. + /// + [Input("size")] + public Input? Size { get; set; } + + public RegionSecurityPolicyUserDefinedFieldArgs() + { + } + public static new RegionSecurityPolicyUserDefinedFieldArgs Empty => new RegionSecurityPolicyUserDefinedFieldArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldGetArgs.cs b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldGetArgs.cs new file mode 100644 index 0000000000..0c001e34c2 --- /dev/null +++ b/sdk/dotnet/Compute/Inputs/RegionSecurityPolicyUserDefinedFieldGetArgs.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Inputs +{ + + public sealed class RegionSecurityPolicyUserDefinedFieldGetArgs : global::Pulumi.ResourceArgs + { + /// + /// The base relative to which 'offset' is measured. Possible values are: + /// - IPV4: Points to the beginning of the IPv4 header. + /// - IPV6: Points to the beginning of the IPv6 header. + /// - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + /// - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + /// Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + /// + [Input("base", required: true)] + public Input Base { get; set; } = null!; + + /// + /// If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + /// Encoded as a hexadecimal number (starting with "0x"). + /// The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + /// + [Input("mask")] + public Input? Mask { get; set; } + + /// + /// The name of this field. Must be unique within the policy. + /// + [Input("name")] + public Input? Name { get; set; } + + /// + /// Offset of the first byte of the field (in network byte order) relative to 'base'. + /// + [Input("offset")] + public Input? Offset { get; set; } + + /// + /// Size of the field in bytes. Valid values: 1-4. + /// + [Input("size")] + public Input? Size { get; set; } + + public RegionSecurityPolicyUserDefinedFieldGetArgs() + { + } + public static new RegionSecurityPolicyUserDefinedFieldGetArgs Empty => new RegionSecurityPolicyUserDefinedFieldGetArgs(); + } +} diff --git a/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs index bb9ccf4858..aa940f9c3f 100644 --- a/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs +++ b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigArgs.cs @@ -35,6 +35,18 @@ public sealed class SecurityPolicyAdvancedOptionsConfigArgs : global::Pulumi.Res [Input("logLevel")] public Input? LogLevel { get; set; } + [Input("userIpRequestHeaders")] + private InputList? _userIpRequestHeaders; + + /// + /// ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + /// + public InputList UserIpRequestHeaders + { + get => _userIpRequestHeaders ?? (_userIpRequestHeaders = new InputList()); + set => _userIpRequestHeaders = value; + } + public SecurityPolicyAdvancedOptionsConfigArgs() { } diff --git a/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs index fb6080cbad..b6db918263 100644 --- a/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs +++ b/sdk/dotnet/Compute/Inputs/SecurityPolicyAdvancedOptionsConfigGetArgs.cs @@ -35,6 +35,18 @@ public sealed class SecurityPolicyAdvancedOptionsConfigGetArgs : global::Pulumi. [Input("logLevel")] public Input? LogLevel { get; set; } + [Input("userIpRequestHeaders")] + private InputList? _userIpRequestHeaders; + + /// + /// ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + /// + public InputList UserIpRequestHeaders + { + get => _userIpRequestHeaders ?? (_userIpRequestHeaders = new InputList()); + set => _userIpRequestHeaders = value; + } + public SecurityPolicyAdvancedOptionsConfigGetArgs() { } diff --git a/sdk/dotnet/Compute/NetworkEdgeSecurityService.cs b/sdk/dotnet/Compute/NetworkEdgeSecurityService.cs index 67ba711a6f..bb353bd3e7 100644 --- a/sdk/dotnet/Compute/NetworkEdgeSecurityService.cs +++ b/sdk/dotnet/Compute/NetworkEdgeSecurityService.cs @@ -23,7 +23,7 @@ namespace Pulumi.Gcp.Compute /// { /// var @default = new Gcp.Compute.NetworkEdgeSecurityService("default", new() /// { - /// Region = "asia-southeast1", + /// Region = "us-east1", /// Description = "My basic resource", /// }, new CustomResourceOptions /// { diff --git a/sdk/dotnet/Compute/Outputs/GetInstanceTemplateDiskResult.cs b/sdk/dotnet/Compute/Outputs/GetInstanceTemplateDiskResult.cs index 4084f394d9..12fc6d1719 100644 --- a/sdk/dotnet/Compute/Outputs/GetInstanceTemplateDiskResult.cs +++ b/sdk/dotnet/Compute/Outputs/GetInstanceTemplateDiskResult.cs @@ -66,6 +66,7 @@ public sealed class GetInstanceTemplateDiskResult /// read-write mode. /// public readonly string Mode; + public readonly int ProvisionedIops; /// /// (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// @@ -116,6 +117,8 @@ private GetInstanceTemplateDiskResult( string mode, + int provisionedIops, + ImmutableArray resourcePolicies, string source, @@ -140,6 +143,7 @@ private GetInstanceTemplateDiskResult( Interface = @interface; Labels = labels; Mode = mode; + ProvisionedIops = provisionedIops; ResourcePolicies = resourcePolicies; Source = source; SourceImage = sourceImage; diff --git a/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateDiskResult.cs b/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateDiskResult.cs index 28492affa5..62fbfcb60c 100644 --- a/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateDiskResult.cs +++ b/sdk/dotnet/Compute/Outputs/GetRegionInstanceTemplateDiskResult.cs @@ -66,6 +66,7 @@ public sealed class GetRegionInstanceTemplateDiskResult /// read-write mode. /// public readonly string Mode; + public readonly int ProvisionedIops; /// /// (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// @@ -116,6 +117,8 @@ private GetRegionInstanceTemplateDiskResult( string mode, + int provisionedIops, + ImmutableArray resourcePolicies, string source, @@ -140,6 +143,7 @@ private GetRegionInstanceTemplateDiskResult( Interface = @interface; Labels = labels; Mode = mode; + ProvisionedIops = provisionedIops; ResourcePolicies = resourcePolicies; Source = source; SourceImage = sourceImage; diff --git a/sdk/dotnet/Compute/Outputs/InstanceTemplateDisk.cs b/sdk/dotnet/Compute/Outputs/InstanceTemplateDisk.cs index 926fa74842..f11c427abe 100644 --- a/sdk/dotnet/Compute/Outputs/InstanceTemplateDisk.cs +++ b/sdk/dotnet/Compute/Outputs/InstanceTemplateDisk.cs @@ -74,6 +74,7 @@ public sealed class InstanceTemplateDisk /// read-write mode. /// public readonly string? Mode; + public readonly int? ProvisionedIops; /// /// - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// @@ -144,6 +145,8 @@ private InstanceTemplateDisk( string? mode, + int? provisionedIops, + string? resourcePolicies, string? source, @@ -168,6 +171,7 @@ private InstanceTemplateDisk( Interface = @interface; Labels = labels; Mode = mode; + ProvisionedIops = provisionedIops; ResourcePolicies = resourcePolicies; Source = source; SourceImage = sourceImage; diff --git a/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateDisk.cs b/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateDisk.cs index 4a773a3122..826cc158ef 100644 --- a/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateDisk.cs +++ b/sdk/dotnet/Compute/Outputs/RegionInstanceTemplateDisk.cs @@ -74,6 +74,7 @@ public sealed class RegionInstanceTemplateDisk /// read-write mode. /// public readonly string? Mode; + public readonly int? ProvisionedIops; /// /// - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. /// @@ -144,6 +145,8 @@ private RegionInstanceTemplateDisk( string? mode, + int? provisionedIops, + string? resourcePolicies, string? source, @@ -168,6 +171,7 @@ private RegionInstanceTemplateDisk( Interface = @interface; Labels = labels; Mode = mode; + ProvisionedIops = provisionedIops; ResourcePolicies = resourcePolicies; Source = source; SourceImage = sourceImage; diff --git a/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatch.cs b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatch.cs new file mode 100644 index 0000000000..57307771d7 --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatch.cs @@ -0,0 +1,39 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class RegionSecurityPolicyRuleMatch + { + /// + /// The configuration options available when specifying versionedExpr. + /// This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + /// Structure is documented below. + /// + public readonly Outputs.RegionSecurityPolicyRuleMatchConfig? Config; + /// + /// Preconfigured versioned expression. If this field is specified, config must also be specified. + /// Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + /// Possible values are: `SRC_IPS_V1`. + /// + public readonly string? VersionedExpr; + + [OutputConstructor] + private RegionSecurityPolicyRuleMatch( + Outputs.RegionSecurityPolicyRuleMatchConfig? config, + + string? versionedExpr) + { + Config = config; + VersionedExpr = versionedExpr; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatchConfig.cs b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatchConfig.cs new file mode 100644 index 0000000000..6181138bc5 --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleMatchConfig.cs @@ -0,0 +1,27 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class RegionSecurityPolicyRuleMatchConfig + { + /// + /// CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + /// + public readonly ImmutableArray SrcIpRanges; + + [OutputConstructor] + private RegionSecurityPolicyRuleMatchConfig(ImmutableArray srcIpRanges) + { + SrcIpRanges = srcIpRanges; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatch.cs b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatch.cs new file mode 100644 index 0000000000..e38123add1 --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatch.cs @@ -0,0 +1,78 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class RegionSecurityPolicyRuleNetworkMatch + { + /// + /// Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + /// + public readonly ImmutableArray DestIpRanges; + /// + /// Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + /// + public readonly ImmutableArray DestPorts; + /// + /// IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + /// + public readonly ImmutableArray IpProtocols; + /// + /// BGP Autonomous System Number associated with the source IP address. + /// + public readonly ImmutableArray SrcAsns; + /// + /// Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + /// + public readonly ImmutableArray SrcIpRanges; + /// + /// Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + /// + public readonly ImmutableArray SrcPorts; + /// + /// Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + /// + public readonly ImmutableArray SrcRegionCodes; + /// + /// User-defined fields. Each element names a defined field and lists the matching values for that field. + /// Structure is documented below. + /// + public readonly ImmutableArray UserDefinedFields; + + [OutputConstructor] + private RegionSecurityPolicyRuleNetworkMatch( + ImmutableArray destIpRanges, + + ImmutableArray destPorts, + + ImmutableArray ipProtocols, + + ImmutableArray srcAsns, + + ImmutableArray srcIpRanges, + + ImmutableArray srcPorts, + + ImmutableArray srcRegionCodes, + + ImmutableArray userDefinedFields) + { + DestIpRanges = destIpRanges; + DestPorts = destPorts; + IpProtocols = ipProtocols; + SrcAsns = srcAsns; + SrcIpRanges = srcIpRanges; + SrcPorts = srcPorts; + SrcRegionCodes = srcRegionCodes; + UserDefinedFields = userDefinedFields; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.cs b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.cs new file mode 100644 index 0000000000..f23116540b --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.cs @@ -0,0 +1,35 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class RegionSecurityPolicyRuleNetworkMatchUserDefinedField + { + /// + /// Name of the user-defined field, as given in the definition. + /// + public readonly string? Name; + /// + /// Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + /// + public readonly ImmutableArray Values; + + [OutputConstructor] + private RegionSecurityPolicyRuleNetworkMatchUserDefinedField( + string? name, + + ImmutableArray values) + { + Name = name; + Values = values; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyUserDefinedField.cs b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyUserDefinedField.cs new file mode 100644 index 0000000000..3ba645cdcb --- /dev/null +++ b/sdk/dotnet/Compute/Outputs/RegionSecurityPolicyUserDefinedField.cs @@ -0,0 +1,63 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute.Outputs +{ + + [OutputType] + public sealed class RegionSecurityPolicyUserDefinedField + { + /// + /// The base relative to which 'offset' is measured. Possible values are: + /// - IPV4: Points to the beginning of the IPv4 header. + /// - IPV6: Points to the beginning of the IPv6 header. + /// - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + /// - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + /// Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + /// + public readonly string Base; + /// + /// If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + /// Encoded as a hexadecimal number (starting with "0x"). + /// The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + /// + public readonly string? Mask; + /// + /// The name of this field. Must be unique within the policy. + /// + public readonly string? Name; + /// + /// Offset of the first byte of the field (in network byte order) relative to 'base'. + /// + public readonly int? Offset; + /// + /// Size of the field in bytes. Valid values: 1-4. + /// + public readonly int? Size; + + [OutputConstructor] + private RegionSecurityPolicyUserDefinedField( + string @base, + + string? mask, + + string? name, + + int? offset, + + int? size) + { + Base = @base; + Mask = mask; + Name = name; + Offset = offset; + Size = size; + } + } +} diff --git a/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs b/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs index 8f6372232d..39e74c271e 100644 --- a/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs +++ b/sdk/dotnet/Compute/Outputs/SecurityPolicyAdvancedOptionsConfig.cs @@ -30,6 +30,10 @@ public sealed class SecurityPolicyAdvancedOptionsConfig /// * VERBOSE - Verbose log level. /// public readonly string? LogLevel; + /// + /// ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + /// + public readonly ImmutableArray UserIpRequestHeaders; [OutputConstructor] private SecurityPolicyAdvancedOptionsConfig( @@ -37,11 +41,14 @@ private SecurityPolicyAdvancedOptionsConfig( string? jsonParsing, - string? logLevel) + string? logLevel, + + ImmutableArray userIpRequestHeaders) { JsonCustomConfig = jsonCustomConfig; JsonParsing = jsonParsing; LogLevel = logLevel; + UserIpRequestHeaders = userIpRequestHeaders; } } } diff --git a/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs b/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs index 4cc6cd43f7..b55c2d8db3 100644 --- a/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs +++ b/sdk/dotnet/Compute/RegionNetworkEndpointGroup.cs @@ -132,7 +132,7 @@ namespace Pulumi.Gcp.Compute /// var appengineNegBucketObject = new Gcp.Storage.BucketObject("appengineNegBucketObject", new() /// { /// Bucket = appengineNegBucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion("appengineNegFlexibleAppVersion", new() diff --git a/sdk/dotnet/Compute/RegionSecurityPolicy.cs b/sdk/dotnet/Compute/RegionSecurityPolicy.cs index 8eda58a116..02d3d62bdf 100644 --- a/sdk/dotnet/Compute/RegionSecurityPolicy.cs +++ b/sdk/dotnet/Compute/RegionSecurityPolicy.cs @@ -57,6 +57,46 @@ namespace Pulumi.Gcp.Compute /// /// }); /// ``` + /// ### Region Security Policy With User Defined Fields + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var region_sec_policy_user_defined_fields = new Gcp.Compute.RegionSecurityPolicy("region-sec-policy-user-defined-fields", new() + /// { + /// Description = "with user defined fields", + /// Type = "CLOUD_ARMOR_NETWORK", + /// UserDefinedFields = new[] + /// { + /// new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs + /// { + /// Name = "SIG1_AT_0", + /// Base = "UDP", + /// Offset = 8, + /// Size = 2, + /// Mask = "0x8F00", + /// }, + /// new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs + /// { + /// Name = "SIG2_AT_8", + /// Base = "UDP", + /// Offset = 16, + /// Size = 4, + /// Mask = "0xFFFFFFFF", + /// }, + /// }, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// }); + /// ``` /// /// ## Import /// @@ -154,6 +194,15 @@ public partial class RegionSecurityPolicy : global::Pulumi.CustomResource [Output("type")] public Output Type { get; private set; } = null!; + /// + /// Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + /// A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + /// Rules may then specify matching values for these fields. + /// Structure is documented below. + /// + [Output("userDefinedFields")] + public Output> UserDefinedFields { get; private set; } = null!; + /// /// Create a RegionSecurityPolicy resource with the given unique name, arguments, and options. @@ -248,6 +297,21 @@ public sealed class RegionSecurityPolicyArgs : global::Pulumi.ResourceArgs [Input("type")] public Input? Type { get; set; } + [Input("userDefinedFields")] + private InputList? _userDefinedFields; + + /// + /// Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + /// A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + /// Rules may then specify matching values for these fields. + /// Structure is documented below. + /// + public InputList UserDefinedFields + { + get => _userDefinedFields ?? (_userDefinedFields = new InputList()); + set => _userDefinedFields = value; + } + public RegionSecurityPolicyArgs() { } @@ -329,6 +393,21 @@ public sealed class RegionSecurityPolicyState : global::Pulumi.ResourceArgs [Input("type")] public Input? Type { get; set; } + [Input("userDefinedFields")] + private InputList? _userDefinedFields; + + /// + /// Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + /// A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + /// Rules may then specify matching values for these fields. + /// Structure is documented below. + /// + public InputList UserDefinedFields + { + get => _userDefinedFields ?? (_userDefinedFields = new InputList()); + set => _userDefinedFields = value; + } + public RegionSecurityPolicyState() { } diff --git a/sdk/dotnet/Compute/RegionSecurityPolicyRule.cs b/sdk/dotnet/Compute/RegionSecurityPolicyRule.cs new file mode 100644 index 0000000000..a40af9b337 --- /dev/null +++ b/sdk/dotnet/Compute/RegionSecurityPolicyRule.cs @@ -0,0 +1,533 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Compute +{ + /// + /// ## Example Usage + /// ### Region Security Policy Rule Basic + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var @default = new Gcp.Compute.RegionSecurityPolicy("default", new() + /// { + /// Region = "us-west2", + /// Description = "basic region security policy", + /// Type = "CLOUD_ARMOR", + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var policyRule = new Gcp.Compute.RegionSecurityPolicyRule("policyRule", new() + /// { + /// Region = "us-west2", + /// SecurityPolicy = @default.Name, + /// Description = "new rule", + /// Priority = 100, + /// Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs + /// { + /// VersionedExpr = "SRC_IPS_V1", + /// Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs + /// { + /// SrcIpRanges = new[] + /// { + /// "10.10.0.0/16", + /// }, + /// }, + /// }, + /// Action = "allow", + /// Preview = true, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// }); + /// ``` + /// ### Region Security Policy Rule Multiple Rules + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var @default = new Gcp.Compute.RegionSecurityPolicy("default", new() + /// { + /// Region = "us-west2", + /// Description = "basic region security policy", + /// Type = "CLOUD_ARMOR", + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var policyRuleOne = new Gcp.Compute.RegionSecurityPolicyRule("policyRuleOne", new() + /// { + /// Region = "us-west2", + /// SecurityPolicy = @default.Name, + /// Description = "new rule one", + /// Priority = 100, + /// Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs + /// { + /// VersionedExpr = "SRC_IPS_V1", + /// Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs + /// { + /// SrcIpRanges = new[] + /// { + /// "10.10.0.0/16", + /// }, + /// }, + /// }, + /// Action = "allow", + /// Preview = true, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var policyRuleTwo = new Gcp.Compute.RegionSecurityPolicyRule("policyRuleTwo", new() + /// { + /// Region = "us-west2", + /// SecurityPolicy = @default.Name, + /// Description = "new rule two", + /// Priority = 101, + /// Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs + /// { + /// VersionedExpr = "SRC_IPS_V1", + /// Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs + /// { + /// SrcIpRanges = new[] + /// { + /// "192.168.0.0/16", + /// "10.0.0.0/8", + /// }, + /// }, + /// }, + /// Action = "allow", + /// Preview = true, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// }); + /// ``` + /// ### Region Security Policy Rule With Network Match + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// // First activate advanced network DDoS protection for the desired region + /// var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy("policyddosprotection", new() + /// { + /// Region = "us-west2", + /// Description = "policy for activating network DDoS protection for the desired region", + /// Type = "CLOUD_ARMOR_NETWORK", + /// DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs + /// { + /// DdosProtection = "ADVANCED_PREVIEW", + /// }, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService("edgeSecService", new() + /// { + /// Region = "us-west2", + /// Description = "linking policy to edge security service", + /// SecurityPolicy = policyddosprotection.SelfLink, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// // Add the desired policy and custom rule. + /// var policynetworkmatch = new Gcp.Compute.RegionSecurityPolicy("policynetworkmatch", new() + /// { + /// Region = "us-west2", + /// Description = "region security policy for network match", + /// Type = "CLOUD_ARMOR_NETWORK", + /// UserDefinedFields = new[] + /// { + /// new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs + /// { + /// Name = "SIG1_AT_0", + /// Base = "TCP", + /// Offset = 8, + /// Size = 2, + /// Mask = "0x8F00", + /// }, + /// }, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// DependsOn = new[] + /// { + /// edgeSecService, + /// }, + /// }); + /// + /// var policyRuleNetworkMatch = new Gcp.Compute.RegionSecurityPolicyRule("policyRuleNetworkMatch", new() + /// { + /// Region = "us-west2", + /// SecurityPolicy = policynetworkmatch.Name, + /// Description = "custom rule for network match", + /// Priority = 100, + /// NetworkMatch = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchArgs + /// { + /// SrcIpRanges = new[] + /// { + /// "10.10.0.0/16", + /// }, + /// UserDefinedFields = new[] + /// { + /// new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs + /// { + /// Name = "SIG1_AT_0", + /// Values = new[] + /// { + /// "0x8F00", + /// }, + /// }, + /// }, + /// }, + /// Action = "allow", + /// Preview = true, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// }); + /// ``` + /// + /// ## Import + /// + /// RegionSecurityPolicyRule can be imported using any of these accepted formats + /// + /// ```sh + /// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}} + /// ``` + /// + /// ```sh + /// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}} + /// ``` + /// + [GcpResourceType("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule")] + public partial class RegionSecurityPolicyRule : global::Pulumi.CustomResource + { + /// + /// The Action to perform when the rule is matched. The following are the valid actions: + /// * allow: allow access to target. + /// * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + /// * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + /// * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + /// * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + /// + [Output("action")] + public Output Action { get; private set; } = null!; + + /// + /// An optional description of this resource. Provide this property when you create the resource. + /// + [Output("description")] + public Output Description { get; private set; } = null!; + + /// + /// A match condition that incoming traffic is evaluated against. + /// If it evaluates to true, the corresponding 'action' is enforced. + /// Structure is documented below. + /// + [Output("match")] + public Output Match { get; private set; } = null!; + + /// + /// A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + /// The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + /// Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + /// Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + /// For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + /// Example: + /// networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + /// The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + /// Structure is documented below. + /// + [Output("networkMatch")] + public Output NetworkMatch { get; private set; } = null!; + + /// + /// If set to true, the specified action is not enforced. + /// + [Output("preview")] + public Output Preview { get; private set; } = null!; + + /// + /// An integer indicating the priority of a rule in the list. + /// The priority must be a positive value between 0 and 2147483647. + /// Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + /// + [Output("priority")] + public Output Priority { get; private set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Output("project")] + public Output Project { get; private set; } = null!; + + /// + /// The Region in which the created Region Security Policy rule should reside. + /// + [Output("region")] + public Output Region { get; private set; } = null!; + + /// + /// The name of the security policy this rule belongs to. + /// + /// + /// - - - + /// + [Output("securityPolicy")] + public Output SecurityPolicy { get; private set; } = null!; + + + /// + /// Create a RegionSecurityPolicyRule resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public RegionSecurityPolicyRule(string name, RegionSecurityPolicyRuleArgs args, CustomResourceOptions? options = null) + : base("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", name, args ?? new RegionSecurityPolicyRuleArgs(), MakeResourceOptions(options, "")) + { + } + + private RegionSecurityPolicyRule(string name, Input id, RegionSecurityPolicyRuleState? state = null, CustomResourceOptions? options = null) + : base("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing RegionSecurityPolicyRule resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static RegionSecurityPolicyRule Get(string name, Input id, RegionSecurityPolicyRuleState? state = null, CustomResourceOptions? options = null) + { + return new RegionSecurityPolicyRule(name, id, state, options); + } + } + + public sealed class RegionSecurityPolicyRuleArgs : global::Pulumi.ResourceArgs + { + /// + /// The Action to perform when the rule is matched. The following are the valid actions: + /// * allow: allow access to target. + /// * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + /// * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + /// * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + /// * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + /// + [Input("action", required: true)] + public Input Action { get; set; } = null!; + + /// + /// An optional description of this resource. Provide this property when you create the resource. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// A match condition that incoming traffic is evaluated against. + /// If it evaluates to true, the corresponding 'action' is enforced. + /// Structure is documented below. + /// + [Input("match")] + public Input? Match { get; set; } + + /// + /// A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + /// The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + /// Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + /// Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + /// For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + /// Example: + /// networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + /// The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + /// Structure is documented below. + /// + [Input("networkMatch")] + public Input? NetworkMatch { get; set; } + + /// + /// If set to true, the specified action is not enforced. + /// + [Input("preview")] + public Input? Preview { get; set; } + + /// + /// An integer indicating the priority of a rule in the list. + /// The priority must be a positive value between 0 and 2147483647. + /// Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + /// + [Input("priority", required: true)] + public Input Priority { get; set; } = null!; + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + /// + /// The Region in which the created Region Security Policy rule should reside. + /// + [Input("region", required: true)] + public Input Region { get; set; } = null!; + + /// + /// The name of the security policy this rule belongs to. + /// + /// + /// - - - + /// + [Input("securityPolicy", required: true)] + public Input SecurityPolicy { get; set; } = null!; + + public RegionSecurityPolicyRuleArgs() + { + } + public static new RegionSecurityPolicyRuleArgs Empty => new RegionSecurityPolicyRuleArgs(); + } + + public sealed class RegionSecurityPolicyRuleState : global::Pulumi.ResourceArgs + { + /// + /// The Action to perform when the rule is matched. The following are the valid actions: + /// * allow: allow access to target. + /// * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + /// * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + /// * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + /// * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + /// + [Input("action")] + public Input? Action { get; set; } + + /// + /// An optional description of this resource. Provide this property when you create the resource. + /// + [Input("description")] + public Input? Description { get; set; } + + /// + /// A match condition that incoming traffic is evaluated against. + /// If it evaluates to true, the corresponding 'action' is enforced. + /// Structure is documented below. + /// + [Input("match")] + public Input? Match { get; set; } + + /// + /// A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + /// The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + /// Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + /// Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + /// For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + /// Example: + /// networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + /// The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + /// Structure is documented below. + /// + [Input("networkMatch")] + public Input? NetworkMatch { get; set; } + + /// + /// If set to true, the specified action is not enforced. + /// + [Input("preview")] + public Input? Preview { get; set; } + + /// + /// An integer indicating the priority of a rule in the list. + /// The priority must be a positive value between 0 and 2147483647. + /// Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + /// + [Input("priority")] + public Input? Priority { get; set; } + + /// + /// The ID of the project in which the resource belongs. + /// If it is not provided, the provider project is used. + /// + [Input("project")] + public Input? Project { get; set; } + + /// + /// The Region in which the created Region Security Policy rule should reside. + /// + [Input("region")] + public Input? Region { get; set; } + + /// + /// The name of the security policy this rule belongs to. + /// + /// + /// - - - + /// + [Input("securityPolicy")] + public Input? SecurityPolicy { get; set; } + + public RegionSecurityPolicyRuleState() + { + } + public static new RegionSecurityPolicyRuleState Empty => new RegionSecurityPolicyRuleState(); + } +} diff --git a/sdk/dotnet/Compute/Subnetwork.cs b/sdk/dotnet/Compute/Subnetwork.cs index fbdf90d1e4..d47e4f8a28 100644 --- a/sdk/dotnet/Compute/Subnetwork.cs +++ b/sdk/dotnet/Compute/Subnetwork.cs @@ -125,7 +125,7 @@ namespace Pulumi.Gcp.Compute /// { /// IpCidrRange = "10.0.0.0/22", /// Region = "us-central1", - /// Purpose = "INTERNAL_HTTPS_LOAD_BALANCER", + /// Purpose = "REGIONAL_MANAGED_PROXY", /// Role = "ACTIVE", /// Network = custom_test.Id, /// }, new CustomResourceOptions @@ -270,9 +270,10 @@ public partial class Subnetwork : global::Pulumi.CustomResource public Output Ipv6CidrRange { get; private set; } = null!; /// - /// Denotes the logging options for the subnetwork flow logs. If logging is enabled - /// logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - /// subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + /// This field denotes the VPC flow logging options for this subnetwork. If + /// logging is enabled, logs are exported to Cloud Logging. Flow logging + /// isn't supported if the subnet `purpose` field is set to subnetwork is + /// `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. /// Structure is documented below. /// [Output("logConfig")] @@ -321,13 +322,12 @@ public partial class Subnetwork : global::Pulumi.CustomResource public Output Project { get; private set; } = null!; /// - /// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - /// A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - /// A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + /// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + /// A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. /// A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. /// A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + /// Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. /// If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - /// The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. /// [Output("purpose")] public Output Purpose { get; private set; } = null!; @@ -340,10 +340,10 @@ public partial class Subnetwork : global::Pulumi.CustomResource /// /// The role of subnetwork. + /// Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. /// The value can be set to `ACTIVE` or `BACKUP`. - /// An `ACTIVE` subnetwork is one that is currently being used. + /// An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. /// A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - /// Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. /// Possible values are: `ACTIVE`, `BACKUP`. /// [Output("role")] @@ -446,9 +446,10 @@ public sealed class SubnetworkArgs : global::Pulumi.ResourceArgs public Input? Ipv6AccessType { get; set; } /// - /// Denotes the logging options for the subnetwork flow logs. If logging is enabled - /// logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - /// subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + /// This field denotes the VPC flow logging options for this subnetwork. If + /// logging is enabled, logs are exported to Cloud Logging. Flow logging + /// isn't supported if the subnet `purpose` field is set to subnetwork is + /// `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. /// Structure is documented below. /// [Input("logConfig")] @@ -497,13 +498,12 @@ public sealed class SubnetworkArgs : global::Pulumi.ResourceArgs public Input? Project { get; set; } /// - /// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - /// A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - /// A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + /// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + /// A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. /// A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. /// A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + /// Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. /// If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - /// The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. /// [Input("purpose")] public Input? Purpose { get; set; } @@ -516,10 +516,10 @@ public sealed class SubnetworkArgs : global::Pulumi.ResourceArgs /// /// The role of subnetwork. + /// Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. /// The value can be set to `ACTIVE` or `BACKUP`. - /// An `ACTIVE` subnetwork is one that is currently being used. + /// An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. /// A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - /// Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. /// Possible values are: `ACTIVE`, `BACKUP`. /// [Input("role")] @@ -615,9 +615,10 @@ public sealed class SubnetworkState : global::Pulumi.ResourceArgs public Input? Ipv6CidrRange { get; set; } /// - /// Denotes the logging options for the subnetwork flow logs. If logging is enabled - /// logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - /// subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + /// This field denotes the VPC flow logging options for this subnetwork. If + /// logging is enabled, logs are exported to Cloud Logging. Flow logging + /// isn't supported if the subnet `purpose` field is set to subnetwork is + /// `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. /// Structure is documented below. /// [Input("logConfig")] @@ -666,13 +667,12 @@ public sealed class SubnetworkState : global::Pulumi.ResourceArgs public Input? Project { get; set; } /// - /// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - /// A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - /// A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + /// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + /// A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. /// A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. /// A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + /// Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. /// If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - /// The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. /// [Input("purpose")] public Input? Purpose { get; set; } @@ -685,10 +685,10 @@ public sealed class SubnetworkState : global::Pulumi.ResourceArgs /// /// The role of subnetwork. + /// Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. /// The value can be set to `ACTIVE` or `BACKUP`. - /// An `ACTIVE` subnetwork is one that is currently being used. + /// An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. /// A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - /// Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. /// Possible values are: `ACTIVE`, `BACKUP`. /// [Input("role")] diff --git a/sdk/dotnet/Config/Config.cs b/sdk/dotnet/Config/Config.cs index 2025411db8..063eca5ceb 100644 --- a/sdk/dotnet/Config/Config.cs +++ b/sdk/dotnet/Config/Config.cs @@ -109,6 +109,13 @@ public static string? AssuredWorkloadsCustomEndpoint set => _assuredWorkloadsCustomEndpoint.Set(value); } + private static readonly __Value _backupDrCustomEndpoint = new __Value(() => __config.Get("backupDrCustomEndpoint")); + public static string? BackupDrCustomEndpoint + { + get => _backupDrCustomEndpoint.Get(); + set => _backupDrCustomEndpoint.Set(value); + } + private static readonly __Value _batching = new __Value(() => __config.GetObject("batching")); public static Pulumi.Gcp.Config.Types.Batching? Batching { diff --git a/sdk/dotnet/Container/AwsCluster.cs b/sdk/dotnet/Container/AwsCluster.cs index 34fd60669f..3b2a4e1428 100644 --- a/sdk/dotnet/Container/AwsCluster.cs +++ b/sdk/dotnet/Container/AwsCluster.cs @@ -125,6 +125,244 @@ namespace Pulumi.Gcp.Container /// /// }); /// ``` + /// ### Basic_enum_aws_cluster + /// A basic example of a containeraws cluster with lowercase enums + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var versions = Gcp.Container.GetAwsVersions.Invoke(new() + /// { + /// Location = "us-west1", + /// Project = "my-project-name", + /// }); + /// + /// var primary = new Gcp.Container.AwsCluster("primary", new() + /// { + /// Annotations = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs + /// { + /// AdminUsers = new[] + /// { + /// new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs + /// { + /// Username = "my@service-account.com", + /// }, + /// }, + /// }, + /// AwsRegion = "my-aws-region", + /// ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs + /// { + /// AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs + /// { + /// RoleArn = "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + /// RoleSessionName = "my--1p-dev-session", + /// }, + /// ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// IamInstanceProfile = "my--1p-dev-controlplane", + /// InstanceType = "t3.medium", + /// MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "gp3", + /// }, + /// ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs + /// { + /// SecretArn = "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + /// SecretVersion = "12345678-ABCD-EFGH-IJKL-987654321098", + /// }, + /// RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "gp3", + /// }, + /// SecurityGroupIds = new[] + /// { + /// "sg-00000000000000000", + /// }, + /// SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs + /// { + /// Ec2KeyPair = "my--1p-dev-ssh", + /// }, + /// SubnetIds = new[] + /// { + /// "subnet-00000000000000000", + /// }, + /// Tags = + /// { + /// { "owner", "my@service-account.com" }, + /// }, + /// Version = versions.Apply(getAwsVersionsResult => getAwsVersionsResult.ValidVersions[0]), + /// }, + /// Description = "A sample aws cluster", + /// Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs + /// { + /// Project = "my-project-number", + /// }, + /// Location = "us-west1", + /// Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs + /// { + /// PodAddressCidrBlocks = new[] + /// { + /// "10.2.0.0/16", + /// }, + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.1.0.0/16", + /// }, + /// VpcId = "vpc-00000000000000000", + /// }, + /// Project = "my-project-name", + /// }); + /// + /// }); + /// ``` + /// ### Beta_basic_enum_aws_cluster + /// A basic example of a containeraws cluster with lowercase enums (beta) + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var versions = Gcp.Container.GetAwsVersions.Invoke(new() + /// { + /// Project = "my-project-name", + /// Location = "us-west1", + /// }); + /// + /// var primary = new Gcp.Container.AwsCluster("primary", new() + /// { + /// Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs + /// { + /// AdminUsers = new[] + /// { + /// new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs + /// { + /// Username = "my@service-account.com", + /// }, + /// }, + /// }, + /// AwsRegion = "my-aws-region", + /// ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs + /// { + /// AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs + /// { + /// RoleArn = "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + /// RoleSessionName = "my--1p-dev-session", + /// }, + /// ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// IamInstanceProfile = "my--1p-dev-controlplane", + /// SubnetIds = new[] + /// { + /// "subnet-00000000000000000", + /// }, + /// Version = versions.Apply(getAwsVersionsResult => getAwsVersionsResult.ValidVersions[0]), + /// InstanceType = "t3.medium", + /// MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "gp3", + /// }, + /// ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs + /// { + /// SecretArn = "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + /// SecretVersion = "12345678-ABCD-EFGH-IJKL-987654321098", + /// }, + /// RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "gp3", + /// }, + /// SecurityGroupIds = new[] + /// { + /// "sg-00000000000000000", + /// }, + /// SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs + /// { + /// Ec2KeyPair = "my--1p-dev-ssh", + /// }, + /// Tags = + /// { + /// { "owner", "my@service-account.com" }, + /// }, + /// InstancePlacement = new Gcp.Container.Inputs.AwsClusterControlPlaneInstancePlacementArgs + /// { + /// Tenancy = "dedicated", + /// }, + /// }, + /// Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs + /// { + /// Project = "my-project-number", + /// }, + /// Location = "us-west1", + /// Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs + /// { + /// PodAddressCidrBlocks = new[] + /// { + /// "10.2.0.0/16", + /// }, + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.1.0.0/16", + /// }, + /// VpcId = "vpc-00000000000000000", + /// }, + /// Annotations = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Description = "A sample aws cluster", + /// Project = "my-project-name", + /// LoggingConfig = new Gcp.Container.Inputs.AwsClusterLoggingConfigArgs + /// { + /// ComponentConfig = new Gcp.Container.Inputs.AwsClusterLoggingConfigComponentConfigArgs + /// { + /// EnableComponents = new[] + /// { + /// "system_components", + /// "workloads", + /// }, + /// }, + /// }, + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// }); + /// ``` /// /// ## Import /// diff --git a/sdk/dotnet/Container/AwsNodePool.cs b/sdk/dotnet/Container/AwsNodePool.cs index df6079c86d..de24e903d9 100644 --- a/sdk/dotnet/Container/AwsNodePool.cs +++ b/sdk/dotnet/Container/AwsNodePool.cs @@ -193,6 +193,373 @@ namespace Pulumi.Gcp.Container /// /// }); /// ``` + /// ### Basic_enum_aws_cluster + /// A basic example of a containeraws node pool with lowercase enums + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var versions = Gcp.Container.GetAwsVersions.Invoke(new() + /// { + /// Project = "my-project-name", + /// Location = "us-west1", + /// }); + /// + /// var primaryAwsCluster = new Gcp.Container.AwsCluster("primaryAwsCluster", new() + /// { + /// Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs + /// { + /// AdminUsers = new[] + /// { + /// new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs + /// { + /// Username = "my@service-account.com", + /// }, + /// }, + /// }, + /// AwsRegion = "my-aws-region", + /// ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs + /// { + /// AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs + /// { + /// RoleArn = "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + /// RoleSessionName = "my--1p-dev-session", + /// }, + /// ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// IamInstanceProfile = "my--1p-dev-controlplane", + /// SubnetIds = new[] + /// { + /// "subnet-00000000000000000", + /// }, + /// Version = versions.Apply(getAwsVersionsResult => getAwsVersionsResult.ValidVersions[0]), + /// InstanceType = "t3.medium", + /// MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "GP3", + /// }, + /// ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs + /// { + /// SecretArn = "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + /// SecretVersion = "12345678-ABCD-EFGH-IJKL-987654321098", + /// }, + /// RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "GP3", + /// }, + /// SecurityGroupIds = new[] + /// { + /// "sg-00000000000000000", + /// }, + /// SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs + /// { + /// Ec2KeyPair = "my--1p-dev-ssh", + /// }, + /// Tags = + /// { + /// { "owner", "my@service-account.com" }, + /// }, + /// }, + /// Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs + /// { + /// Project = "my-project-number", + /// }, + /// Location = "us-west1", + /// Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs + /// { + /// PodAddressCidrBlocks = new[] + /// { + /// "10.2.0.0/16", + /// }, + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.1.0.0/16", + /// }, + /// VpcId = "vpc-00000000000000000", + /// }, + /// Annotations = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Description = "A sample aws cluster", + /// Project = "my-project-name", + /// }); + /// + /// var primaryAwsNodePool = new Gcp.Container.AwsNodePool("primaryAwsNodePool", new() + /// { + /// Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs + /// { + /// MaxNodeCount = 5, + /// MinNodeCount = 1, + /// }, + /// Cluster = primaryAwsCluster.Name, + /// Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs + /// { + /// ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// IamInstanceProfile = "my--1p-dev-nodepool", + /// InstanceType = "t3.medium", + /// Labels = + /// { + /// { "label-one", "value-one" }, + /// }, + /// RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "gp3", + /// }, + /// SecurityGroupIds = new[] + /// { + /// "sg-00000000000000000", + /// }, + /// ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs + /// { + /// SecretArn = "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + /// SecretVersion = "12345678-ABCD-EFGH-IJKL-987654321098", + /// }, + /// SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs + /// { + /// Ec2KeyPair = "my--1p-dev-ssh", + /// }, + /// Tags = + /// { + /// { "tag-one", "value-one" }, + /// }, + /// Taints = new[] + /// { + /// new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs + /// { + /// Effect = "prefer_no_schedule", + /// Key = "taint-key", + /// Value = "taint-value", + /// }, + /// }, + /// }, + /// Location = "us-west1", + /// MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs + /// { + /// MaxPodsPerNode = 110, + /// }, + /// SubnetId = "subnet-00000000000000000", + /// Version = versions.Apply(getAwsVersionsResult => getAwsVersionsResult.ValidVersions[0]), + /// Annotations = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Project = "my-project-name", + /// }); + /// + /// }); + /// ``` + /// ### Beta_basic_enum_aws_cluster + /// A basic example of a containeraws node pool with lowercase enums (beta) + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var versions = Gcp.Container.GetAwsVersions.Invoke(new() + /// { + /// Project = "my-project-name", + /// Location = "us-west1", + /// }); + /// + /// var primaryAwsCluster = new Gcp.Container.AwsCluster("primaryAwsCluster", new() + /// { + /// Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs + /// { + /// AdminUsers = new[] + /// { + /// new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs + /// { + /// Username = "my@service-account.com", + /// }, + /// }, + /// }, + /// AwsRegion = "my-aws-region", + /// ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs + /// { + /// AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs + /// { + /// RoleArn = "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + /// RoleSessionName = "my--1p-dev-session", + /// }, + /// ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// IamInstanceProfile = "my--1p-dev-controlplane", + /// SubnetIds = new[] + /// { + /// "subnet-00000000000000000", + /// }, + /// Version = versions.Apply(getAwsVersionsResult => getAwsVersionsResult.ValidVersions[0]), + /// InstanceType = "t3.medium", + /// MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "GP3", + /// }, + /// ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs + /// { + /// SecretArn = "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + /// SecretVersion = "12345678-ABCD-EFGH-IJKL-987654321098", + /// }, + /// RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "GP3", + /// }, + /// SecurityGroupIds = new[] + /// { + /// "sg-00000000000000000", + /// }, + /// SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs + /// { + /// Ec2KeyPair = "my--1p-dev-ssh", + /// }, + /// Tags = + /// { + /// { "owner", "my@service-account.com" }, + /// }, + /// }, + /// Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs + /// { + /// Project = "my-project-number", + /// }, + /// Location = "us-west1", + /// Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs + /// { + /// PodAddressCidrBlocks = new[] + /// { + /// "10.2.0.0/16", + /// }, + /// ServiceAddressCidrBlocks = new[] + /// { + /// "10.1.0.0/16", + /// }, + /// VpcId = "vpc-00000000000000000", + /// }, + /// Annotations = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Description = "A sample aws cluster", + /// Project = "my-project-name", + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// var primaryAwsNodePool = new Gcp.Container.AwsNodePool("primaryAwsNodePool", new() + /// { + /// Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs + /// { + /// MaxNodeCount = 5, + /// MinNodeCount = 1, + /// }, + /// Cluster = primaryAwsCluster.Name, + /// Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs + /// { + /// ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs + /// { + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// }, + /// IamInstanceProfile = "my--1p-dev-nodepool", + /// InstanceType = "t3.medium", + /// Labels = + /// { + /// { "label-one", "value-one" }, + /// }, + /// RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs + /// { + /// Iops = 3000, + /// KmsKeyArn = "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + /// SizeGib = 10, + /// VolumeType = "gp3", + /// }, + /// SecurityGroupIds = new[] + /// { + /// "sg-00000000000000000", + /// }, + /// ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs + /// { + /// SecretArn = "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + /// SecretVersion = "12345678-ABCD-EFGH-IJKL-987654321098", + /// }, + /// SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs + /// { + /// Ec2KeyPair = "my--1p-dev-ssh", + /// }, + /// Tags = + /// { + /// { "tag-one", "value-one" }, + /// }, + /// Taints = new[] + /// { + /// new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs + /// { + /// Effect = "prefer_no_schedule", + /// Key = "taint-key", + /// Value = "taint-value", + /// }, + /// }, + /// InstancePlacement = new Gcp.Container.Inputs.AwsNodePoolConfigInstancePlacementArgs + /// { + /// Tenancy = "dedicated", + /// }, + /// ImageType = "ubuntu", + /// }, + /// Location = "us-west1", + /// MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs + /// { + /// MaxPodsPerNode = 110, + /// }, + /// SubnetId = "subnet-00000000000000000", + /// Version = versions.Apply(getAwsVersionsResult => getAwsVersionsResult.ValidVersions[0]), + /// Annotations = + /// { + /// { "label-one", "value-one" }, + /// }, + /// Project = "my-project-name", + /// }, new CustomResourceOptions + /// { + /// Provider = google_beta, + /// }); + /// + /// }); + /// ``` /// /// ## Import /// diff --git a/sdk/dotnet/DataLoss/PreventionStoredInfoType.cs b/sdk/dotnet/DataLoss/PreventionStoredInfoType.cs index 3aaf97f501..fb1ed41d79 100644 --- a/sdk/dotnet/DataLoss/PreventionStoredInfoType.cs +++ b/sdk/dotnet/DataLoss/PreventionStoredInfoType.cs @@ -95,7 +95,7 @@ namespace Pulumi.Gcp.DataLoss /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/dlp/words.txt"), + /// Source = new FileAsset("./test-fixtures/words.txt"), /// }); /// /// var large = new Gcp.DataLoss.PreventionStoredInfoType("large", new() diff --git a/sdk/dotnet/DatabaseMigrationService/ConnectionProfile.cs b/sdk/dotnet/DatabaseMigrationService/ConnectionProfile.cs index 277f38b8c2..f88c8d02e6 100644 --- a/sdk/dotnet/DatabaseMigrationService/ConnectionProfile.cs +++ b/sdk/dotnet/DatabaseMigrationService/ConnectionProfile.cs @@ -120,6 +120,7 @@ namespace Pulumi.Gcp.DatabaseMigrationService /// { "cloudfoo", "cloudbar" }, /// }, /// Tier = "db-n1-standard-1", + /// Edition = "ENTERPRISE", /// StorageAutoResizeLimit = "0", /// ActivationPolicy = "ALWAYS", /// IpConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs diff --git a/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsArgs.cs b/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsArgs.cs index 0c2a51d449..a36361dab4 100644 --- a/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsArgs.cs +++ b/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsArgs.cs @@ -70,6 +70,13 @@ public InputMap DatabaseFlags [Input("databaseVersion")] public Input? DatabaseVersion { get; set; } + /// + /// The edition of the given Cloud SQL instance. + /// Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + /// + [Input("edition")] + public Input? Edition { get; set; } + /// /// The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. /// Structure is documented below. diff --git a/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsGetArgs.cs b/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsGetArgs.cs index 911724ae87..11877172cd 100644 --- a/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsGetArgs.cs +++ b/sdk/dotnet/DatabaseMigrationService/Inputs/ConnectionProfileCloudsqlSettingsGetArgs.cs @@ -70,6 +70,13 @@ public InputMap DatabaseFlags [Input("databaseVersion")] public Input? DatabaseVersion { get; set; } + /// + /// The edition of the given Cloud SQL instance. + /// Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + /// + [Input("edition")] + public Input? Edition { get; set; } + /// /// The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. /// Structure is documented below. diff --git a/sdk/dotnet/DatabaseMigrationService/Outputs/ConnectionProfileCloudsqlSettings.cs b/sdk/dotnet/DatabaseMigrationService/Outputs/ConnectionProfileCloudsqlSettings.cs index 1f3236a6e8..1af07141b9 100644 --- a/sdk/dotnet/DatabaseMigrationService/Outputs/ConnectionProfileCloudsqlSettings.cs +++ b/sdk/dotnet/DatabaseMigrationService/Outputs/ConnectionProfileCloudsqlSettings.cs @@ -50,6 +50,11 @@ public sealed class ConnectionProfileCloudsqlSettings /// public readonly string? DatabaseVersion; /// + /// The edition of the given Cloud SQL instance. + /// Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + /// + public readonly string? Edition; + /// /// The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. /// Structure is documented below. /// @@ -104,6 +109,8 @@ private ConnectionProfileCloudsqlSettings( string? databaseVersion, + string? edition, + Outputs.ConnectionProfileCloudsqlSettingsIpConfig? ipConfig, string? rootPassword, @@ -128,6 +135,7 @@ private ConnectionProfileCloudsqlSettings( DataDiskType = dataDiskType; DatabaseFlags = databaseFlags; DatabaseVersion = databaseVersion; + Edition = edition; IpConfig = ipConfig; RootPassword = rootPassword; RootPasswordSet = rootPasswordSet; diff --git a/sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigArgs.cs b/sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigArgs.cs new file mode 100644 index 0000000000..33418e3dd7 --- /dev/null +++ b/sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Dataproc.Inputs +{ + + public sealed class MetastoreServiceScalingConfigArgs : global::Pulumi.ResourceArgs + { + /// + /// Metastore instance sizes. + /// Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + /// + [Input("instanceSize")] + public Input? InstanceSize { get; set; } + + /// + /// Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + /// + [Input("scalingFactor")] + public Input? ScalingFactor { get; set; } + + public MetastoreServiceScalingConfigArgs() + { + } + public static new MetastoreServiceScalingConfigArgs Empty => new MetastoreServiceScalingConfigArgs(); + } +} diff --git a/sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigGetArgs.cs b/sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigGetArgs.cs new file mode 100644 index 0000000000..2bf81ee398 --- /dev/null +++ b/sdk/dotnet/Dataproc/Inputs/MetastoreServiceScalingConfigGetArgs.cs @@ -0,0 +1,33 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Dataproc.Inputs +{ + + public sealed class MetastoreServiceScalingConfigGetArgs : global::Pulumi.ResourceArgs + { + /// + /// Metastore instance sizes. + /// Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + /// + [Input("instanceSize")] + public Input? InstanceSize { get; set; } + + /// + /// Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + /// + [Input("scalingFactor")] + public Input? ScalingFactor { get; set; } + + public MetastoreServiceScalingConfigGetArgs() + { + } + public static new MetastoreServiceScalingConfigGetArgs Empty => new MetastoreServiceScalingConfigGetArgs(); + } +} diff --git a/sdk/dotnet/Dataproc/MetastoreService.cs b/sdk/dotnet/Dataproc/MetastoreService.cs index c66ea2d28e..6f37b3e250 100644 --- a/sdk/dotnet/Dataproc/MetastoreService.cs +++ b/sdk/dotnet/Dataproc/MetastoreService.cs @@ -136,6 +136,60 @@ namespace Pulumi.Gcp.Dataproc /// /// }); /// ``` + /// ### Dataproc Metastore Service Dpms2 + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var dpms2 = new Gcp.Dataproc.MetastoreService("dpms2", new() + /// { + /// DatabaseType = "SPANNER", + /// HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs + /// { + /// Version = "3.1.2", + /// }, + /// Location = "us-central1", + /// ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs + /// { + /// InstanceSize = "EXTRA_SMALL", + /// }, + /// ServiceId = "dpms2", + /// }); + /// + /// }); + /// ``` + /// ### Dataproc Metastore Service Dpms2 Scaling Factor + /// + /// ```csharp + /// using System.Collections.Generic; + /// using System.Linq; + /// using Pulumi; + /// using Gcp = Pulumi.Gcp; + /// + /// return await Deployment.RunAsync(() => + /// { + /// var dpms2ScalingFactor = new Gcp.Dataproc.MetastoreService("dpms2ScalingFactor", new() + /// { + /// DatabaseType = "SPANNER", + /// HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs + /// { + /// Version = "3.1.2", + /// }, + /// Location = "us-central1", + /// ScalingConfig = new Gcp.Dataproc.Inputs.MetastoreServiceScalingConfigArgs + /// { + /// ScalingFactor = 2, + /// }, + /// ServiceId = "dpms2sf", + /// }); + /// + /// }); + /// ``` /// /// ## Import /// @@ -261,6 +315,13 @@ public partial class MetastoreService : global::Pulumi.CustomResource [Output("releaseChannel")] public Output ReleaseChannel { get; private set; } = null!; + /// + /// Represents the scaling configuration of a metastore service. + /// Structure is documented below. + /// + [Output("scalingConfig")] + public Output ScalingConfig { get; private set; } = null!; + /// /// The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), /// and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between @@ -442,6 +503,13 @@ public InputMap Labels [Input("releaseChannel")] public Input? ReleaseChannel { get; set; } + /// + /// Represents the scaling configuration of a metastore service. + /// Structure is documented below. + /// + [Input("scalingConfig")] + public Input? ScalingConfig { get; set; } + /// /// The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), /// and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between @@ -586,6 +654,13 @@ public InputMap Labels [Input("releaseChannel")] public Input? ReleaseChannel { get; set; } + /// + /// Represents the scaling configuration of a metastore service. + /// Structure is documented below. + /// + [Input("scalingConfig")] + public Input? ScalingConfig { get; set; } + /// /// The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), /// and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between diff --git a/sdk/dotnet/Dataproc/Outputs/MetastoreServiceScalingConfig.cs b/sdk/dotnet/Dataproc/Outputs/MetastoreServiceScalingConfig.cs new file mode 100644 index 0000000000..fb6cb382f6 --- /dev/null +++ b/sdk/dotnet/Dataproc/Outputs/MetastoreServiceScalingConfig.cs @@ -0,0 +1,36 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Gcp.Dataproc.Outputs +{ + + [OutputType] + public sealed class MetastoreServiceScalingConfig + { + /// + /// Metastore instance sizes. + /// Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + /// + public readonly string? InstanceSize; + /// + /// Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + /// + public readonly double? ScalingFactor; + + [OutputConstructor] + private MetastoreServiceScalingConfig( + string? instanceSize, + + double? scalingFactor) + { + InstanceSize = instanceSize; + ScalingFactor = scalingFactor; + } + } +} diff --git a/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigArgs.cs b/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigArgs.cs index a4ef013f51..86862bea14 100644 --- a/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigArgs.cs +++ b/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigArgs.cs @@ -25,7 +25,7 @@ public InputList GkeClu set => _gkeClusters = value; } - [Input("networks", required: true)] + [Input("networks")] private InputList? _networks; public InputList Networks { diff --git a/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigGetArgs.cs b/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigGetArgs.cs index fadb8afb13..1f0c7d2ad0 100644 --- a/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/ManagedZonePrivateVisibilityConfigGetArgs.cs @@ -25,7 +25,7 @@ public InputList Gke set => _gkeClusters = value; } - [Input("networks", required: true)] + [Input("networks")] private InputList? _networks; public InputList Networks { diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs index 2f4feec39b..2b08b4c589 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBal public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs index df7848cada..d8722db9de 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBal public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs index b347d29f92..49fc0c5470 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTar public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs index 5e5ce84d86..b7243b00eb 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerGetArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTar public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.cs index da7ab2ad2d..cd6d64abf5 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalanc public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerGetArgs.cs index 8863240d8b..3c9b24f76e 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerGetArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalanc public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.cs index cba6c75479..aa6d011e2a 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBal public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerGetArgs.cs b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerGetArgs.cs index 8d4b6f72ff..6c4973636b 100644 --- a/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerGetArgs.cs +++ b/sdk/dotnet/Dns/Inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerGetArgs.cs @@ -25,7 +25,7 @@ public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBal public Input IpProtocol { get; set; } = null!; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// [Input("loadBalancerType", required: true)] public Input LoadBalancerType { get; set; } = null!; diff --git a/sdk/dotnet/Dns/ManagedZone.cs b/sdk/dotnet/Dns/ManagedZone.cs index b821565fd4..fbe8cf6832 100644 --- a/sdk/dotnet/Dns/ManagedZone.cs +++ b/sdk/dotnet/Dns/ManagedZone.cs @@ -227,13 +227,6 @@ namespace Pulumi.Gcp.Dns /// Visibility = "private", /// PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs /// { - /// Networks = new[] - /// { - /// new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs - /// { - /// NetworkUrl = network_1.Id, - /// }, - /// }, /// GkeClusters = new[] /// { /// new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigGkeClusterArgs @@ -470,7 +463,7 @@ public partial class ManagedZone : global::Pulumi.CustomResource /// /// For privately visible zones, the set of Virtual Private Cloud - /// resources that the zone is visible from. + /// resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. /// Structure is documented below. /// [Output("privateVisibilityConfig")] @@ -625,7 +618,7 @@ public InputMap Labels /// /// For privately visible zones, the set of Virtual Private Cloud - /// resources that the zone is visible from. + /// resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. /// Structure is documented below. /// [Input("privateVisibilityConfig")] @@ -769,7 +762,7 @@ public InputList NameServers /// /// For privately visible zones, the set of Virtual Private Cloud - /// resources that the zone is visible from. + /// resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. /// Structure is documented below. /// [Input("privateVisibilityConfig")] diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.cs index afcf59a9ee..2b9f598a7a 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.cs @@ -22,7 +22,7 @@ public sealed class RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBal /// public readonly string IpProtocol; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// public readonly string LoadBalancerType; /// diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.cs index 8d715605a9..90d2318afc 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.cs @@ -22,7 +22,7 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTar /// public readonly string IpProtocol; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// public readonly string LoadBalancerType; /// diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.cs index 3420e16038..c37ae32bbd 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.cs @@ -22,7 +22,7 @@ public sealed class RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalanc /// public readonly string IpProtocol; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// public readonly string LoadBalancerType; /// diff --git a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.cs b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.cs index 8afec0330e..cd9b0db956 100644 --- a/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.cs +++ b/sdk/dotnet/Dns/Outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.cs @@ -22,7 +22,7 @@ public sealed class RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBal /// public readonly string IpProtocol; /// - /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + /// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] /// public readonly string LoadBalancerType; /// diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.cs index 8069c7d3a6..cfeab82284 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.cs @@ -15,12 +15,19 @@ public sealed class VMwareClusterControlPlaneNodeVsphereConfigArgs : global::Pul /// /// (Output) /// The Vsphere datastore used by the Control Plane Node. - /// - /// - - - /// [Input("datastore")] public Input? Datastore { get; set; } + /// + /// (Output) + /// The Vsphere storage policy used by the control plane Node. + /// + /// - - - + /// + [Input("storagePolicyName")] + public Input? StoragePolicyName { get; set; } + public VMwareClusterControlPlaneNodeVsphereConfigArgs() { } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigGetArgs.cs index c6f6c1bf59..ef6ed38c8a 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterControlPlaneNodeVsphereConfigGetArgs.cs @@ -15,12 +15,19 @@ public sealed class VMwareClusterControlPlaneNodeVsphereConfigGetArgs : global:: /// /// (Output) /// The Vsphere datastore used by the Control Plane Node. - /// - /// - - - /// [Input("datastore")] public Input? Datastore { get; set; } + /// + /// (Output) + /// The Vsphere storage policy used by the control plane Node. + /// + /// - - - + /// + [Input("storagePolicyName")] + public Input? StoragePolicyName { get; set; } + public VMwareClusterControlPlaneNodeVsphereConfigGetArgs() { } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterArgs.cs index 97c16f04e8..d711aceaa4 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterArgs.cs @@ -42,8 +42,6 @@ public sealed class VMwareClusterVcenterArgs : global::Pulumi.ResourceArgs /// /// (Output) /// The Vsphere datastore used by the Control Plane Node. - /// - /// - - - /// [Input("datastore")] public Input? Datastore { get; set; } @@ -62,6 +60,15 @@ public sealed class VMwareClusterVcenterArgs : global::Pulumi.ResourceArgs [Input("resourcePool")] public Input? ResourcePool { get; set; } + /// + /// (Output) + /// The Vsphere storage policy used by the control plane Node. + /// + /// - - - + /// + [Input("storagePolicyName")] + public Input? StoragePolicyName { get; set; } + public VMwareClusterVcenterArgs() { } diff --git a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterGetArgs.cs b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterGetArgs.cs index b45c2fa7f0..c851a6c87e 100644 --- a/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterGetArgs.cs +++ b/sdk/dotnet/GkeOnPrem/Inputs/VMwareClusterVcenterGetArgs.cs @@ -42,8 +42,6 @@ public sealed class VMwareClusterVcenterGetArgs : global::Pulumi.ResourceArgs /// /// (Output) /// The Vsphere datastore used by the Control Plane Node. - /// - /// - - - /// [Input("datastore")] public Input? Datastore { get; set; } @@ -62,6 +60,15 @@ public sealed class VMwareClusterVcenterGetArgs : global::Pulumi.ResourceArgs [Input("resourcePool")] public Input? ResourcePool { get; set; } + /// + /// (Output) + /// The Vsphere storage policy used by the control plane Node. + /// + /// - - - + /// + [Input("storagePolicyName")] + public Input? StoragePolicyName { get; set; } + public VMwareClusterVcenterGetArgs() { } diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeVsphereConfig.cs b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeVsphereConfig.cs index 862e641b00..79db15bd4a 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeVsphereConfig.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterControlPlaneNodeVsphereConfig.cs @@ -16,15 +16,24 @@ public sealed class VMwareClusterControlPlaneNodeVsphereConfig /// /// (Output) /// The Vsphere datastore used by the Control Plane Node. + /// + public readonly string? Datastore; + /// + /// (Output) + /// The Vsphere storage policy used by the control plane Node. /// /// - - - /// - public readonly string? Datastore; + public readonly string? StoragePolicyName; [OutputConstructor] - private VMwareClusterControlPlaneNodeVsphereConfig(string? datastore) + private VMwareClusterControlPlaneNodeVsphereConfig( + string? datastore, + + string? storagePolicyName) { Datastore = datastore; + StoragePolicyName = storagePolicyName; } } } diff --git a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterVcenter.cs b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterVcenter.cs index fd5855f39d..fbf223f88d 100644 --- a/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterVcenter.cs +++ b/sdk/dotnet/GkeOnPrem/Outputs/VMwareClusterVcenter.cs @@ -35,8 +35,6 @@ public sealed class VMwareClusterVcenter /// /// (Output) /// The Vsphere datastore used by the Control Plane Node. - /// - /// - - - /// public readonly string? Datastore; /// @@ -49,6 +47,13 @@ public sealed class VMwareClusterVcenter /// The name of the vCenter resource pool for the user cluster. /// public readonly string? ResourcePool; + /// + /// (Output) + /// The Vsphere storage policy used by the control plane Node. + /// + /// - - - + /// + public readonly string? StoragePolicyName; [OutputConstructor] private VMwareClusterVcenter( @@ -64,7 +69,9 @@ private VMwareClusterVcenter( string? folder, - string? resourcePool) + string? resourcePool, + + string? storagePolicyName) { Address = address; CaCertData = caCertData; @@ -73,6 +80,7 @@ private VMwareClusterVcenter( Datastore = datastore; Folder = folder; ResourcePool = resourcePool; + StoragePolicyName = storagePolicyName; } } } diff --git a/sdk/dotnet/Healthcare/FhirStore.cs b/sdk/dotnet/Healthcare/FhirStore.cs index 2894af5112..27bd8baee6 100644 --- a/sdk/dotnet/Healthcare/FhirStore.cs +++ b/sdk/dotnet/Healthcare/FhirStore.cs @@ -46,6 +46,7 @@ namespace Pulumi.Gcp.Healthcare /// DisableReferentialIntegrity = false, /// DisableResourceVersioning = false, /// EnableHistoryImport = false, + /// DefaultSearchHandlingStrict = false, /// NotificationConfig = new Gcp.Healthcare.Inputs.FhirStoreNotificationConfigArgs /// { /// PubsubTopic = topic.Id, @@ -251,6 +252,14 @@ public partial class FhirStore : global::Pulumi.CustomResource [Output("dataset")] public Output Dataset { get; private set; } = null!; + /// + /// If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + /// If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + /// The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + /// + [Output("defaultSearchHandlingStrict")] + public Output DefaultSearchHandlingStrict { get; private set; } = null!; + /// /// Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store /// creation. The default value is false, meaning that the API will enforce referential integrity and fail the @@ -417,6 +426,14 @@ public sealed class FhirStoreArgs : global::Pulumi.ResourceArgs [Input("dataset", required: true)] public Input Dataset { get; set; } = null!; + /// + /// If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + /// If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + /// The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + /// + [Input("defaultSearchHandlingStrict")] + public Input? DefaultSearchHandlingStrict { get; set; } + /// /// Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store /// creation. The default value is false, meaning that the API will enforce referential integrity and fail the @@ -557,6 +574,14 @@ public sealed class FhirStoreState : global::Pulumi.ResourceArgs [Input("dataset")] public Input? Dataset { get; set; } + /// + /// If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + /// If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + /// The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + /// + [Input("defaultSearchHandlingStrict")] + public Input? DefaultSearchHandlingStrict { get; set; } + /// /// Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store /// creation. The default value is false, meaning that the API will enforce referential integrity and fail the diff --git a/sdk/dotnet/Monitoring/GetAppEngineService.cs b/sdk/dotnet/Monitoring/GetAppEngineService.cs index 3720bd769f..734a104546 100644 --- a/sdk/dotnet/Monitoring/GetAppEngineService.cs +++ b/sdk/dotnet/Monitoring/GetAppEngineService.cs @@ -49,7 +49,7 @@ public static class GetAppEngineService /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var myapp = new Gcp.AppEngine.StandardAppVersion("myapp", new() @@ -131,7 +131,7 @@ public static Task InvokeAsync(GetAppEngineServiceArg /// var @object = new Gcp.Storage.BucketObject("object", new() /// { /// Bucket = bucket.Name, - /// Source = new FileAsset("./test-fixtures/appengine/hello-world.zip"), + /// Source = new FileAsset("./test-fixtures/hello-world.zip"), /// }); /// /// var myapp = new Gcp.AppEngine.StandardAppVersion("myapp", new() diff --git a/sdk/dotnet/NetworkServices/Gateway.cs b/sdk/dotnet/NetworkServices/Gateway.cs index 0861cc258a..a22441f4db 100644 --- a/sdk/dotnet/NetworkServices/Gateway.cs +++ b/sdk/dotnet/NetworkServices/Gateway.cs @@ -85,8 +85,8 @@ namespace Pulumi.Gcp.NetworkServices /// Location = "us-central1", /// SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs /// { - /// PemCertificate = File.ReadAllText("test-fixtures/certificatemanager/cert.pem"), - /// PemPrivateKey = File.ReadAllText("test-fixtures/certificatemanager/private-key.pem"), + /// PemCertificate = File.ReadAllText("test-fixtures/cert.pem"), + /// PemPrivateKey = File.ReadAllText("test-fixtures/private-key.pem"), /// }, /// }); /// @@ -176,8 +176,8 @@ namespace Pulumi.Gcp.NetworkServices /// Location = "us-south1", /// SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs /// { - /// PemCertificate = File.ReadAllText("test-fixtures/certificatemanager/cert.pem"), - /// PemPrivateKey = File.ReadAllText("test-fixtures/certificatemanager/private-key.pem"), + /// PemCertificate = File.ReadAllText("test-fixtures/cert.pem"), + /// PemPrivateKey = File.ReadAllText("test-fixtures/private-key.pem"), /// }, /// }); /// diff --git a/sdk/dotnet/Provider.cs b/sdk/dotnet/Provider.cs index 2f4b832a0c..8c2e4aa7a7 100644 --- a/sdk/dotnet/Provider.cs +++ b/sdk/dotnet/Provider.cs @@ -51,6 +51,9 @@ public partial class Provider : global::Pulumi.ProviderResource [Output("assuredWorkloadsCustomEndpoint")] public Output AssuredWorkloadsCustomEndpoint { get; private set; } = null!; + [Output("backupDrCustomEndpoint")] + public Output BackupDrCustomEndpoint { get; private set; } = null!; + [Output("beyondcorpCustomEndpoint")] public Output BeyondcorpCustomEndpoint { get; private set; } = null!; @@ -499,6 +502,9 @@ public sealed class ProviderArgs : global::Pulumi.ResourceArgs [Input("assuredWorkloadsCustomEndpoint")] public Input? AssuredWorkloadsCustomEndpoint { get; set; } + [Input("backupDrCustomEndpoint")] + public Input? BackupDrCustomEndpoint { get; set; } + [Input("batching", json: true)] public Input? Batching { get; set; } diff --git a/sdk/dotnet/SecretManager/GetSecret.cs b/sdk/dotnet/SecretManager/GetSecret.cs index bb55d6af47..91359901a8 100644 --- a/sdk/dotnet/SecretManager/GetSecret.cs +++ b/sdk/dotnet/SecretManager/GetSecret.cs @@ -128,6 +128,7 @@ public sealed class GetSecretResult public readonly string SecretId; public readonly ImmutableArray Topics; public readonly string Ttl; + public readonly ImmutableDictionary VersionAliases; [OutputConstructor] private GetSecretResult( @@ -153,7 +154,9 @@ private GetSecretResult( ImmutableArray topics, - string ttl) + string ttl, + + ImmutableDictionary versionAliases) { Annotations = annotations; CreateTime = createTime; @@ -167,6 +170,7 @@ private GetSecretResult( SecretId = secretId; Topics = topics; Ttl = ttl; + VersionAliases = versionAliases; } } } diff --git a/sdk/dotnet/SecretManager/Secret.cs b/sdk/dotnet/SecretManager/Secret.cs index 355f547935..aa5fa143c1 100644 --- a/sdk/dotnet/SecretManager/Secret.cs +++ b/sdk/dotnet/SecretManager/Secret.cs @@ -198,6 +198,18 @@ public partial class Secret : global::Pulumi.CustomResource [Output("ttl")] public Output Ttl { get; private set; } = null!; + /// + /// Mapping from version alias to version name. + /// A version alias is a string with a maximum length of 63 characters and can contain + /// uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + /// characters. An alias string must start with a letter and cannot be the string + /// 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + /// An object containing a list of "key": value pairs. Example: + /// { "name": "wrench", "mass": "1.3kg", "count": "3" }. + /// + [Output("versionAliases")] + public Output?> VersionAliases { get; private set; } = null!; + /// /// Create a Secret resource with the given unique name, arguments, and options. @@ -339,6 +351,24 @@ public InputList Topics [Input("ttl")] public Input? Ttl { get; set; } + [Input("versionAliases")] + private InputMap? _versionAliases; + + /// + /// Mapping from version alias to version name. + /// A version alias is a string with a maximum length of 63 characters and can contain + /// uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + /// characters. An alias string must start with a letter and cannot be the string + /// 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + /// An object containing a list of "key": value pairs. Example: + /// { "name": "wrench", "mass": "1.3kg", "count": "3" }. + /// + public InputMap VersionAliases + { + get => _versionAliases ?? (_versionAliases = new InputMap()); + set => _versionAliases = value; + } + public SecretArgs() { } @@ -455,6 +485,24 @@ public InputList Topics [Input("ttl")] public Input? Ttl { get; set; } + [Input("versionAliases")] + private InputMap? _versionAliases; + + /// + /// Mapping from version alias to version name. + /// A version alias is a string with a maximum length of 63 characters and can contain + /// uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + /// characters. An alias string must start with a letter and cannot be the string + /// 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + /// An object containing a list of "key": value pairs. Example: + /// { "name": "wrench", "mass": "1.3kg", "count": "3" }. + /// + public InputMap VersionAliases + { + get => _versionAliases ?? (_versionAliases = new InputMap()); + set => _versionAliases = value; + } + public SecretState() { } diff --git a/sdk/go/gcp/apigateway/apiConfig.go b/sdk/go/gcp/apigateway/apiConfig.go index 59d5d2a9dc..582decb1d2 100644 --- a/sdk/go/gcp/apigateway/apiConfig.go +++ b/sdk/go/gcp/apigateway/apiConfig.go @@ -59,7 +59,7 @@ import ( // &apigateway.ApiConfigOpenapiDocumentArgs{ // Document: &apigateway.ApiConfigOpenapiDocumentDocumentArgs{ // Path: pulumi.String("spec.yaml"), -// Contents: filebase64OrPanic("test-fixtures/apigateway/openapi.yaml"), +// Contents: filebase64OrPanic("test-fixtures/openapi.yaml"), // }, // }, // }, diff --git a/sdk/go/gcp/apigateway/gateway.go b/sdk/go/gcp/apigateway/gateway.go index 6a4a53133a..df92f5ace4 100644 --- a/sdk/go/gcp/apigateway/gateway.go +++ b/sdk/go/gcp/apigateway/gateway.go @@ -59,7 +59,7 @@ import ( // &apigateway.ApiConfigOpenapiDocumentArgs{ // Document: &apigateway.ApiConfigOpenapiDocumentDocumentArgs{ // Path: pulumi.String("spec.yaml"), -// Contents: filebase64OrPanic("test-fixtures/apigateway/openapi.yaml"), +// Contents: filebase64OrPanic("test-fixtures/openapi.yaml"), // }, // }, // }, diff --git a/sdk/go/gcp/appengine/applicationUrlDispatchRules.go b/sdk/go/gcp/appengine/applicationUrlDispatchRules.go index e1082abb50..cb43ed1a7c 100644 --- a/sdk/go/gcp/appengine/applicationUrlDispatchRules.go +++ b/sdk/go/gcp/appengine/applicationUrlDispatchRules.go @@ -44,7 +44,7 @@ import ( // } // object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ // Bucket: bucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/appengine/hello-world.zip"), +// Source: pulumi.NewFileAsset("./test-fixtures/hello-world.zip"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/appengine/flexibleAppVersion.go b/sdk/go/gcp/appengine/flexibleAppVersion.go index 7021111216..5dfd12a412 100644 --- a/sdk/go/gcp/appengine/flexibleAppVersion.go +++ b/sdk/go/gcp/appengine/flexibleAppVersion.go @@ -117,7 +117,7 @@ import ( // } // object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ // Bucket: bucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/appengine/hello-world.zip"), +// Source: pulumi.NewFileAsset("./test-fixtures/hello-world.zip"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/appengine/serviceNetworkSettings.go b/sdk/go/gcp/appengine/serviceNetworkSettings.go index 3386150898..d97306b539 100644 --- a/sdk/go/gcp/appengine/serviceNetworkSettings.go +++ b/sdk/go/gcp/appengine/serviceNetworkSettings.go @@ -44,7 +44,7 @@ import ( // } // object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ // Bucket: bucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/appengine/hello-world.zip"), +// Source: pulumi.NewFileAsset("./test-fixtures/hello-world.zip"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/appengine/standardAppVersion.go b/sdk/go/gcp/appengine/standardAppVersion.go index 62e5bc8761..61bcff8d2a 100644 --- a/sdk/go/gcp/appengine/standardAppVersion.go +++ b/sdk/go/gcp/appengine/standardAppVersion.go @@ -78,7 +78,7 @@ import ( // } // object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ // Bucket: bucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/appengine/hello-world.zip"), +// Source: pulumi.NewFileAsset("./test-fixtures/hello-world.zip"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/backupdisasterrecovery/init.go b/sdk/go/gcp/backupdisasterrecovery/init.go new file mode 100644 index 0000000000..4154c9da32 --- /dev/null +++ b/sdk/go/gcp/backupdisasterrecovery/init.go @@ -0,0 +1,44 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package backupdisasterrecovery + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "gcp:backupdisasterrecovery/managementServer:ManagementServer": + r = &ManagementServer{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "gcp", + "backupdisasterrecovery/managementServer", + &module{version}, + ) +} diff --git a/sdk/go/gcp/backupdisasterrecovery/managementServer.go b/sdk/go/gcp/backupdisasterrecovery/managementServer.go new file mode 100644 index 0000000000..d520423fd6 --- /dev/null +++ b/sdk/go/gcp/backupdisasterrecovery/managementServer.go @@ -0,0 +1,413 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package backupdisasterrecovery + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// ### Backup Dr Management Server +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/backupdisasterrecovery" +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/servicenetworking" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// defaultNetwork, err := compute.NewNetwork(ctx, "defaultNetwork", nil, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// privateIpAddress, err := compute.NewGlobalAddress(ctx, "privateIpAddress", &compute.GlobalAddressArgs{ +// AddressType: pulumi.String("INTERNAL"), +// Purpose: pulumi.String("VPC_PEERING"), +// PrefixLength: pulumi.Int(20), +// Network: defaultNetwork.ID(), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// defaultConnection, err := servicenetworking.NewConnection(ctx, "defaultConnection", &servicenetworking.ConnectionArgs{ +// Network: defaultNetwork.ID(), +// Service: pulumi.String("servicenetworking.googleapis.com"), +// ReservedPeeringRanges: pulumi.StringArray{ +// privateIpAddress.Name, +// }, +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// _, err = backupdisasterrecovery.NewManagementServer(ctx, "ms-console", &backupdisasterrecovery.ManagementServerArgs{ +// Location: pulumi.String("us-central1"), +// Type: pulumi.String("BACKUP_RESTORE"), +// Networks: backupdisasterrecovery.ManagementServerNetworkArray{ +// &backupdisasterrecovery.ManagementServerNetworkArgs{ +// Network: defaultNetwork.ID(), +// PeeringMode: pulumi.String("PRIVATE_SERVICE_ACCESS"), +// }, +// }, +// }, pulumi.Provider(google_beta), pulumi.DependsOn([]pulumi.Resource{ +// defaultConnection, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// # ManagementServer can be imported using any of these accepted formats +// +// ```sh +// +// $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}} +// +// ``` +// +// ```sh +// +// $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}} +// +// ``` +// +// ```sh +// +// $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}} +// +// ``` +type ManagementServer struct { + pulumi.CustomResourceState + + // The location for the management server (management console) + Location pulumi.StringOutput `pulumi:"location"` + // The management console URI + // Structure is documented below. + ManagementUris ManagementServerManagementUriArrayOutput `pulumi:"managementUris"` + // The name of management server (management console) + Name pulumi.StringOutput `pulumi:"name"` + // Network details to create management server (management console). + // Structure is documented below. + Networks ManagementServerNetworkArrayOutput `pulumi:"networks"` + // The oauth2ClientId of management console. + Oauth2ClientId pulumi.StringOutput `pulumi:"oauth2ClientId"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringOutput `pulumi:"project"` + // The type of management server (management console). + // Default value is `BACKUP_RESTORE`. + // Possible values are: `BACKUP_RESTORE`. + Type pulumi.StringPtrOutput `pulumi:"type"` +} + +// NewManagementServer registers a new resource with the given unique name, arguments, and options. +func NewManagementServer(ctx *pulumi.Context, + name string, args *ManagementServerArgs, opts ...pulumi.ResourceOption) (*ManagementServer, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Location == nil { + return nil, errors.New("invalid value for required argument 'Location'") + } + if args.Networks == nil { + return nil, errors.New("invalid value for required argument 'Networks'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource ManagementServer + err := ctx.RegisterResource("gcp:backupdisasterrecovery/managementServer:ManagementServer", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetManagementServer gets an existing ManagementServer resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetManagementServer(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ManagementServerState, opts ...pulumi.ResourceOption) (*ManagementServer, error) { + var resource ManagementServer + err := ctx.ReadResource("gcp:backupdisasterrecovery/managementServer:ManagementServer", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ManagementServer resources. +type managementServerState struct { + // The location for the management server (management console) + Location *string `pulumi:"location"` + // The management console URI + // Structure is documented below. + ManagementUris []ManagementServerManagementUri `pulumi:"managementUris"` + // The name of management server (management console) + Name *string `pulumi:"name"` + // Network details to create management server (management console). + // Structure is documented below. + Networks []ManagementServerNetwork `pulumi:"networks"` + // The oauth2ClientId of management console. + Oauth2ClientId *string `pulumi:"oauth2ClientId"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // The type of management server (management console). + // Default value is `BACKUP_RESTORE`. + // Possible values are: `BACKUP_RESTORE`. + Type *string `pulumi:"type"` +} + +type ManagementServerState struct { + // The location for the management server (management console) + Location pulumi.StringPtrInput + // The management console URI + // Structure is documented below. + ManagementUris ManagementServerManagementUriArrayInput + // The name of management server (management console) + Name pulumi.StringPtrInput + // Network details to create management server (management console). + // Structure is documented below. + Networks ManagementServerNetworkArrayInput + // The oauth2ClientId of management console. + Oauth2ClientId pulumi.StringPtrInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // The type of management server (management console). + // Default value is `BACKUP_RESTORE`. + // Possible values are: `BACKUP_RESTORE`. + Type pulumi.StringPtrInput +} + +func (ManagementServerState) ElementType() reflect.Type { + return reflect.TypeOf((*managementServerState)(nil)).Elem() +} + +type managementServerArgs struct { + // The location for the management server (management console) + Location string `pulumi:"location"` + // The name of management server (management console) + Name *string `pulumi:"name"` + // Network details to create management server (management console). + // Structure is documented below. + Networks []ManagementServerNetwork `pulumi:"networks"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // The type of management server (management console). + // Default value is `BACKUP_RESTORE`. + // Possible values are: `BACKUP_RESTORE`. + Type *string `pulumi:"type"` +} + +// The set of arguments for constructing a ManagementServer resource. +type ManagementServerArgs struct { + // The location for the management server (management console) + Location pulumi.StringInput + // The name of management server (management console) + Name pulumi.StringPtrInput + // Network details to create management server (management console). + // Structure is documented below. + Networks ManagementServerNetworkArrayInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // The type of management server (management console). + // Default value is `BACKUP_RESTORE`. + // Possible values are: `BACKUP_RESTORE`. + Type pulumi.StringPtrInput +} + +func (ManagementServerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*managementServerArgs)(nil)).Elem() +} + +type ManagementServerInput interface { + pulumi.Input + + ToManagementServerOutput() ManagementServerOutput + ToManagementServerOutputWithContext(ctx context.Context) ManagementServerOutput +} + +func (*ManagementServer) ElementType() reflect.Type { + return reflect.TypeOf((**ManagementServer)(nil)).Elem() +} + +func (i *ManagementServer) ToManagementServerOutput() ManagementServerOutput { + return i.ToManagementServerOutputWithContext(context.Background()) +} + +func (i *ManagementServer) ToManagementServerOutputWithContext(ctx context.Context) ManagementServerOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerOutput) +} + +// ManagementServerArrayInput is an input type that accepts ManagementServerArray and ManagementServerArrayOutput values. +// You can construct a concrete instance of `ManagementServerArrayInput` via: +// +// ManagementServerArray{ ManagementServerArgs{...} } +type ManagementServerArrayInput interface { + pulumi.Input + + ToManagementServerArrayOutput() ManagementServerArrayOutput + ToManagementServerArrayOutputWithContext(context.Context) ManagementServerArrayOutput +} + +type ManagementServerArray []ManagementServerInput + +func (ManagementServerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ManagementServer)(nil)).Elem() +} + +func (i ManagementServerArray) ToManagementServerArrayOutput() ManagementServerArrayOutput { + return i.ToManagementServerArrayOutputWithContext(context.Background()) +} + +func (i ManagementServerArray) ToManagementServerArrayOutputWithContext(ctx context.Context) ManagementServerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerArrayOutput) +} + +// ManagementServerMapInput is an input type that accepts ManagementServerMap and ManagementServerMapOutput values. +// You can construct a concrete instance of `ManagementServerMapInput` via: +// +// ManagementServerMap{ "key": ManagementServerArgs{...} } +type ManagementServerMapInput interface { + pulumi.Input + + ToManagementServerMapOutput() ManagementServerMapOutput + ToManagementServerMapOutputWithContext(context.Context) ManagementServerMapOutput +} + +type ManagementServerMap map[string]ManagementServerInput + +func (ManagementServerMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ManagementServer)(nil)).Elem() +} + +func (i ManagementServerMap) ToManagementServerMapOutput() ManagementServerMapOutput { + return i.ToManagementServerMapOutputWithContext(context.Background()) +} + +func (i ManagementServerMap) ToManagementServerMapOutputWithContext(ctx context.Context) ManagementServerMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerMapOutput) +} + +type ManagementServerOutput struct{ *pulumi.OutputState } + +func (ManagementServerOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ManagementServer)(nil)).Elem() +} + +func (o ManagementServerOutput) ToManagementServerOutput() ManagementServerOutput { + return o +} + +func (o ManagementServerOutput) ToManagementServerOutputWithContext(ctx context.Context) ManagementServerOutput { + return o +} + +// The location for the management server (management console) +func (o ManagementServerOutput) Location() pulumi.StringOutput { + return o.ApplyT(func(v *ManagementServer) pulumi.StringOutput { return v.Location }).(pulumi.StringOutput) +} + +// The management console URI +// Structure is documented below. +func (o ManagementServerOutput) ManagementUris() ManagementServerManagementUriArrayOutput { + return o.ApplyT(func(v *ManagementServer) ManagementServerManagementUriArrayOutput { return v.ManagementUris }).(ManagementServerManagementUriArrayOutput) +} + +// The name of management server (management console) +func (o ManagementServerOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *ManagementServer) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Network details to create management server (management console). +// Structure is documented below. +func (o ManagementServerOutput) Networks() ManagementServerNetworkArrayOutput { + return o.ApplyT(func(v *ManagementServer) ManagementServerNetworkArrayOutput { return v.Networks }).(ManagementServerNetworkArrayOutput) +} + +// The oauth2ClientId of management console. +func (o ManagementServerOutput) Oauth2ClientId() pulumi.StringOutput { + return o.ApplyT(func(v *ManagementServer) pulumi.StringOutput { return v.Oauth2ClientId }).(pulumi.StringOutput) +} + +// The ID of the project in which the resource belongs. +// If it is not provided, the provider project is used. +func (o ManagementServerOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *ManagementServer) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// The type of management server (management console). +// Default value is `BACKUP_RESTORE`. +// Possible values are: `BACKUP_RESTORE`. +func (o ManagementServerOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ManagementServer) pulumi.StringPtrOutput { return v.Type }).(pulumi.StringPtrOutput) +} + +type ManagementServerArrayOutput struct{ *pulumi.OutputState } + +func (ManagementServerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ManagementServer)(nil)).Elem() +} + +func (o ManagementServerArrayOutput) ToManagementServerArrayOutput() ManagementServerArrayOutput { + return o +} + +func (o ManagementServerArrayOutput) ToManagementServerArrayOutputWithContext(ctx context.Context) ManagementServerArrayOutput { + return o +} + +func (o ManagementServerArrayOutput) Index(i pulumi.IntInput) ManagementServerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ManagementServer { + return vs[0].([]*ManagementServer)[vs[1].(int)] + }).(ManagementServerOutput) +} + +type ManagementServerMapOutput struct{ *pulumi.OutputState } + +func (ManagementServerMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ManagementServer)(nil)).Elem() +} + +func (o ManagementServerMapOutput) ToManagementServerMapOutput() ManagementServerMapOutput { + return o +} + +func (o ManagementServerMapOutput) ToManagementServerMapOutputWithContext(ctx context.Context) ManagementServerMapOutput { + return o +} + +func (o ManagementServerMapOutput) MapIndex(k pulumi.StringInput) ManagementServerOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ManagementServer { + return vs[0].(map[string]*ManagementServer)[vs[1].(string)] + }).(ManagementServerOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerInput)(nil)).Elem(), &ManagementServer{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerArrayInput)(nil)).Elem(), ManagementServerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerMapInput)(nil)).Elem(), ManagementServerMap{}) + pulumi.RegisterOutputType(ManagementServerOutput{}) + pulumi.RegisterOutputType(ManagementServerArrayOutput{}) + pulumi.RegisterOutputType(ManagementServerMapOutput{}) +} diff --git a/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go b/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go new file mode 100644 index 0000000000..13c54d5616 --- /dev/null +++ b/sdk/go/gcp/backupdisasterrecovery/pulumiTypes.go @@ -0,0 +1,255 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package backupdisasterrecovery + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type ManagementServerManagementUri struct { + // (Output) + // The management console api endpoint. + Api *string `pulumi:"api"` + // (Output) + // The management console webUi. + WebUi *string `pulumi:"webUi"` +} + +// ManagementServerManagementUriInput is an input type that accepts ManagementServerManagementUriArgs and ManagementServerManagementUriOutput values. +// You can construct a concrete instance of `ManagementServerManagementUriInput` via: +// +// ManagementServerManagementUriArgs{...} +type ManagementServerManagementUriInput interface { + pulumi.Input + + ToManagementServerManagementUriOutput() ManagementServerManagementUriOutput + ToManagementServerManagementUriOutputWithContext(context.Context) ManagementServerManagementUriOutput +} + +type ManagementServerManagementUriArgs struct { + // (Output) + // The management console api endpoint. + Api pulumi.StringPtrInput `pulumi:"api"` + // (Output) + // The management console webUi. + WebUi pulumi.StringPtrInput `pulumi:"webUi"` +} + +func (ManagementServerManagementUriArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementServerManagementUri)(nil)).Elem() +} + +func (i ManagementServerManagementUriArgs) ToManagementServerManagementUriOutput() ManagementServerManagementUriOutput { + return i.ToManagementServerManagementUriOutputWithContext(context.Background()) +} + +func (i ManagementServerManagementUriArgs) ToManagementServerManagementUriOutputWithContext(ctx context.Context) ManagementServerManagementUriOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerManagementUriOutput) +} + +// ManagementServerManagementUriArrayInput is an input type that accepts ManagementServerManagementUriArray and ManagementServerManagementUriArrayOutput values. +// You can construct a concrete instance of `ManagementServerManagementUriArrayInput` via: +// +// ManagementServerManagementUriArray{ ManagementServerManagementUriArgs{...} } +type ManagementServerManagementUriArrayInput interface { + pulumi.Input + + ToManagementServerManagementUriArrayOutput() ManagementServerManagementUriArrayOutput + ToManagementServerManagementUriArrayOutputWithContext(context.Context) ManagementServerManagementUriArrayOutput +} + +type ManagementServerManagementUriArray []ManagementServerManagementUriInput + +func (ManagementServerManagementUriArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementServerManagementUri)(nil)).Elem() +} + +func (i ManagementServerManagementUriArray) ToManagementServerManagementUriArrayOutput() ManagementServerManagementUriArrayOutput { + return i.ToManagementServerManagementUriArrayOutputWithContext(context.Background()) +} + +func (i ManagementServerManagementUriArray) ToManagementServerManagementUriArrayOutputWithContext(ctx context.Context) ManagementServerManagementUriArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerManagementUriArrayOutput) +} + +type ManagementServerManagementUriOutput struct{ *pulumi.OutputState } + +func (ManagementServerManagementUriOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementServerManagementUri)(nil)).Elem() +} + +func (o ManagementServerManagementUriOutput) ToManagementServerManagementUriOutput() ManagementServerManagementUriOutput { + return o +} + +func (o ManagementServerManagementUriOutput) ToManagementServerManagementUriOutputWithContext(ctx context.Context) ManagementServerManagementUriOutput { + return o +} + +// (Output) +// The management console api endpoint. +func (o ManagementServerManagementUriOutput) Api() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementServerManagementUri) *string { return v.Api }).(pulumi.StringPtrOutput) +} + +// (Output) +// The management console webUi. +func (o ManagementServerManagementUriOutput) WebUi() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementServerManagementUri) *string { return v.WebUi }).(pulumi.StringPtrOutput) +} + +type ManagementServerManagementUriArrayOutput struct{ *pulumi.OutputState } + +func (ManagementServerManagementUriArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementServerManagementUri)(nil)).Elem() +} + +func (o ManagementServerManagementUriArrayOutput) ToManagementServerManagementUriArrayOutput() ManagementServerManagementUriArrayOutput { + return o +} + +func (o ManagementServerManagementUriArrayOutput) ToManagementServerManagementUriArrayOutputWithContext(ctx context.Context) ManagementServerManagementUriArrayOutput { + return o +} + +func (o ManagementServerManagementUriArrayOutput) Index(i pulumi.IntInput) ManagementServerManagementUriOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementServerManagementUri { + return vs[0].([]ManagementServerManagementUri)[vs[1].(int)] + }).(ManagementServerManagementUriOutput) +} + +type ManagementServerNetwork struct { + // Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + Network string `pulumi:"network"` + // Type of Network peeringMode + // Default value is `PRIVATE_SERVICE_ACCESS`. + // Possible values are: `PRIVATE_SERVICE_ACCESS`. + // + // *** + PeeringMode *string `pulumi:"peeringMode"` +} + +// ManagementServerNetworkInput is an input type that accepts ManagementServerNetworkArgs and ManagementServerNetworkOutput values. +// You can construct a concrete instance of `ManagementServerNetworkInput` via: +// +// ManagementServerNetworkArgs{...} +type ManagementServerNetworkInput interface { + pulumi.Input + + ToManagementServerNetworkOutput() ManagementServerNetworkOutput + ToManagementServerNetworkOutputWithContext(context.Context) ManagementServerNetworkOutput +} + +type ManagementServerNetworkArgs struct { + // Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + Network pulumi.StringInput `pulumi:"network"` + // Type of Network peeringMode + // Default value is `PRIVATE_SERVICE_ACCESS`. + // Possible values are: `PRIVATE_SERVICE_ACCESS`. + // + // *** + PeeringMode pulumi.StringPtrInput `pulumi:"peeringMode"` +} + +func (ManagementServerNetworkArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementServerNetwork)(nil)).Elem() +} + +func (i ManagementServerNetworkArgs) ToManagementServerNetworkOutput() ManagementServerNetworkOutput { + return i.ToManagementServerNetworkOutputWithContext(context.Background()) +} + +func (i ManagementServerNetworkArgs) ToManagementServerNetworkOutputWithContext(ctx context.Context) ManagementServerNetworkOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerNetworkOutput) +} + +// ManagementServerNetworkArrayInput is an input type that accepts ManagementServerNetworkArray and ManagementServerNetworkArrayOutput values. +// You can construct a concrete instance of `ManagementServerNetworkArrayInput` via: +// +// ManagementServerNetworkArray{ ManagementServerNetworkArgs{...} } +type ManagementServerNetworkArrayInput interface { + pulumi.Input + + ToManagementServerNetworkArrayOutput() ManagementServerNetworkArrayOutput + ToManagementServerNetworkArrayOutputWithContext(context.Context) ManagementServerNetworkArrayOutput +} + +type ManagementServerNetworkArray []ManagementServerNetworkInput + +func (ManagementServerNetworkArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementServerNetwork)(nil)).Elem() +} + +func (i ManagementServerNetworkArray) ToManagementServerNetworkArrayOutput() ManagementServerNetworkArrayOutput { + return i.ToManagementServerNetworkArrayOutputWithContext(context.Background()) +} + +func (i ManagementServerNetworkArray) ToManagementServerNetworkArrayOutputWithContext(ctx context.Context) ManagementServerNetworkArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ManagementServerNetworkArrayOutput) +} + +type ManagementServerNetworkOutput struct{ *pulumi.OutputState } + +func (ManagementServerNetworkOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagementServerNetwork)(nil)).Elem() +} + +func (o ManagementServerNetworkOutput) ToManagementServerNetworkOutput() ManagementServerNetworkOutput { + return o +} + +func (o ManagementServerNetworkOutput) ToManagementServerNetworkOutputWithContext(ctx context.Context) ManagementServerNetworkOutput { + return o +} + +// Network with format `projects/{{project_id}}/global/networks/{{network_id}}` +func (o ManagementServerNetworkOutput) Network() pulumi.StringOutput { + return o.ApplyT(func(v ManagementServerNetwork) string { return v.Network }).(pulumi.StringOutput) +} + +// Type of Network peeringMode +// Default value is `PRIVATE_SERVICE_ACCESS`. +// Possible values are: `PRIVATE_SERVICE_ACCESS`. +// +// *** +func (o ManagementServerNetworkOutput) PeeringMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v ManagementServerNetwork) *string { return v.PeeringMode }).(pulumi.StringPtrOutput) +} + +type ManagementServerNetworkArrayOutput struct{ *pulumi.OutputState } + +func (ManagementServerNetworkArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ManagementServerNetwork)(nil)).Elem() +} + +func (o ManagementServerNetworkArrayOutput) ToManagementServerNetworkArrayOutput() ManagementServerNetworkArrayOutput { + return o +} + +func (o ManagementServerNetworkArrayOutput) ToManagementServerNetworkArrayOutputWithContext(ctx context.Context) ManagementServerNetworkArrayOutput { + return o +} + +func (o ManagementServerNetworkArrayOutput) Index(i pulumi.IntInput) ManagementServerNetworkOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ManagementServerNetwork { + return vs[0].([]ManagementServerNetwork)[vs[1].(int)] + }).(ManagementServerNetworkOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerManagementUriInput)(nil)).Elem(), ManagementServerManagementUriArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerManagementUriArrayInput)(nil)).Elem(), ManagementServerManagementUriArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerNetworkInput)(nil)).Elem(), ManagementServerNetworkArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ManagementServerNetworkArrayInput)(nil)).Elem(), ManagementServerNetworkArray{}) + pulumi.RegisterOutputType(ManagementServerManagementUriOutput{}) + pulumi.RegisterOutputType(ManagementServerManagementUriArrayOutput{}) + pulumi.RegisterOutputType(ManagementServerNetworkOutput{}) + pulumi.RegisterOutputType(ManagementServerNetworkArrayOutput{}) +} diff --git a/sdk/go/gcp/bigquery/job.go b/sdk/go/gcp/bigquery/job.go index 7cd424693f..5caf544988 100644 --- a/sdk/go/gcp/bigquery/job.go +++ b/sdk/go/gcp/bigquery/job.go @@ -226,7 +226,7 @@ import ( // return err // } // testBucketObject, err := storage.NewBucketObject(ctx, "testBucketObject", &storage.BucketObjectArgs{ -// Source: pulumi.NewFileAsset("./test-fixtures/bigquerytable/test.parquet.gzip"), +// Source: pulumi.NewFileAsset("./test-fixtures/test.parquet.gzip"), // Bucket: testBucket.Name, // }) // if err != nil { diff --git a/sdk/go/gcp/certificatemanager/certificate.go b/sdk/go/gcp/certificatemanager/certificate.go index c4333700cb..b19edfb9c2 100644 --- a/sdk/go/gcp/certificatemanager/certificate.go +++ b/sdk/go/gcp/certificatemanager/certificate.go @@ -93,7 +93,7 @@ import ( // caAuthority, err := certificateauthority.NewAuthority(ctx, "caAuthority", &certificateauthority.AuthorityArgs{ // Location: pulumi.String("us-central1"), // Pool: pool.Name, -// CertificateAuthorityId: pulumi.String("my-ca"), +// CertificateAuthorityId: pulumi.String("ca-authority"), // Config: &certificateauthority.AuthorityConfigArgs{ // SubjectConfig: &certificateauthority.AuthorityConfigSubjectConfigArgs{ // Subject: &certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{ @@ -243,8 +243,8 @@ import ( // Description: pulumi.String("Regional cert"), // Location: pulumi.String("us-central1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: readFileOrPanic("test-fixtures/certificatemanager/cert.pem"), -// PemPrivateKey: readFileOrPanic("test-fixtures/certificatemanager/private-key.pem"), +// PemCertificate: readFileOrPanic("test-fixtures/cert.pem"), +// PemPrivateKey: readFileOrPanic("test-fixtures/private-key.pem"), // }, // }) // if err != nil { @@ -305,7 +305,8 @@ type Certificate struct { // If unsure, choose this option. // EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, // served from non-core Google data centers. - // Currently allowed only for managed certificates. + // ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + // see https://cloud.google.com/compute/docs/regions-zones Scope pulumi.StringPtrOutput `pulumi:"scope"` // Certificate data for a SelfManaged Certificate. // SelfManaged Certificates are uploaded by the user. Updating such @@ -369,7 +370,8 @@ type certificateState struct { // If unsure, choose this option. // EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, // served from non-core Google data centers. - // Currently allowed only for managed certificates. + // ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + // see https://cloud.google.com/compute/docs/regions-zones Scope *string `pulumi:"scope"` // Certificate data for a SelfManaged Certificate. // SelfManaged Certificates are uploaded by the user. Updating such @@ -404,7 +406,8 @@ type CertificateState struct { // If unsure, choose this option. // EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, // served from non-core Google data centers. - // Currently allowed only for managed certificates. + // ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + // see https://cloud.google.com/compute/docs/regions-zones Scope pulumi.StringPtrInput // Certificate data for a SelfManaged Certificate. // SelfManaged Certificates are uploaded by the user. Updating such @@ -443,7 +446,8 @@ type certificateArgs struct { // If unsure, choose this option. // EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, // served from non-core Google data centers. - // Currently allowed only for managed certificates. + // ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + // see https://cloud.google.com/compute/docs/regions-zones Scope *string `pulumi:"scope"` // Certificate data for a SelfManaged Certificate. // SelfManaged Certificates are uploaded by the user. Updating such @@ -479,7 +483,8 @@ type CertificateArgs struct { // If unsure, choose this option. // EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, // served from non-core Google data centers. - // Currently allowed only for managed certificates. + // ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + // see https://cloud.google.com/compute/docs/regions-zones Scope pulumi.StringPtrInput // Certificate data for a SelfManaged Certificate. // SelfManaged Certificates are uploaded by the user. Updating such @@ -618,7 +623,8 @@ func (o CertificateOutput) Project() pulumi.StringOutput { // If unsure, choose this option. // EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, // served from non-core Google data centers. -// Currently allowed only for managed certificates. +// ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). +// see https://cloud.google.com/compute/docs/regions-zones func (o CertificateOutput) Scope() pulumi.StringPtrOutput { return o.ApplyT(func(v *Certificate) pulumi.StringPtrOutput { return v.Scope }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/certificatemanager/certificateIssuanceConfig.go b/sdk/go/gcp/certificatemanager/certificateIssuanceConfig.go index d080bd5767..d58df68d20 100644 --- a/sdk/go/gcp/certificatemanager/certificateIssuanceConfig.go +++ b/sdk/go/gcp/certificatemanager/certificateIssuanceConfig.go @@ -46,7 +46,7 @@ import ( // caAuthority, err := certificateauthority.NewAuthority(ctx, "caAuthority", &certificateauthority.AuthorityArgs{ // Location: pulumi.String("us-central1"), // Pool: pool.Name, -// CertificateAuthorityId: pulumi.String("my-ca"), +// CertificateAuthorityId: pulumi.String("ca-authority"), // Config: &certificateauthority.AuthorityConfigArgs{ // SubjectConfig: &certificateauthority.AuthorityConfigSubjectConfigArgs{ // Subject: &certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{ diff --git a/sdk/go/gcp/cloudbuild/pulumiTypes.go b/sdk/go/gcp/cloudbuild/pulumiTypes.go index cd73da5de4..33487f9cb8 100644 --- a/sdk/go/gcp/cloudbuild/pulumiTypes.go +++ b/sdk/go/gcp/cloudbuild/pulumiTypes.go @@ -4025,6 +4025,9 @@ func (o TriggerBuildStepVolumeArrayOutput) Index(i pulumi.IntInput) TriggerBuild } type TriggerGitFileSource struct { + // The full resource name of the bitbucket server config. + // Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + BitbucketServerConfig *string `pulumi:"bitbucketServerConfig"` // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. GithubEnterpriseConfig *string `pulumi:"githubEnterpriseConfig"` @@ -4058,6 +4061,9 @@ type TriggerGitFileSourceInput interface { } type TriggerGitFileSourceArgs struct { + // The full resource name of the bitbucket server config. + // Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + BitbucketServerConfig pulumi.StringPtrInput `pulumi:"bitbucketServerConfig"` // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. GithubEnterpriseConfig pulumi.StringPtrInput `pulumi:"githubEnterpriseConfig"` @@ -4156,6 +4162,12 @@ func (o TriggerGitFileSourceOutput) ToTriggerGitFileSourcePtrOutputWithContext(c }).(TriggerGitFileSourcePtrOutput) } +// The full resource name of the bitbucket server config. +// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. +func (o TriggerGitFileSourceOutput) BitbucketServerConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v TriggerGitFileSource) *string { return v.BitbucketServerConfig }).(pulumi.StringPtrOutput) +} + // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. func (o TriggerGitFileSourceOutput) GithubEnterpriseConfig() pulumi.StringPtrOutput { @@ -4217,6 +4229,17 @@ func (o TriggerGitFileSourcePtrOutput) Elem() TriggerGitFileSourceOutput { }).(TriggerGitFileSourceOutput) } +// The full resource name of the bitbucket server config. +// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. +func (o TriggerGitFileSourcePtrOutput) BitbucketServerConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TriggerGitFileSource) *string { + if v == nil { + return nil + } + return v.BitbucketServerConfig + }).(pulumi.StringPtrOutput) +} + // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. func (o TriggerGitFileSourcePtrOutput) GithubEnterpriseConfig() pulumi.StringPtrOutput { @@ -5623,6 +5646,9 @@ func (o TriggerRepositoryEventConfigPushPtrOutput) Tag() pulumi.StringPtrOutput } type TriggerSourceToBuild struct { + // The full resource name of the bitbucket server config. + // Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + BitbucketServerConfig *string `pulumi:"bitbucketServerConfig"` // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. GithubEnterpriseConfig *string `pulumi:"githubEnterpriseConfig"` @@ -5651,6 +5677,9 @@ type TriggerSourceToBuildInput interface { } type TriggerSourceToBuildArgs struct { + // The full resource name of the bitbucket server config. + // Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + BitbucketServerConfig pulumi.StringPtrInput `pulumi:"bitbucketServerConfig"` // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. GithubEnterpriseConfig pulumi.StringPtrInput `pulumi:"githubEnterpriseConfig"` @@ -5744,6 +5773,12 @@ func (o TriggerSourceToBuildOutput) ToTriggerSourceToBuildPtrOutputWithContext(c }).(TriggerSourceToBuildPtrOutput) } +// The full resource name of the bitbucket server config. +// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. +func (o TriggerSourceToBuildOutput) BitbucketServerConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v TriggerSourceToBuild) *string { return v.BitbucketServerConfig }).(pulumi.StringPtrOutput) +} + // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. func (o TriggerSourceToBuildOutput) GithubEnterpriseConfig() pulumi.StringPtrOutput { @@ -5797,6 +5832,17 @@ func (o TriggerSourceToBuildPtrOutput) Elem() TriggerSourceToBuildOutput { }).(TriggerSourceToBuildOutput) } +// The full resource name of the bitbucket server config. +// Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. +func (o TriggerSourceToBuildPtrOutput) BitbucketServerConfig() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TriggerSourceToBuild) *string { + if v == nil { + return nil + } + return v.BitbucketServerConfig + }).(pulumi.StringPtrOutput) +} + // The full resource name of the github enterprise config. // Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. func (o TriggerSourceToBuildPtrOutput) GithubEnterpriseConfig() pulumi.StringPtrOutput { @@ -8695,6 +8741,7 @@ func (o GetTriggerBuildStepVolumeArrayOutput) Index(i pulumi.IntInput) GetTrigge } type GetTriggerGitFileSource struct { + BitbucketServerConfig string `pulumi:"bitbucketServerConfig"` GithubEnterpriseConfig string `pulumi:"githubEnterpriseConfig"` Path string `pulumi:"path"` RepoType string `pulumi:"repoType"` @@ -8715,6 +8762,7 @@ type GetTriggerGitFileSourceInput interface { } type GetTriggerGitFileSourceArgs struct { + BitbucketServerConfig pulumi.StringInput `pulumi:"bitbucketServerConfig"` GithubEnterpriseConfig pulumi.StringInput `pulumi:"githubEnterpriseConfig"` Path pulumi.StringInput `pulumi:"path"` RepoType pulumi.StringInput `pulumi:"repoType"` @@ -8774,6 +8822,10 @@ func (o GetTriggerGitFileSourceOutput) ToGetTriggerGitFileSourceOutputWithContex return o } +func (o GetTriggerGitFileSourceOutput) BitbucketServerConfig() pulumi.StringOutput { + return o.ApplyT(func(v GetTriggerGitFileSource) string { return v.BitbucketServerConfig }).(pulumi.StringOutput) +} + func (o GetTriggerGitFileSourceOutput) GithubEnterpriseConfig() pulumi.StringOutput { return o.ApplyT(func(v GetTriggerGitFileSource) string { return v.GithubEnterpriseConfig }).(pulumi.StringOutput) } @@ -9581,6 +9633,7 @@ func (o GetTriggerRepositoryEventConfigPushArrayOutput) Index(i pulumi.IntInput) } type GetTriggerSourceToBuild struct { + BitbucketServerConfig string `pulumi:"bitbucketServerConfig"` GithubEnterpriseConfig string `pulumi:"githubEnterpriseConfig"` Ref string `pulumi:"ref"` RepoType string `pulumi:"repoType"` @@ -9600,6 +9653,7 @@ type GetTriggerSourceToBuildInput interface { } type GetTriggerSourceToBuildArgs struct { + BitbucketServerConfig pulumi.StringInput `pulumi:"bitbucketServerConfig"` GithubEnterpriseConfig pulumi.StringInput `pulumi:"githubEnterpriseConfig"` Ref pulumi.StringInput `pulumi:"ref"` RepoType pulumi.StringInput `pulumi:"repoType"` @@ -9658,6 +9712,10 @@ func (o GetTriggerSourceToBuildOutput) ToGetTriggerSourceToBuildOutputWithContex return o } +func (o GetTriggerSourceToBuildOutput) BitbucketServerConfig() pulumi.StringOutput { + return o.ApplyT(func(v GetTriggerSourceToBuild) string { return v.BitbucketServerConfig }).(pulumi.StringOutput) +} + func (o GetTriggerSourceToBuildOutput) GithubEnterpriseConfig() pulumi.StringOutput { return o.ApplyT(func(v GetTriggerSourceToBuild) string { return v.GithubEnterpriseConfig }).(pulumi.StringOutput) } diff --git a/sdk/go/gcp/cloudbuild/trigger.go b/sdk/go/gcp/cloudbuild/trigger.go index 28b39810b6..72f07678d3 100644 --- a/sdk/go/gcp/cloudbuild/trigger.go +++ b/sdk/go/gcp/cloudbuild/trigger.go @@ -372,6 +372,43 @@ import ( // } // // ``` +// ### Cloudbuild Trigger Manual Bitbucket Server +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/cloudbuild" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudbuild.NewTrigger(ctx, "manual-bitbucket-trigger", &cloudbuild.TriggerArgs{ +// GitFileSource: &cloudbuild.TriggerGitFileSourceArgs{ +// BitbucketServerConfig: pulumi.String("projects/myProject/locations/global/bitbucketServerConfigs/configID"), +// Path: pulumi.String("cloudbuild.yaml"), +// RepoType: pulumi.String("BITBUCKET_SERVER"), +// Revision: pulumi.String("refs/heads/main"), +// Uri: pulumi.String("https://bbs.com/scm/stag/test-repo.git"), +// }, +// SourceToBuild: &cloudbuild.TriggerSourceToBuildArgs{ +// BitbucketServerConfig: pulumi.String("projects/myProject/locations/global/bitbucketServerConfigs/configID"), +// Ref: pulumi.String("refs/heads/main"), +// RepoType: pulumi.String("BITBUCKET_SERVER"), +// Uri: pulumi.String("https://bbs.com/scm/stag/test-repo.git"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // ### Cloudbuild Trigger Repo // // ```go diff --git a/sdk/go/gcp/cloudrunv2/job.go b/sdk/go/gcp/cloudrunv2/job.go index ad20de64d8..88f705404b 100644 --- a/sdk/go/gcp/cloudrunv2/job.go +++ b/sdk/go/gcp/cloudrunv2/job.go @@ -421,10 +421,20 @@ type Job struct { // The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run. // Structure is documented below. Conditions JobConditionArrayOutput `pulumi:"conditions"` + // (Output) + // Creation timestamp of the execution. + // A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // Email address of the authenticated creator. + Creator pulumi.StringOutput `pulumi:"creator"` + // The deletion time. + DeleteTime pulumi.StringOutput `pulumi:"deleteTime"` // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. Etag pulumi.StringOutput `pulumi:"etag"` // Number of executions created for this job. ExecutionCount pulumi.IntOutput `pulumi:"executionCount"` + // For a deleted resource, the time after which it will be permamently deleted. + ExpireTime pulumi.StringOutput `pulumi:"expireTime"` // A number that monotonically increases every time the user modifies the desired state. Generation pulumi.StringOutput `pulumi:"generation"` // Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, @@ -439,6 +449,8 @@ type Job struct { // Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. // All system labels in v1 now have a corresponding field in v2 Job. Labels pulumi.StringMapOutput `pulumi:"labels"` + // Email address of the last authenticated modifier. + LastModifier pulumi.StringOutput `pulumi:"lastModifier"` // Name of the last created execution. // Structure is documented below. LatestCreatedExecutions JobLatestCreatedExecutionArrayOutput `pulumi:"latestCreatedExecutions"` @@ -469,6 +481,8 @@ type Job struct { TerminalConditions JobTerminalConditionArrayOutput `pulumi:"terminalConditions"` // Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. Uid pulumi.StringOutput `pulumi:"uid"` + // The last-modified time. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` } // NewJob registers a new resource with the given unique name, arguments, and options. @@ -525,10 +539,20 @@ type jobState struct { // The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run. // Structure is documented below. Conditions []JobCondition `pulumi:"conditions"` + // (Output) + // Creation timestamp of the execution. + // A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + CreateTime *string `pulumi:"createTime"` + // Email address of the authenticated creator. + Creator *string `pulumi:"creator"` + // The deletion time. + DeleteTime *string `pulumi:"deleteTime"` // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. Etag *string `pulumi:"etag"` // Number of executions created for this job. ExecutionCount *int `pulumi:"executionCount"` + // For a deleted resource, the time after which it will be permamently deleted. + ExpireTime *string `pulumi:"expireTime"` // A number that monotonically increases every time the user modifies the desired state. Generation *string `pulumi:"generation"` // Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, @@ -543,6 +567,8 @@ type jobState struct { // Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. // All system labels in v1 now have a corresponding field in v2 Job. Labels map[string]string `pulumi:"labels"` + // Email address of the last authenticated modifier. + LastModifier *string `pulumi:"lastModifier"` // Name of the last created execution. // Structure is documented below. LatestCreatedExecutions []JobLatestCreatedExecution `pulumi:"latestCreatedExecutions"` @@ -573,6 +599,8 @@ type jobState struct { TerminalConditions []JobTerminalCondition `pulumi:"terminalConditions"` // Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. Uid *string `pulumi:"uid"` + // The last-modified time. + UpdateTime *string `pulumi:"updateTime"` } type JobState struct { @@ -597,10 +625,20 @@ type JobState struct { // The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run. // Structure is documented below. Conditions JobConditionArrayInput + // (Output) + // Creation timestamp of the execution. + // A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + CreateTime pulumi.StringPtrInput + // Email address of the authenticated creator. + Creator pulumi.StringPtrInput + // The deletion time. + DeleteTime pulumi.StringPtrInput // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. Etag pulumi.StringPtrInput // Number of executions created for this job. ExecutionCount pulumi.IntPtrInput + // For a deleted resource, the time after which it will be permamently deleted. + ExpireTime pulumi.StringPtrInput // A number that monotonically increases every time the user modifies the desired state. Generation pulumi.StringPtrInput // Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, @@ -615,6 +653,8 @@ type JobState struct { // Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. // All system labels in v1 now have a corresponding field in v2 Job. Labels pulumi.StringMapInput + // Email address of the last authenticated modifier. + LastModifier pulumi.StringPtrInput // Name of the last created execution. // Structure is documented below. LatestCreatedExecutions JobLatestCreatedExecutionArrayInput @@ -645,6 +685,8 @@ type JobState struct { TerminalConditions JobTerminalConditionArrayInput // Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. Uid pulumi.StringPtrInput + // The last-modified time. + UpdateTime pulumi.StringPtrInput } func (JobState) ElementType() reflect.Type { @@ -871,6 +913,23 @@ func (o JobOutput) Conditions() JobConditionArrayOutput { return o.ApplyT(func(v *Job) JobConditionArrayOutput { return v.Conditions }).(JobConditionArrayOutput) } +// (Output) +// Creation timestamp of the execution. +// A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". +func (o JobOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// Email address of the authenticated creator. +func (o JobOutput) Creator() pulumi.StringOutput { + return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.Creator }).(pulumi.StringOutput) +} + +// The deletion time. +func (o JobOutput) DeleteTime() pulumi.StringOutput { + return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.DeleteTime }).(pulumi.StringOutput) +} + // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. func (o JobOutput) Etag() pulumi.StringOutput { return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) @@ -881,6 +940,11 @@ func (o JobOutput) ExecutionCount() pulumi.IntOutput { return o.ApplyT(func(v *Job) pulumi.IntOutput { return v.ExecutionCount }).(pulumi.IntOutput) } +// For a deleted resource, the time after which it will be permamently deleted. +func (o JobOutput) ExpireTime() pulumi.StringOutput { + return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.ExpireTime }).(pulumi.StringOutput) +} + // A number that monotonically increases every time the user modifies the desired state. func (o JobOutput) Generation() pulumi.StringOutput { return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.Generation }).(pulumi.StringOutput) @@ -901,6 +965,11 @@ func (o JobOutput) Labels() pulumi.StringMapOutput { return o.ApplyT(func(v *Job) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) } +// Email address of the last authenticated modifier. +func (o JobOutput) LastModifier() pulumi.StringOutput { + return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.LastModifier }).(pulumi.StringOutput) +} + // Name of the last created execution. // Structure is documented below. func (o JobOutput) LatestCreatedExecutions() JobLatestCreatedExecutionArrayOutput { @@ -961,6 +1030,11 @@ func (o JobOutput) Uid() pulumi.StringOutput { return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.Uid }).(pulumi.StringOutput) } +// The last-modified time. +func (o JobOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Job) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + type JobArrayOutput struct{ *pulumi.OutputState } func (JobArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/gcp/cloudrunv2/service.go b/sdk/go/gcp/cloudrunv2/service.go index e5c617363a..73ac40abc6 100644 --- a/sdk/go/gcp/cloudrunv2/service.go +++ b/sdk/go/gcp/cloudrunv2/service.go @@ -484,14 +484,22 @@ type Service struct { // The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run. // Structure is documented below. Conditions ServiceConditionArrayOutput `pulumi:"conditions"` + // The creation time. + CreateTime pulumi.StringOutput `pulumi:"createTime"` + // Email address of the authenticated creator. + Creator pulumi.StringOutput `pulumi:"creator"` // One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a // string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see // https://cloud.google.com/run/docs/configuring/custom-audiences. CustomAudiences pulumi.StringArrayOutput `pulumi:"customAudiences"` + // The deletion time. + DeleteTime pulumi.StringOutput `pulumi:"deleteTime"` // User-provided description of the Service. This field currently has a 512-character limit. Description pulumi.StringPtrOutput `pulumi:"description"` // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. Etag pulumi.StringOutput `pulumi:"etag"` + // For a deleted resource, the time after which it will be permamently deleted. + ExpireTime pulumi.StringOutput `pulumi:"expireTime"` // A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. Generation pulumi.StringOutput `pulumi:"generation"` // Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. @@ -508,6 +516,8 @@ type Service struct { // Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. // All system labels in v1 now have a corresponding field in v2 Service. Labels pulumi.StringMapOutput `pulumi:"labels"` + // Email address of the last authenticated modifier. + LastModifier pulumi.StringOutput `pulumi:"lastModifier"` // Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. LatestCreatedRevision pulumi.StringOutput `pulumi:"latestCreatedRevision"` // Name of the latest revision that is serving traffic. See comments in reconciling for additional information on reconciliation process in Cloud Run. @@ -545,6 +555,8 @@ type Service struct { Traffics ServiceTrafficArrayOutput `pulumi:"traffics"` // Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. Uid pulumi.StringOutput `pulumi:"uid"` + // The last-modified time. + UpdateTime pulumi.StringOutput `pulumi:"updateTime"` // (Output) // Displays the target URI. Uri pulumi.StringOutput `pulumi:"uri"` @@ -604,14 +616,22 @@ type serviceState struct { // The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run. // Structure is documented below. Conditions []ServiceCondition `pulumi:"conditions"` + // The creation time. + CreateTime *string `pulumi:"createTime"` + // Email address of the authenticated creator. + Creator *string `pulumi:"creator"` // One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a // string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see // https://cloud.google.com/run/docs/configuring/custom-audiences. CustomAudiences []string `pulumi:"customAudiences"` + // The deletion time. + DeleteTime *string `pulumi:"deleteTime"` // User-provided description of the Service. This field currently has a 512-character limit. Description *string `pulumi:"description"` // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. Etag *string `pulumi:"etag"` + // For a deleted resource, the time after which it will be permamently deleted. + ExpireTime *string `pulumi:"expireTime"` // A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. Generation *string `pulumi:"generation"` // Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. @@ -628,6 +648,8 @@ type serviceState struct { // Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. // All system labels in v1 now have a corresponding field in v2 Service. Labels map[string]string `pulumi:"labels"` + // Email address of the last authenticated modifier. + LastModifier *string `pulumi:"lastModifier"` // Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. LatestCreatedRevision *string `pulumi:"latestCreatedRevision"` // Name of the latest revision that is serving traffic. See comments in reconciling for additional information on reconciliation process in Cloud Run. @@ -665,6 +687,8 @@ type serviceState struct { Traffics []ServiceTraffic `pulumi:"traffics"` // Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. Uid *string `pulumi:"uid"` + // The last-modified time. + UpdateTime *string `pulumi:"updateTime"` // (Output) // Displays the target URI. Uri *string `pulumi:"uri"` @@ -692,14 +716,22 @@ type ServiceState struct { // The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run. // Structure is documented below. Conditions ServiceConditionArrayInput + // The creation time. + CreateTime pulumi.StringPtrInput + // Email address of the authenticated creator. + Creator pulumi.StringPtrInput // One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a // string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see // https://cloud.google.com/run/docs/configuring/custom-audiences. CustomAudiences pulumi.StringArrayInput + // The deletion time. + DeleteTime pulumi.StringPtrInput // User-provided description of the Service. This field currently has a 512-character limit. Description pulumi.StringPtrInput // A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. Etag pulumi.StringPtrInput + // For a deleted resource, the time after which it will be permamently deleted. + ExpireTime pulumi.StringPtrInput // A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. Generation pulumi.StringPtrInput // Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. @@ -716,6 +748,8 @@ type ServiceState struct { // Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. // All system labels in v1 now have a corresponding field in v2 Service. Labels pulumi.StringMapInput + // Email address of the last authenticated modifier. + LastModifier pulumi.StringPtrInput // Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. LatestCreatedRevision pulumi.StringPtrInput // Name of the latest revision that is serving traffic. See comments in reconciling for additional information on reconciliation process in Cloud Run. @@ -753,6 +787,8 @@ type ServiceState struct { Traffics ServiceTrafficArrayInput // Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. Uid pulumi.StringPtrInput + // The last-modified time. + UpdateTime pulumi.StringPtrInput // (Output) // Displays the target URI. Uri pulumi.StringPtrInput @@ -1004,6 +1040,16 @@ func (o ServiceOutput) Conditions() ServiceConditionArrayOutput { return o.ApplyT(func(v *Service) ServiceConditionArrayOutput { return v.Conditions }).(ServiceConditionArrayOutput) } +// The creation time. +func (o ServiceOutput) CreateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.CreateTime }).(pulumi.StringOutput) +} + +// Email address of the authenticated creator. +func (o ServiceOutput) Creator() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Creator }).(pulumi.StringOutput) +} + // One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a // string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see // https://cloud.google.com/run/docs/configuring/custom-audiences. @@ -1011,6 +1057,11 @@ func (o ServiceOutput) CustomAudiences() pulumi.StringArrayOutput { return o.ApplyT(func(v *Service) pulumi.StringArrayOutput { return v.CustomAudiences }).(pulumi.StringArrayOutput) } +// The deletion time. +func (o ServiceOutput) DeleteTime() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.DeleteTime }).(pulumi.StringOutput) +} + // User-provided description of the Service. This field currently has a 512-character limit. func (o ServiceOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *Service) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) @@ -1021,6 +1072,11 @@ func (o ServiceOutput) Etag() pulumi.StringOutput { return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) } +// For a deleted resource, the time after which it will be permamently deleted. +func (o ServiceOutput) ExpireTime() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.ExpireTime }).(pulumi.StringOutput) +} + // A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. func (o ServiceOutput) Generation() pulumi.StringOutput { return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Generation }).(pulumi.StringOutput) @@ -1046,6 +1102,11 @@ func (o ServiceOutput) Labels() pulumi.StringMapOutput { return o.ApplyT(func(v *Service) pulumi.StringMapOutput { return v.Labels }).(pulumi.StringMapOutput) } +// Email address of the last authenticated modifier. +func (o ServiceOutput) LastModifier() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.LastModifier }).(pulumi.StringOutput) +} + // Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. func (o ServiceOutput) LatestCreatedRevision() pulumi.StringOutput { return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.LatestCreatedRevision }).(pulumi.StringOutput) @@ -1122,6 +1183,11 @@ func (o ServiceOutput) Uid() pulumi.StringOutput { return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Uid }).(pulumi.StringOutput) } +// The last-modified time. +func (o ServiceOutput) UpdateTime() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.UpdateTime }).(pulumi.StringOutput) +} + // (Output) // Displays the target URI. func (o ServiceOutput) Uri() pulumi.StringOutput { diff --git a/sdk/go/gcp/composer/pulumiTypes.go b/sdk/go/gcp/composer/pulumiTypes.go index 28cdec770d..f5f8016db4 100644 --- a/sdk/go/gcp/composer/pulumiTypes.go +++ b/sdk/go/gcp/composer/pulumiTypes.go @@ -1553,6 +1553,7 @@ type EnvironmentConfigPrivateEnvironmentConfig struct { CloudComposerConnectionSubnetwork *string `pulumi:"cloudComposerConnectionSubnetwork"` CloudComposerNetworkIpv4CidrBlock *string `pulumi:"cloudComposerNetworkIpv4CidrBlock"` CloudSqlIpv4CidrBlock *string `pulumi:"cloudSqlIpv4CidrBlock"` + ConnectionType *string `pulumi:"connectionType"` EnablePrivateEndpoint *bool `pulumi:"enablePrivateEndpoint"` EnablePrivatelyUsedPublicIps *bool `pulumi:"enablePrivatelyUsedPublicIps"` MasterIpv4CidrBlock *string `pulumi:"masterIpv4CidrBlock"` @@ -1574,6 +1575,7 @@ type EnvironmentConfigPrivateEnvironmentConfigArgs struct { CloudComposerConnectionSubnetwork pulumi.StringPtrInput `pulumi:"cloudComposerConnectionSubnetwork"` CloudComposerNetworkIpv4CidrBlock pulumi.StringPtrInput `pulumi:"cloudComposerNetworkIpv4CidrBlock"` CloudSqlIpv4CidrBlock pulumi.StringPtrInput `pulumi:"cloudSqlIpv4CidrBlock"` + ConnectionType pulumi.StringPtrInput `pulumi:"connectionType"` EnablePrivateEndpoint pulumi.BoolPtrInput `pulumi:"enablePrivateEndpoint"` EnablePrivatelyUsedPublicIps pulumi.BoolPtrInput `pulumi:"enablePrivatelyUsedPublicIps"` MasterIpv4CidrBlock pulumi.StringPtrInput `pulumi:"masterIpv4CidrBlock"` @@ -1669,6 +1671,10 @@ func (o EnvironmentConfigPrivateEnvironmentConfigOutput) CloudSqlIpv4CidrBlock() return o.ApplyT(func(v EnvironmentConfigPrivateEnvironmentConfig) *string { return v.CloudSqlIpv4CidrBlock }).(pulumi.StringPtrOutput) } +func (o EnvironmentConfigPrivateEnvironmentConfigOutput) ConnectionType() pulumi.StringPtrOutput { + return o.ApplyT(func(v EnvironmentConfigPrivateEnvironmentConfig) *string { return v.ConnectionType }).(pulumi.StringPtrOutput) +} + func (o EnvironmentConfigPrivateEnvironmentConfigOutput) EnablePrivateEndpoint() pulumi.BoolPtrOutput { return o.ApplyT(func(v EnvironmentConfigPrivateEnvironmentConfig) *bool { return v.EnablePrivateEndpoint }).(pulumi.BoolPtrOutput) } @@ -1736,6 +1742,15 @@ func (o EnvironmentConfigPrivateEnvironmentConfigPtrOutput) CloudSqlIpv4CidrBloc }).(pulumi.StringPtrOutput) } +func (o EnvironmentConfigPrivateEnvironmentConfigPtrOutput) ConnectionType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EnvironmentConfigPrivateEnvironmentConfig) *string { + if v == nil { + return nil + } + return v.ConnectionType + }).(pulumi.StringPtrOutput) +} + func (o EnvironmentConfigPrivateEnvironmentConfigPtrOutput) EnablePrivateEndpoint() pulumi.BoolPtrOutput { return o.ApplyT(func(v *EnvironmentConfigPrivateEnvironmentConfig) *bool { if v == nil { @@ -4664,6 +4679,7 @@ type GetEnvironmentConfigPrivateEnvironmentConfig struct { CloudComposerConnectionSubnetwork string `pulumi:"cloudComposerConnectionSubnetwork"` CloudComposerNetworkIpv4CidrBlock string `pulumi:"cloudComposerNetworkIpv4CidrBlock"` CloudSqlIpv4CidrBlock string `pulumi:"cloudSqlIpv4CidrBlock"` + ConnectionType string `pulumi:"connectionType"` EnablePrivateEndpoint bool `pulumi:"enablePrivateEndpoint"` EnablePrivatelyUsedPublicIps bool `pulumi:"enablePrivatelyUsedPublicIps"` MasterIpv4CidrBlock string `pulumi:"masterIpv4CidrBlock"` @@ -4685,6 +4701,7 @@ type GetEnvironmentConfigPrivateEnvironmentConfigArgs struct { CloudComposerConnectionSubnetwork pulumi.StringInput `pulumi:"cloudComposerConnectionSubnetwork"` CloudComposerNetworkIpv4CidrBlock pulumi.StringInput `pulumi:"cloudComposerNetworkIpv4CidrBlock"` CloudSqlIpv4CidrBlock pulumi.StringInput `pulumi:"cloudSqlIpv4CidrBlock"` + ConnectionType pulumi.StringInput `pulumi:"connectionType"` EnablePrivateEndpoint pulumi.BoolInput `pulumi:"enablePrivateEndpoint"` EnablePrivatelyUsedPublicIps pulumi.BoolInput `pulumi:"enablePrivatelyUsedPublicIps"` MasterIpv4CidrBlock pulumi.StringInput `pulumi:"masterIpv4CidrBlock"` @@ -4758,6 +4775,10 @@ func (o GetEnvironmentConfigPrivateEnvironmentConfigOutput) CloudSqlIpv4CidrBloc return o.ApplyT(func(v GetEnvironmentConfigPrivateEnvironmentConfig) string { return v.CloudSqlIpv4CidrBlock }).(pulumi.StringOutput) } +func (o GetEnvironmentConfigPrivateEnvironmentConfigOutput) ConnectionType() pulumi.StringOutput { + return o.ApplyT(func(v GetEnvironmentConfigPrivateEnvironmentConfig) string { return v.ConnectionType }).(pulumi.StringOutput) +} + func (o GetEnvironmentConfigPrivateEnvironmentConfigOutput) EnablePrivateEndpoint() pulumi.BoolOutput { return o.ApplyT(func(v GetEnvironmentConfigPrivateEnvironmentConfig) bool { return v.EnablePrivateEndpoint }).(pulumi.BoolOutput) } diff --git a/sdk/go/gcp/compute/init.go b/sdk/go/gcp/compute/init.go index 835c2ad142..0500311f3f 100644 --- a/sdk/go/gcp/compute/init.go +++ b/sdk/go/gcp/compute/init.go @@ -217,6 +217,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &RegionPerInstanceConfig{} case "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": r = &RegionSecurityPolicy{} + case "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": + r = &RegionSecurityPolicyRule{} case "gcp:compute/regionSslCertificate:RegionSslCertificate": r = &RegionSslCertificate{} case "gcp:compute/regionSslPolicy:RegionSslPolicy": @@ -796,6 +798,11 @@ func init() { "compute/regionSecurityPolicy", &module{version}, ) + pulumi.RegisterResourceModule( + "gcp", + "compute/regionSecurityPolicyRule", + &module{version}, + ) pulumi.RegisterResourceModule( "gcp", "compute/regionSslCertificate", diff --git a/sdk/go/gcp/compute/networkEdgeSecurityService.go b/sdk/go/gcp/compute/networkEdgeSecurityService.go index 7560fbcab5..6fb934935f 100644 --- a/sdk/go/gcp/compute/networkEdgeSecurityService.go +++ b/sdk/go/gcp/compute/networkEdgeSecurityService.go @@ -27,7 +27,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := compute.NewNetworkEdgeSecurityService(ctx, "default", &compute.NetworkEdgeSecurityServiceArgs{ -// Region: pulumi.String("asia-southeast1"), +// Region: pulumi.String("us-east1"), // Description: pulumi.String("My basic resource"), // }, pulumi.Provider(google_beta)) // if err != nil { diff --git a/sdk/go/gcp/compute/pulumiTypes.go b/sdk/go/gcp/compute/pulumiTypes.go index abf4ef8fae..71c171d6cb 100644 --- a/sdk/go/gcp/compute/pulumiTypes.go +++ b/sdk/go/gcp/compute/pulumiTypes.go @@ -27940,7 +27940,8 @@ type InstanceTemplateDisk struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode *string `pulumi:"mode"` + Mode *string `pulumi:"mode"` + ProvisionedIops *int `pulumi:"provisionedIops"` // - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies *string `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -28028,7 +28029,8 @@ type InstanceTemplateDiskArgs struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode pulumi.StringPtrInput `pulumi:"mode"` + Mode pulumi.StringPtrInput `pulumi:"mode"` + ProvisionedIops pulumi.IntPtrInput `pulumi:"provisionedIops"` // - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies pulumi.StringPtrInput `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -28186,6 +28188,10 @@ func (o InstanceTemplateDiskOutput) Mode() pulumi.StringPtrOutput { return o.ApplyT(func(v InstanceTemplateDisk) *string { return v.Mode }).(pulumi.StringPtrOutput) } +func (o InstanceTemplateDiskOutput) ProvisionedIops() pulumi.IntPtrOutput { + return o.ApplyT(func(v InstanceTemplateDisk) *int { return v.ProvisionedIops }).(pulumi.IntPtrOutput) +} + // - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. func (o InstanceTemplateDiskOutput) ResourcePolicies() pulumi.StringPtrOutput { return o.ApplyT(func(v InstanceTemplateDisk) *string { return v.ResourcePolicies }).(pulumi.StringPtrOutput) @@ -48146,7 +48152,8 @@ type RegionInstanceTemplateDisk struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode *string `pulumi:"mode"` + Mode *string `pulumi:"mode"` + ProvisionedIops *int `pulumi:"provisionedIops"` // - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies *string `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -48234,7 +48241,8 @@ type RegionInstanceTemplateDiskArgs struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode pulumi.StringPtrInput `pulumi:"mode"` + Mode pulumi.StringPtrInput `pulumi:"mode"` + ProvisionedIops pulumi.IntPtrInput `pulumi:"provisionedIops"` // - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies pulumi.StringPtrInput `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -48394,6 +48402,10 @@ func (o RegionInstanceTemplateDiskOutput) Mode() pulumi.StringPtrOutput { return o.ApplyT(func(v RegionInstanceTemplateDisk) *string { return v.Mode }).(pulumi.StringPtrOutput) } +func (o RegionInstanceTemplateDiskOutput) ProvisionedIops() pulumi.IntPtrOutput { + return o.ApplyT(func(v RegionInstanceTemplateDisk) *int { return v.ProvisionedIops }).(pulumi.IntPtrOutput) +} + // - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. func (o RegionInstanceTemplateDiskOutput) ResourcePolicies() pulumi.StringPtrOutput { return o.ApplyT(func(v RegionInstanceTemplateDisk) *string { return v.ResourcePolicies }).(pulumi.StringPtrOutput) @@ -53828,6 +53840,851 @@ func (o RegionSecurityPolicyDdosProtectionConfigPtrOutput) DdosProtection() pulu }).(pulumi.StringPtrOutput) } +type RegionSecurityPolicyRuleMatch struct { + // The configuration options available when specifying versionedExpr. + // This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + // Structure is documented below. + Config *RegionSecurityPolicyRuleMatchConfig `pulumi:"config"` + // Preconfigured versioned expression. If this field is specified, config must also be specified. + // Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + // Possible values are: `SRC_IPS_V1`. + VersionedExpr *string `pulumi:"versionedExpr"` +} + +// RegionSecurityPolicyRuleMatchInput is an input type that accepts RegionSecurityPolicyRuleMatchArgs and RegionSecurityPolicyRuleMatchOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleMatchInput` via: +// +// RegionSecurityPolicyRuleMatchArgs{...} +type RegionSecurityPolicyRuleMatchInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleMatchOutput() RegionSecurityPolicyRuleMatchOutput + ToRegionSecurityPolicyRuleMatchOutputWithContext(context.Context) RegionSecurityPolicyRuleMatchOutput +} + +type RegionSecurityPolicyRuleMatchArgs struct { + // The configuration options available when specifying versionedExpr. + // This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + // Structure is documented below. + Config RegionSecurityPolicyRuleMatchConfigPtrInput `pulumi:"config"` + // Preconfigured versioned expression. If this field is specified, config must also be specified. + // Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + // Possible values are: `SRC_IPS_V1`. + VersionedExpr pulumi.StringPtrInput `pulumi:"versionedExpr"` +} + +func (RegionSecurityPolicyRuleMatchArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleMatch)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleMatchArgs) ToRegionSecurityPolicyRuleMatchOutput() RegionSecurityPolicyRuleMatchOutput { + return i.ToRegionSecurityPolicyRuleMatchOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleMatchArgs) ToRegionSecurityPolicyRuleMatchOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMatchOutput) +} + +func (i RegionSecurityPolicyRuleMatchArgs) ToRegionSecurityPolicyRuleMatchPtrOutput() RegionSecurityPolicyRuleMatchPtrOutput { + return i.ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleMatchArgs) ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMatchOutput).ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(ctx) +} + +// RegionSecurityPolicyRuleMatchPtrInput is an input type that accepts RegionSecurityPolicyRuleMatchArgs, RegionSecurityPolicyRuleMatchPtr and RegionSecurityPolicyRuleMatchPtrOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleMatchPtrInput` via: +// +// RegionSecurityPolicyRuleMatchArgs{...} +// +// or: +// +// nil +type RegionSecurityPolicyRuleMatchPtrInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleMatchPtrOutput() RegionSecurityPolicyRuleMatchPtrOutput + ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(context.Context) RegionSecurityPolicyRuleMatchPtrOutput +} + +type regionSecurityPolicyRuleMatchPtrType RegionSecurityPolicyRuleMatchArgs + +func RegionSecurityPolicyRuleMatchPtr(v *RegionSecurityPolicyRuleMatchArgs) RegionSecurityPolicyRuleMatchPtrInput { + return (*regionSecurityPolicyRuleMatchPtrType)(v) +} + +func (*regionSecurityPolicyRuleMatchPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRuleMatch)(nil)).Elem() +} + +func (i *regionSecurityPolicyRuleMatchPtrType) ToRegionSecurityPolicyRuleMatchPtrOutput() RegionSecurityPolicyRuleMatchPtrOutput { + return i.ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(context.Background()) +} + +func (i *regionSecurityPolicyRuleMatchPtrType) ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMatchPtrOutput) +} + +type RegionSecurityPolicyRuleMatchOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleMatchOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleMatch)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleMatchOutput) ToRegionSecurityPolicyRuleMatchOutput() RegionSecurityPolicyRuleMatchOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchOutput) ToRegionSecurityPolicyRuleMatchOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchOutput) ToRegionSecurityPolicyRuleMatchPtrOutput() RegionSecurityPolicyRuleMatchPtrOutput { + return o.ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(context.Background()) +} + +func (o RegionSecurityPolicyRuleMatchOutput) ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RegionSecurityPolicyRuleMatch) *RegionSecurityPolicyRuleMatch { + return &v + }).(RegionSecurityPolicyRuleMatchPtrOutput) +} + +// The configuration options available when specifying versionedExpr. +// This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. +// Structure is documented below. +func (o RegionSecurityPolicyRuleMatchOutput) Config() RegionSecurityPolicyRuleMatchConfigPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleMatch) *RegionSecurityPolicyRuleMatchConfig { return v.Config }).(RegionSecurityPolicyRuleMatchConfigPtrOutput) +} + +// Preconfigured versioned expression. If this field is specified, config must also be specified. +// Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. +// Possible values are: `SRC_IPS_V1`. +func (o RegionSecurityPolicyRuleMatchOutput) VersionedExpr() pulumi.StringPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleMatch) *string { return v.VersionedExpr }).(pulumi.StringPtrOutput) +} + +type RegionSecurityPolicyRuleMatchPtrOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleMatchPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRuleMatch)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleMatchPtrOutput) ToRegionSecurityPolicyRuleMatchPtrOutput() RegionSecurityPolicyRuleMatchPtrOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchPtrOutput) ToRegionSecurityPolicyRuleMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchPtrOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchPtrOutput) Elem() RegionSecurityPolicyRuleMatchOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleMatch) RegionSecurityPolicyRuleMatch { + if v != nil { + return *v + } + var ret RegionSecurityPolicyRuleMatch + return ret + }).(RegionSecurityPolicyRuleMatchOutput) +} + +// The configuration options available when specifying versionedExpr. +// This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. +// Structure is documented below. +func (o RegionSecurityPolicyRuleMatchPtrOutput) Config() RegionSecurityPolicyRuleMatchConfigPtrOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleMatch) *RegionSecurityPolicyRuleMatchConfig { + if v == nil { + return nil + } + return v.Config + }).(RegionSecurityPolicyRuleMatchConfigPtrOutput) +} + +// Preconfigured versioned expression. If this field is specified, config must also be specified. +// Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. +// Possible values are: `SRC_IPS_V1`. +func (o RegionSecurityPolicyRuleMatchPtrOutput) VersionedExpr() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleMatch) *string { + if v == nil { + return nil + } + return v.VersionedExpr + }).(pulumi.StringPtrOutput) +} + +type RegionSecurityPolicyRuleMatchConfig struct { + // CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + SrcIpRanges []string `pulumi:"srcIpRanges"` +} + +// RegionSecurityPolicyRuleMatchConfigInput is an input type that accepts RegionSecurityPolicyRuleMatchConfigArgs and RegionSecurityPolicyRuleMatchConfigOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleMatchConfigInput` via: +// +// RegionSecurityPolicyRuleMatchConfigArgs{...} +type RegionSecurityPolicyRuleMatchConfigInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleMatchConfigOutput() RegionSecurityPolicyRuleMatchConfigOutput + ToRegionSecurityPolicyRuleMatchConfigOutputWithContext(context.Context) RegionSecurityPolicyRuleMatchConfigOutput +} + +type RegionSecurityPolicyRuleMatchConfigArgs struct { + // CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + SrcIpRanges pulumi.StringArrayInput `pulumi:"srcIpRanges"` +} + +func (RegionSecurityPolicyRuleMatchConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleMatchConfig)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleMatchConfigArgs) ToRegionSecurityPolicyRuleMatchConfigOutput() RegionSecurityPolicyRuleMatchConfigOutput { + return i.ToRegionSecurityPolicyRuleMatchConfigOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleMatchConfigArgs) ToRegionSecurityPolicyRuleMatchConfigOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMatchConfigOutput) +} + +func (i RegionSecurityPolicyRuleMatchConfigArgs) ToRegionSecurityPolicyRuleMatchConfigPtrOutput() RegionSecurityPolicyRuleMatchConfigPtrOutput { + return i.ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleMatchConfigArgs) ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMatchConfigOutput).ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(ctx) +} + +// RegionSecurityPolicyRuleMatchConfigPtrInput is an input type that accepts RegionSecurityPolicyRuleMatchConfigArgs, RegionSecurityPolicyRuleMatchConfigPtr and RegionSecurityPolicyRuleMatchConfigPtrOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleMatchConfigPtrInput` via: +// +// RegionSecurityPolicyRuleMatchConfigArgs{...} +// +// or: +// +// nil +type RegionSecurityPolicyRuleMatchConfigPtrInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleMatchConfigPtrOutput() RegionSecurityPolicyRuleMatchConfigPtrOutput + ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(context.Context) RegionSecurityPolicyRuleMatchConfigPtrOutput +} + +type regionSecurityPolicyRuleMatchConfigPtrType RegionSecurityPolicyRuleMatchConfigArgs + +func RegionSecurityPolicyRuleMatchConfigPtr(v *RegionSecurityPolicyRuleMatchConfigArgs) RegionSecurityPolicyRuleMatchConfigPtrInput { + return (*regionSecurityPolicyRuleMatchConfigPtrType)(v) +} + +func (*regionSecurityPolicyRuleMatchConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRuleMatchConfig)(nil)).Elem() +} + +func (i *regionSecurityPolicyRuleMatchConfigPtrType) ToRegionSecurityPolicyRuleMatchConfigPtrOutput() RegionSecurityPolicyRuleMatchConfigPtrOutput { + return i.ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(context.Background()) +} + +func (i *regionSecurityPolicyRuleMatchConfigPtrType) ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMatchConfigPtrOutput) +} + +type RegionSecurityPolicyRuleMatchConfigOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleMatchConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleMatchConfig)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleMatchConfigOutput) ToRegionSecurityPolicyRuleMatchConfigOutput() RegionSecurityPolicyRuleMatchConfigOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchConfigOutput) ToRegionSecurityPolicyRuleMatchConfigOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchConfigOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchConfigOutput) ToRegionSecurityPolicyRuleMatchConfigPtrOutput() RegionSecurityPolicyRuleMatchConfigPtrOutput { + return o.ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(context.Background()) +} + +func (o RegionSecurityPolicyRuleMatchConfigOutput) ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RegionSecurityPolicyRuleMatchConfig) *RegionSecurityPolicyRuleMatchConfig { + return &v + }).(RegionSecurityPolicyRuleMatchConfigPtrOutput) +} + +// CIDR IP address range. Maximum number of srcIpRanges allowed is 10. +func (o RegionSecurityPolicyRuleMatchConfigOutput) SrcIpRanges() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleMatchConfig) []string { return v.SrcIpRanges }).(pulumi.StringArrayOutput) +} + +type RegionSecurityPolicyRuleMatchConfigPtrOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleMatchConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRuleMatchConfig)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleMatchConfigPtrOutput) ToRegionSecurityPolicyRuleMatchConfigPtrOutput() RegionSecurityPolicyRuleMatchConfigPtrOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchConfigPtrOutput) ToRegionSecurityPolicyRuleMatchConfigPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMatchConfigPtrOutput { + return o +} + +func (o RegionSecurityPolicyRuleMatchConfigPtrOutput) Elem() RegionSecurityPolicyRuleMatchConfigOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleMatchConfig) RegionSecurityPolicyRuleMatchConfig { + if v != nil { + return *v + } + var ret RegionSecurityPolicyRuleMatchConfig + return ret + }).(RegionSecurityPolicyRuleMatchConfigOutput) +} + +// CIDR IP address range. Maximum number of srcIpRanges allowed is 10. +func (o RegionSecurityPolicyRuleMatchConfigPtrOutput) SrcIpRanges() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleMatchConfig) []string { + if v == nil { + return nil + } + return v.SrcIpRanges + }).(pulumi.StringArrayOutput) +} + +type RegionSecurityPolicyRuleNetworkMatch struct { + // Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + DestIpRanges []string `pulumi:"destIpRanges"` + // Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + DestPorts []string `pulumi:"destPorts"` + // IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + IpProtocols []string `pulumi:"ipProtocols"` + // BGP Autonomous System Number associated with the source IP address. + SrcAsns []int `pulumi:"srcAsns"` + // Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + SrcIpRanges []string `pulumi:"srcIpRanges"` + // Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + SrcPorts []string `pulumi:"srcPorts"` + // Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + SrcRegionCodes []string `pulumi:"srcRegionCodes"` + // User-defined fields. Each element names a defined field and lists the matching values for that field. + // Structure is documented below. + UserDefinedFields []RegionSecurityPolicyRuleNetworkMatchUserDefinedField `pulumi:"userDefinedFields"` +} + +// RegionSecurityPolicyRuleNetworkMatchInput is an input type that accepts RegionSecurityPolicyRuleNetworkMatchArgs and RegionSecurityPolicyRuleNetworkMatchOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleNetworkMatchInput` via: +// +// RegionSecurityPolicyRuleNetworkMatchArgs{...} +type RegionSecurityPolicyRuleNetworkMatchInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleNetworkMatchOutput() RegionSecurityPolicyRuleNetworkMatchOutput + ToRegionSecurityPolicyRuleNetworkMatchOutputWithContext(context.Context) RegionSecurityPolicyRuleNetworkMatchOutput +} + +type RegionSecurityPolicyRuleNetworkMatchArgs struct { + // Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + DestIpRanges pulumi.StringArrayInput `pulumi:"destIpRanges"` + // Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + DestPorts pulumi.StringArrayInput `pulumi:"destPorts"` + // IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + IpProtocols pulumi.StringArrayInput `pulumi:"ipProtocols"` + // BGP Autonomous System Number associated with the source IP address. + SrcAsns pulumi.IntArrayInput `pulumi:"srcAsns"` + // Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + SrcIpRanges pulumi.StringArrayInput `pulumi:"srcIpRanges"` + // Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + SrcPorts pulumi.StringArrayInput `pulumi:"srcPorts"` + // Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + SrcRegionCodes pulumi.StringArrayInput `pulumi:"srcRegionCodes"` + // User-defined fields. Each element names a defined field and lists the matching values for that field. + // Structure is documented below. + UserDefinedFields RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayInput `pulumi:"userDefinedFields"` +} + +func (RegionSecurityPolicyRuleNetworkMatchArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatch)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleNetworkMatchArgs) ToRegionSecurityPolicyRuleNetworkMatchOutput() RegionSecurityPolicyRuleNetworkMatchOutput { + return i.ToRegionSecurityPolicyRuleNetworkMatchOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleNetworkMatchArgs) ToRegionSecurityPolicyRuleNetworkMatchOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleNetworkMatchOutput) +} + +func (i RegionSecurityPolicyRuleNetworkMatchArgs) ToRegionSecurityPolicyRuleNetworkMatchPtrOutput() RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return i.ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleNetworkMatchArgs) ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleNetworkMatchOutput).ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(ctx) +} + +// RegionSecurityPolicyRuleNetworkMatchPtrInput is an input type that accepts RegionSecurityPolicyRuleNetworkMatchArgs, RegionSecurityPolicyRuleNetworkMatchPtr and RegionSecurityPolicyRuleNetworkMatchPtrOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleNetworkMatchPtrInput` via: +// +// RegionSecurityPolicyRuleNetworkMatchArgs{...} +// +// or: +// +// nil +type RegionSecurityPolicyRuleNetworkMatchPtrInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleNetworkMatchPtrOutput() RegionSecurityPolicyRuleNetworkMatchPtrOutput + ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(context.Context) RegionSecurityPolicyRuleNetworkMatchPtrOutput +} + +type regionSecurityPolicyRuleNetworkMatchPtrType RegionSecurityPolicyRuleNetworkMatchArgs + +func RegionSecurityPolicyRuleNetworkMatchPtr(v *RegionSecurityPolicyRuleNetworkMatchArgs) RegionSecurityPolicyRuleNetworkMatchPtrInput { + return (*regionSecurityPolicyRuleNetworkMatchPtrType)(v) +} + +func (*regionSecurityPolicyRuleNetworkMatchPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRuleNetworkMatch)(nil)).Elem() +} + +func (i *regionSecurityPolicyRuleNetworkMatchPtrType) ToRegionSecurityPolicyRuleNetworkMatchPtrOutput() RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return i.ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(context.Background()) +} + +func (i *regionSecurityPolicyRuleNetworkMatchPtrType) ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleNetworkMatchPtrOutput) +} + +type RegionSecurityPolicyRuleNetworkMatchOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleNetworkMatchOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatch)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleNetworkMatchOutput) ToRegionSecurityPolicyRuleNetworkMatchOutput() RegionSecurityPolicyRuleNetworkMatchOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchOutput) ToRegionSecurityPolicyRuleNetworkMatchOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchOutput) ToRegionSecurityPolicyRuleNetworkMatchPtrOutput() RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return o.ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(context.Background()) +} + +func (o RegionSecurityPolicyRuleNetworkMatchOutput) ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RegionSecurityPolicyRuleNetworkMatch) *RegionSecurityPolicyRuleNetworkMatch { + return &v + }).(RegionSecurityPolicyRuleNetworkMatchPtrOutput) +} + +// Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. +func (o RegionSecurityPolicyRuleNetworkMatchOutput) DestIpRanges() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []string { return v.DestIpRanges }).(pulumi.StringArrayOutput) +} + +// Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). +func (o RegionSecurityPolicyRuleNetworkMatchOutput) DestPorts() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []string { return v.DestPorts }).(pulumi.StringArrayOutput) +} + +// IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". +func (o RegionSecurityPolicyRuleNetworkMatchOutput) IpProtocols() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []string { return v.IpProtocols }).(pulumi.StringArrayOutput) +} + +// BGP Autonomous System Number associated with the source IP address. +func (o RegionSecurityPolicyRuleNetworkMatchOutput) SrcAsns() pulumi.IntArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []int { return v.SrcAsns }).(pulumi.IntArrayOutput) +} + +// Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. +func (o RegionSecurityPolicyRuleNetworkMatchOutput) SrcIpRanges() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []string { return v.SrcIpRanges }).(pulumi.StringArrayOutput) +} + +// Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). +func (o RegionSecurityPolicyRuleNetworkMatchOutput) SrcPorts() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []string { return v.SrcPorts }).(pulumi.StringArrayOutput) +} + +// Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. +func (o RegionSecurityPolicyRuleNetworkMatchOutput) SrcRegionCodes() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []string { return v.SrcRegionCodes }).(pulumi.StringArrayOutput) +} + +// User-defined fields. Each element names a defined field and lists the matching values for that field. +// Structure is documented below. +func (o RegionSecurityPolicyRuleNetworkMatchOutput) UserDefinedFields() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatch) []RegionSecurityPolicyRuleNetworkMatchUserDefinedField { + return v.UserDefinedFields + }).(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) +} + +type RegionSecurityPolicyRuleNetworkMatchPtrOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleNetworkMatchPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRuleNetworkMatch)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) ToRegionSecurityPolicyRuleNetworkMatchPtrOutput() RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) ToRegionSecurityPolicyRuleNetworkMatchPtrOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) Elem() RegionSecurityPolicyRuleNetworkMatchOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) RegionSecurityPolicyRuleNetworkMatch { + if v != nil { + return *v + } + var ret RegionSecurityPolicyRuleNetworkMatch + return ret + }).(RegionSecurityPolicyRuleNetworkMatchOutput) +} + +// Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) DestIpRanges() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []string { + if v == nil { + return nil + } + return v.DestIpRanges + }).(pulumi.StringArrayOutput) +} + +// Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) DestPorts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []string { + if v == nil { + return nil + } + return v.DestPorts + }).(pulumi.StringArrayOutput) +} + +// IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) IpProtocols() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []string { + if v == nil { + return nil + } + return v.IpProtocols + }).(pulumi.StringArrayOutput) +} + +// BGP Autonomous System Number associated with the source IP address. +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) SrcAsns() pulumi.IntArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []int { + if v == nil { + return nil + } + return v.SrcAsns + }).(pulumi.IntArrayOutput) +} + +// Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) SrcIpRanges() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []string { + if v == nil { + return nil + } + return v.SrcIpRanges + }).(pulumi.StringArrayOutput) +} + +// Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) SrcPorts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []string { + if v == nil { + return nil + } + return v.SrcPorts + }).(pulumi.StringArrayOutput) +} + +// Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) SrcRegionCodes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []string { + if v == nil { + return nil + } + return v.SrcRegionCodes + }).(pulumi.StringArrayOutput) +} + +// User-defined fields. Each element names a defined field and lists the matching values for that field. +// Structure is documented below. +func (o RegionSecurityPolicyRuleNetworkMatchPtrOutput) UserDefinedFields() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRuleNetworkMatch) []RegionSecurityPolicyRuleNetworkMatchUserDefinedField { + if v == nil { + return nil + } + return v.UserDefinedFields + }).(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) +} + +type RegionSecurityPolicyRuleNetworkMatchUserDefinedField struct { + // Name of the user-defined field, as given in the definition. + Name *string `pulumi:"name"` + // Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + Values []string `pulumi:"values"` +} + +// RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldInput is an input type that accepts RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs and RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldInput` via: +// +// RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{...} +type RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput + ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutputWithContext(context.Context) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput +} + +type RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs struct { + // Name of the user-defined field, as given in the definition. + Name pulumi.StringPtrInput `pulumi:"name"` + // Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + Values pulumi.StringArrayInput `pulumi:"values"` +} + +func (RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatchUserDefinedField)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput { + return i.ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) +} + +// RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayInput is an input type that accepts RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray and RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayInput` via: +// +// RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray{ RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{...} } +type RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput + ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutputWithContext(context.Context) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput +} + +type RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray []RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldInput + +func (RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]RegionSecurityPolicyRuleNetworkMatchUserDefinedField)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput { + return i.ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) +} + +type RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatchUserDefinedField)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput { + return o +} + +// Name of the user-defined field, as given in the definition. +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatchUserDefinedField) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) Values() pulumi.StringArrayOutput { + return o.ApplyT(func(v RegionSecurityPolicyRuleNetworkMatchUserDefinedField) []string { return v.Values }).(pulumi.StringArrayOutput) +} + +type RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]RegionSecurityPolicyRuleNetworkMatchUserDefinedField)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput() RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) ToRegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput { + return o +} + +func (o RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput) Index(i pulumi.IntInput) RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) RegionSecurityPolicyRuleNetworkMatchUserDefinedField { + return vs[0].([]RegionSecurityPolicyRuleNetworkMatchUserDefinedField)[vs[1].(int)] + }).(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput) +} + +type RegionSecurityPolicyUserDefinedField struct { + // The base relative to which 'offset' is measured. Possible values are: + // - IPV4: Points to the beginning of the IPv4 header. + // - IPV6: Points to the beginning of the IPv6 header. + // - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + // - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + // Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + Base string `pulumi:"base"` + // If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + // Encoded as a hexadecimal number (starting with "0x"). + // The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + Mask *string `pulumi:"mask"` + // The name of this field. Must be unique within the policy. + Name *string `pulumi:"name"` + // Offset of the first byte of the field (in network byte order) relative to 'base'. + Offset *int `pulumi:"offset"` + // Size of the field in bytes. Valid values: 1-4. + Size *int `pulumi:"size"` +} + +// RegionSecurityPolicyUserDefinedFieldInput is an input type that accepts RegionSecurityPolicyUserDefinedFieldArgs and RegionSecurityPolicyUserDefinedFieldOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyUserDefinedFieldInput` via: +// +// RegionSecurityPolicyUserDefinedFieldArgs{...} +type RegionSecurityPolicyUserDefinedFieldInput interface { + pulumi.Input + + ToRegionSecurityPolicyUserDefinedFieldOutput() RegionSecurityPolicyUserDefinedFieldOutput + ToRegionSecurityPolicyUserDefinedFieldOutputWithContext(context.Context) RegionSecurityPolicyUserDefinedFieldOutput +} + +type RegionSecurityPolicyUserDefinedFieldArgs struct { + // The base relative to which 'offset' is measured. Possible values are: + // - IPV4: Points to the beginning of the IPv4 header. + // - IPV6: Points to the beginning of the IPv6 header. + // - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + // - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + // Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + Base pulumi.StringInput `pulumi:"base"` + // If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + // Encoded as a hexadecimal number (starting with "0x"). + // The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + Mask pulumi.StringPtrInput `pulumi:"mask"` + // The name of this field. Must be unique within the policy. + Name pulumi.StringPtrInput `pulumi:"name"` + // Offset of the first byte of the field (in network byte order) relative to 'base'. + Offset pulumi.IntPtrInput `pulumi:"offset"` + // Size of the field in bytes. Valid values: 1-4. + Size pulumi.IntPtrInput `pulumi:"size"` +} + +func (RegionSecurityPolicyUserDefinedFieldArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyUserDefinedField)(nil)).Elem() +} + +func (i RegionSecurityPolicyUserDefinedFieldArgs) ToRegionSecurityPolicyUserDefinedFieldOutput() RegionSecurityPolicyUserDefinedFieldOutput { + return i.ToRegionSecurityPolicyUserDefinedFieldOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyUserDefinedFieldArgs) ToRegionSecurityPolicyUserDefinedFieldOutputWithContext(ctx context.Context) RegionSecurityPolicyUserDefinedFieldOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyUserDefinedFieldOutput) +} + +// RegionSecurityPolicyUserDefinedFieldArrayInput is an input type that accepts RegionSecurityPolicyUserDefinedFieldArray and RegionSecurityPolicyUserDefinedFieldArrayOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyUserDefinedFieldArrayInput` via: +// +// RegionSecurityPolicyUserDefinedFieldArray{ RegionSecurityPolicyUserDefinedFieldArgs{...} } +type RegionSecurityPolicyUserDefinedFieldArrayInput interface { + pulumi.Input + + ToRegionSecurityPolicyUserDefinedFieldArrayOutput() RegionSecurityPolicyUserDefinedFieldArrayOutput + ToRegionSecurityPolicyUserDefinedFieldArrayOutputWithContext(context.Context) RegionSecurityPolicyUserDefinedFieldArrayOutput +} + +type RegionSecurityPolicyUserDefinedFieldArray []RegionSecurityPolicyUserDefinedFieldInput + +func (RegionSecurityPolicyUserDefinedFieldArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]RegionSecurityPolicyUserDefinedField)(nil)).Elem() +} + +func (i RegionSecurityPolicyUserDefinedFieldArray) ToRegionSecurityPolicyUserDefinedFieldArrayOutput() RegionSecurityPolicyUserDefinedFieldArrayOutput { + return i.ToRegionSecurityPolicyUserDefinedFieldArrayOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyUserDefinedFieldArray) ToRegionSecurityPolicyUserDefinedFieldArrayOutputWithContext(ctx context.Context) RegionSecurityPolicyUserDefinedFieldArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyUserDefinedFieldArrayOutput) +} + +type RegionSecurityPolicyUserDefinedFieldOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyUserDefinedFieldOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RegionSecurityPolicyUserDefinedField)(nil)).Elem() +} + +func (o RegionSecurityPolicyUserDefinedFieldOutput) ToRegionSecurityPolicyUserDefinedFieldOutput() RegionSecurityPolicyUserDefinedFieldOutput { + return o +} + +func (o RegionSecurityPolicyUserDefinedFieldOutput) ToRegionSecurityPolicyUserDefinedFieldOutputWithContext(ctx context.Context) RegionSecurityPolicyUserDefinedFieldOutput { + return o +} + +// The base relative to which 'offset' is measured. Possible values are: +// - IPV4: Points to the beginning of the IPv4 header. +// - IPV6: Points to the beginning of the IPv6 header. +// - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. +// - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. +// Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. +func (o RegionSecurityPolicyUserDefinedFieldOutput) Base() pulumi.StringOutput { + return o.ApplyT(func(v RegionSecurityPolicyUserDefinedField) string { return v.Base }).(pulumi.StringOutput) +} + +// If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. +// Encoded as a hexadecimal number (starting with "0x"). +// The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. +func (o RegionSecurityPolicyUserDefinedFieldOutput) Mask() pulumi.StringPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyUserDefinedField) *string { return v.Mask }).(pulumi.StringPtrOutput) +} + +// The name of this field. Must be unique within the policy. +func (o RegionSecurityPolicyUserDefinedFieldOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyUserDefinedField) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Offset of the first byte of the field (in network byte order) relative to 'base'. +func (o RegionSecurityPolicyUserDefinedFieldOutput) Offset() pulumi.IntPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyUserDefinedField) *int { return v.Offset }).(pulumi.IntPtrOutput) +} + +// Size of the field in bytes. Valid values: 1-4. +func (o RegionSecurityPolicyUserDefinedFieldOutput) Size() pulumi.IntPtrOutput { + return o.ApplyT(func(v RegionSecurityPolicyUserDefinedField) *int { return v.Size }).(pulumi.IntPtrOutput) +} + +type RegionSecurityPolicyUserDefinedFieldArrayOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyUserDefinedFieldArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]RegionSecurityPolicyUserDefinedField)(nil)).Elem() +} + +func (o RegionSecurityPolicyUserDefinedFieldArrayOutput) ToRegionSecurityPolicyUserDefinedFieldArrayOutput() RegionSecurityPolicyUserDefinedFieldArrayOutput { + return o +} + +func (o RegionSecurityPolicyUserDefinedFieldArrayOutput) ToRegionSecurityPolicyUserDefinedFieldArrayOutputWithContext(ctx context.Context) RegionSecurityPolicyUserDefinedFieldArrayOutput { + return o +} + +func (o RegionSecurityPolicyUserDefinedFieldArrayOutput) Index(i pulumi.IntInput) RegionSecurityPolicyUserDefinedFieldOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) RegionSecurityPolicyUserDefinedField { + return vs[0].([]RegionSecurityPolicyUserDefinedField)[vs[1].(int)] + }).(RegionSecurityPolicyUserDefinedFieldOutput) +} + type RegionUrlMapDefaultRouteAction struct { // The specification for allowing client side cross-origin requests. Please see // [W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/) @@ -71244,6 +72101,8 @@ type SecurityPolicyAdvancedOptionsConfig struct { // * NORMAL - Normal log level. // * VERBOSE - Verbose log level. LogLevel *string `pulumi:"logLevel"` + // ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + UserIpRequestHeaders []string `pulumi:"userIpRequestHeaders"` } // SecurityPolicyAdvancedOptionsConfigInput is an input type that accepts SecurityPolicyAdvancedOptionsConfigArgs and SecurityPolicyAdvancedOptionsConfigOutput values. @@ -71269,6 +72128,8 @@ type SecurityPolicyAdvancedOptionsConfigArgs struct { // * NORMAL - Normal log level. // * VERBOSE - Verbose log level. LogLevel pulumi.StringPtrInput `pulumi:"logLevel"` + // ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + UserIpRequestHeaders pulumi.StringArrayInput `pulumi:"userIpRequestHeaders"` } func (SecurityPolicyAdvancedOptionsConfigArgs) ElementType() reflect.Type { @@ -71370,6 +72231,11 @@ func (o SecurityPolicyAdvancedOptionsConfigOutput) LogLevel() pulumi.StringPtrOu return o.ApplyT(func(v SecurityPolicyAdvancedOptionsConfig) *string { return v.LogLevel }).(pulumi.StringPtrOutput) } +// ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. +func (o SecurityPolicyAdvancedOptionsConfigOutput) UserIpRequestHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v SecurityPolicyAdvancedOptionsConfig) []string { return v.UserIpRequestHeaders }).(pulumi.StringArrayOutput) +} + type SecurityPolicyAdvancedOptionsConfigPtrOutput struct{ *pulumi.OutputState } func (SecurityPolicyAdvancedOptionsConfigPtrOutput) ElementType() reflect.Type { @@ -71429,6 +72295,16 @@ func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) LogLevel() pulumi.StringPt }).(pulumi.StringPtrOutput) } +// ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. +func (o SecurityPolicyAdvancedOptionsConfigPtrOutput) UserIpRequestHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *SecurityPolicyAdvancedOptionsConfig) []string { + if v == nil { + return nil + } + return v.UserIpRequestHeaders + }).(pulumi.StringArrayOutput) +} + type SecurityPolicyAdvancedOptionsConfigJsonCustomConfig struct { // A list of custom Content-Type header values to apply the JSON parsing. The // format of the Content-Type header values is defined in @@ -88973,1068 +89849,6 @@ func (o URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchPtrOutput) Range }).(pulumi.IntPtrOutput) } -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilter struct { - // The list of label value pairs that must match labels in the provided metadata - // based on filterMatchCriteria This list must not be empty and can have at the - // most 64 entries. - // Structure is documented below. - FilterLabels []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel `pulumi:"filterLabels"` - // Specifies how individual filterLabel matches within the list of filterLabels - // contribute towards the overall metadataFilter match. Supported values are: - // - MATCH_ANY: At least one of the filterLabels must have a matching label in the - // provided metadata. - // - MATCH_ALL: All filterLabels must have matching labels in - // the provided metadata. - // Possible values are: `MATCH_ALL`, `MATCH_ANY`. - FilterMatchCriteria string `pulumi:"filterMatchCriteria"` -} - -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput` via: -// -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{...} -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs struct { - // The list of label value pairs that must match labels in the provided metadata - // based on filterMatchCriteria This list must not be empty and can have at the - // most 64 entries. - // Structure is documented below. - FilterLabels URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput `pulumi:"filterLabels"` - // Specifies how individual filterLabel matches within the list of filterLabels - // contribute towards the overall metadataFilter match. Supported values are: - // - MATCH_ANY: At least one of the filterLabels must have a matching label in the - // provided metadata. - // - MATCH_ALL: All filterLabels must have matching labels in - // the provided metadata. - // Possible values are: `MATCH_ALL`, `MATCH_ANY`. - FilterMatchCriteria pulumi.StringInput `pulumi:"filterMatchCriteria"` -} - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { - return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) -} - -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput` via: -// -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{ URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{...} } -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { - return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { - return o -} - -// The list of label value pairs that must match labels in the provided metadata -// based on filterMatchCriteria This list must not be empty and can have at the -// most 64 entries. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) FilterLabels() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilter) []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel { - return v.FilterLabels - }).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) -} - -// Specifies how individual filterLabel matches within the list of filterLabels -// contribute towards the overall metadataFilter match. Supported values are: -// - MATCH_ANY: At least one of the filterLabels must have a matching label in the -// provided metadata. -// - MATCH_ALL: All filterLabels must have matching labels in -// the provided metadata. -// Possible values are: `MATCH_ALL`, `MATCH_ANY`. -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) FilterMatchCriteria() pulumi.StringOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilter) string { return v.FilterMatchCriteria }).(pulumi.StringOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) Index(i pulumi.IntInput) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) URLMapPathMatcherRouteRuleMatchRuleMetadataFilter { - return vs[0].([]URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)[vs[1].(int)] - }).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel struct { - // Name of metadata label. The name can have a maximum length of 1024 characters - // and must be at least 1 character long. - Name string `pulumi:"name"` - // The value of the label must match the specified value. value can have a maximum - // length of 1024 characters. - Value string `pulumi:"value"` -} - -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput` via: -// -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{...} -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs struct { - // Name of metadata label. The name can have a maximum length of 1024 characters - // and must be at least 1 character long. - Name pulumi.StringInput `pulumi:"name"` - // The value of the label must match the specified value. value can have a maximum - // length of 1024 characters. - Value pulumi.StringInput `pulumi:"value"` -} - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { - return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) -} - -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput` via: -// -// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{ URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{...} } -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput - ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { - return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { - return o -} - -// Name of metadata label. The name can have a maximum length of 1024 characters -// and must be at least 1 character long. -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) Name() pulumi.StringOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel) string { return v.Name }).(pulumi.StringOutput) -} - -// The value of the label must match the specified value. value can have a maximum -// length of 1024 characters. -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) Value() pulumi.StringOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel) string { return v.Value }).(pulumi.StringOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) Index(i pulumi.IntInput) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel { - return vs[0].([]URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)[vs[1].(int)] - }).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch struct { - // The queryParameterMatch matches if the value of the parameter exactly matches - // the contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch - // must be set. - ExactMatch *string `pulumi:"exactMatch"` - // The name of the query parameter to match. The query parameter must exist in the - // request, in the absence of which the request match fails. - Name string `pulumi:"name"` - // Specifies that the queryParameterMatch matches if the request contains the query - // parameter, irrespective of whether the parameter has a value or not. Only one of - // presentMatch, exactMatch and regexMatch must be set. - PresentMatch *bool `pulumi:"presentMatch"` - // The queryParameterMatch matches if the value of the parameter matches the - // regular expression specified by regexMatch. For the regular expression grammar, - // please see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch, - // exactMatch and regexMatch must be set. - RegexMatch *string `pulumi:"regexMatch"` -} - -// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs and URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput` via: -// -// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{...} -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput - ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput -} - -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs struct { - // The queryParameterMatch matches if the value of the parameter exactly matches - // the contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch - // must be set. - ExactMatch pulumi.StringPtrInput `pulumi:"exactMatch"` - // The name of the query parameter to match. The query parameter must exist in the - // request, in the absence of which the request match fails. - Name pulumi.StringInput `pulumi:"name"` - // Specifies that the queryParameterMatch matches if the request contains the query - // parameter, irrespective of whether the parameter has a value or not. Only one of - // presentMatch, exactMatch and regexMatch must be set. - PresentMatch pulumi.BoolPtrInput `pulumi:"presentMatch"` - // The queryParameterMatch matches if the value of the parameter matches the - // regular expression specified by regexMatch. For the regular expression grammar, - // please see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch, - // exactMatch and regexMatch must be set. - RegexMatch pulumi.StringPtrInput `pulumi:"regexMatch"` -} - -func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { - return i.ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) -} - -// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray and URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput` via: -// -// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{ URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{...} } -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput - ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput -} - -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray []URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput - -func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { - return i.ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { - return o -} - -// The queryParameterMatch matches if the value of the parameter exactly matches -// the contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch -// must be set. -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ExactMatch() pulumi.StringPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) *string { return v.ExactMatch }).(pulumi.StringPtrOutput) -} - -// The name of the query parameter to match. The query parameter must exist in the -// request, in the absence of which the request match fails. -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) Name() pulumi.StringOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) string { return v.Name }).(pulumi.StringOutput) -} - -// Specifies that the queryParameterMatch matches if the request contains the query -// parameter, irrespective of whether the parameter has a value or not. Only one of -// presentMatch, exactMatch and regexMatch must be set. -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) PresentMatch() pulumi.BoolPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) *bool { return v.PresentMatch }).(pulumi.BoolPtrOutput) -} - -// The queryParameterMatch matches if the value of the parameter matches the -// regular expression specified by regexMatch. For the regular expression grammar, -// please see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch, -// exactMatch and regexMatch must be set. -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) RegexMatch() pulumi.StringPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) *string { return v.RegexMatch }).(pulumi.StringPtrOutput) -} - -type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) Index(i pulumi.IntInput) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch { - return vs[0].([]URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)[vs[1].(int)] - }).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) -} - -type URLMapPathMatcherRouteRuleRouteAction struct { - // The specification for allowing client side cross-origin requests. Please see W3C - // Recommendation for Cross Origin Resource Sharing - // Structure is documented below. - CorsPolicy *URLMapPathMatcherRouteRuleRouteActionCorsPolicy `pulumi:"corsPolicy"` - // The specification for fault injection introduced into traffic to test the - // resiliency of clients to backend service failure. As part of fault injection, - // when clients send requests to a backend service, delays can be introduced by - // Loadbalancer on a percentage of requests before sending those request to the - // backend service. Similarly requests from clients can be aborted by the - // Loadbalancer for a percentage of requests. timeout and retryPolicy will be - // ignored by clients that are configured with a fault_injection_policy. - // Structure is documented below. - FaultInjectionPolicy *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy `pulumi:"faultInjectionPolicy"` - // Specifies the policy on how requests intended for the route's backends are - // shadowed to a separate mirrored backend service. Loadbalancer does not wait for - // responses from the shadow service. Prior to sending traffic to the shadow - // service, the host / authority header is suffixed with -shadow. - // Structure is documented below. - RequestMirrorPolicy *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy `pulumi:"requestMirrorPolicy"` - // Specifies the retry policy associated with this route. - // Structure is documented below. - RetryPolicy *URLMapPathMatcherRouteRuleRouteActionRetryPolicy `pulumi:"retryPolicy"` - // Specifies the timeout for the selected route. Timeout is computed from the time - // the request is has been fully processed (i.e. end-of-stream) up until the - // response has been completely processed. Timeout includes all retries. If not - // specified, the default value is 15 seconds. - // Structure is documented below. - Timeout *URLMapPathMatcherRouteRuleRouteActionTimeout `pulumi:"timeout"` - // The spec to modify the URL of the request, prior to forwarding the request to - // the matched service - // Structure is documented below. - UrlRewrite *URLMapPathMatcherRouteRuleRouteActionUrlRewrite `pulumi:"urlRewrite"` - // A list of weighted backend services to send traffic to when a route match - // occurs. The weights determine the fraction of traffic that flows to their - // corresponding backend service. If all traffic needs to go to a single backend - // service, there must be one weightedBackendService with weight set to a non 0 - // number. Once a backendService is identified and before forwarding the request to - // the backend service, advanced routing actions like Url rewrites and header - // transformations are applied depending on additional settings specified in this - // HttpRouteAction. - // Structure is documented below. - WeightedBackendServices []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService `pulumi:"weightedBackendServices"` -} - -// URLMapPathMatcherRouteRuleRouteActionInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs and URLMapPathMatcherRouteRuleRouteActionOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionArgs{...} -type URLMapPathMatcherRouteRuleRouteActionInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput - ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionOutput -} - -type URLMapPathMatcherRouteRuleRouteActionArgs struct { - // The specification for allowing client side cross-origin requests. Please see W3C - // Recommendation for Cross Origin Resource Sharing - // Structure is documented below. - CorsPolicy URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput `pulumi:"corsPolicy"` - // The specification for fault injection introduced into traffic to test the - // resiliency of clients to backend service failure. As part of fault injection, - // when clients send requests to a backend service, delays can be introduced by - // Loadbalancer on a percentage of requests before sending those request to the - // backend service. Similarly requests from clients can be aborted by the - // Loadbalancer for a percentage of requests. timeout and retryPolicy will be - // ignored by clients that are configured with a fault_injection_policy. - // Structure is documented below. - FaultInjectionPolicy URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrInput `pulumi:"faultInjectionPolicy"` - // Specifies the policy on how requests intended for the route's backends are - // shadowed to a separate mirrored backend service. Loadbalancer does not wait for - // responses from the shadow service. Prior to sending traffic to the shadow - // service, the host / authority header is suffixed with -shadow. - // Structure is documented below. - RequestMirrorPolicy URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrInput `pulumi:"requestMirrorPolicy"` - // Specifies the retry policy associated with this route. - // Structure is documented below. - RetryPolicy URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrInput `pulumi:"retryPolicy"` - // Specifies the timeout for the selected route. Timeout is computed from the time - // the request is has been fully processed (i.e. end-of-stream) up until the - // response has been completely processed. Timeout includes all retries. If not - // specified, the default value is 15 seconds. - // Structure is documented below. - Timeout URLMapPathMatcherRouteRuleRouteActionTimeoutPtrInput `pulumi:"timeout"` - // The spec to modify the URL of the request, prior to forwarding the request to - // the matched service - // Structure is documented below. - UrlRewrite URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrInput `pulumi:"urlRewrite"` - // A list of weighted backend services to send traffic to when a route match - // occurs. The weights determine the fraction of traffic that flows to their - // corresponding backend service. If all traffic needs to go to a single backend - // service, there must be one weightedBackendService with weight set to a non 0 - // number. Once a backendService is identified and before forwarding the request to - // the backend service, advanced routing actions like Url rewrites and header - // transformations are applied depending on additional settings specified in this - // HttpRouteAction. - // Structure is documented below. - WeightedBackendServices URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayInput `pulumi:"weightedBackendServices"` -} - -func (URLMapPathMatcherRouteRuleRouteActionArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput) -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput).ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx) -} - -// URLMapPathMatcherRouteRuleRouteActionPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs, URLMapPathMatcherRouteRuleRouteActionPtr and URLMapPathMatcherRouteRuleRouteActionPtrOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionPtrInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionArgs{...} -// -// or: -// -// nil -type URLMapPathMatcherRouteRuleRouteActionPtrInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput - ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput -} - -type urlmapPathMatcherRouteRuleRouteActionPtrType URLMapPathMatcherRouteRuleRouteActionArgs - -func URLMapPathMatcherRouteRuleRouteActionPtr(v *URLMapPathMatcherRouteRuleRouteActionArgs) URLMapPathMatcherRouteRuleRouteActionPtrInput { - return (*urlmapPathMatcherRouteRuleRouteActionPtrType)(v) -} - -func (*urlmapPathMatcherRouteRuleRouteActionPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) -} - -func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) -} - -func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteAction { - return &v - }).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) -} - -// The specification for allowing client side cross-origin requests. Please see W3C -// Recommendation for Cross Origin Resource Sharing -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - return v.CorsPolicy - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -// The specification for fault injection introduced into traffic to test the -// resiliency of clients to backend service failure. As part of fault injection, -// when clients send requests to a backend service, delays can be introduced by -// Loadbalancer on a percentage of requests before sending those request to the -// backend service. Similarly requests from clients can be aborted by the -// Loadbalancer for a percentage of requests. timeout and retryPolicy will be -// ignored by clients that are configured with a fault_injection_policy. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { - return v.FaultInjectionPolicy - }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) -} - -// Specifies the policy on how requests intended for the route's backends are -// shadowed to a separate mirrored backend service. Loadbalancer does not wait for -// responses from the shadow service. Prior to sending traffic to the shadow -// service, the host / authority header is suffixed with -shadow. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { - return v.RequestMirrorPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) -} - -// Specifies the retry policy associated with this route. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { - return v.RetryPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) -} - -// Specifies the timeout for the selected route. Timeout is computed from the time -// the request is has been fully processed (i.e. end-of-stream) up until the -// response has been completely processed. Timeout includes all retries. If not -// specified, the default value is 15 seconds. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { - return v.Timeout - }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) -} - -// The spec to modify the URL of the request, prior to forwarding the request to -// the matched service -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { - return v.UrlRewrite - }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) -} - -// A list of weighted backend services to send traffic to when a route match -// occurs. The weights determine the fraction of traffic that flows to their -// corresponding backend service. If all traffic needs to go to a single backend -// service, there must be one weightedBackendService with weight set to a non 0 -// number. Once a backendService is identified and before forwarding the request to -// the backend service, advanced routing actions like Url rewrites and header -// transformations are applied depending on additional settings specified in this -// HttpRouteAction. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { - return v.WeightedBackendServices - }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionPtrOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) URLMapPathMatcherRouteRuleRouteAction { - if v != nil { - return *v - } - var ret URLMapPathMatcherRouteRuleRouteAction - return ret - }).(URLMapPathMatcherRouteRuleRouteActionOutput) -} - -// The specification for allowing client side cross-origin requests. Please see W3C -// Recommendation for Cross Origin Resource Sharing -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - if v == nil { - return nil - } - return v.CorsPolicy - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -// The specification for fault injection introduced into traffic to test the -// resiliency of clients to backend service failure. As part of fault injection, -// when clients send requests to a backend service, delays can be introduced by -// Loadbalancer on a percentage of requests before sending those request to the -// backend service. Similarly requests from clients can be aborted by the -// Loadbalancer for a percentage of requests. timeout and retryPolicy will be -// ignored by clients that are configured with a fault_injection_policy. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { - if v == nil { - return nil - } - return v.FaultInjectionPolicy - }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) -} - -// Specifies the policy on how requests intended for the route's backends are -// shadowed to a separate mirrored backend service. Loadbalancer does not wait for -// responses from the shadow service. Prior to sending traffic to the shadow -// service, the host / authority header is suffixed with -shadow. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { - if v == nil { - return nil - } - return v.RequestMirrorPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) -} - -// Specifies the retry policy associated with this route. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { - if v == nil { - return nil - } - return v.RetryPolicy - }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) -} - -// Specifies the timeout for the selected route. Timeout is computed from the time -// the request is has been fully processed (i.e. end-of-stream) up until the -// response has been completely processed. Timeout includes all retries. If not -// specified, the default value is 15 seconds. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { - if v == nil { - return nil - } - return v.Timeout - }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) -} - -// The spec to modify the URL of the request, prior to forwarding the request to -// the matched service -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { - if v == nil { - return nil - } - return v.UrlRewrite - }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) -} - -// A list of weighted backend services to send traffic to when a route match -// occurs. The weights determine the fraction of traffic that flows to their -// corresponding backend service. If all traffic needs to go to a single backend -// service, there must be one weightedBackendService with weight set to a non 0 -// number. Once a backendService is identified and before forwarding the request to -// the backend service, advanced routing actions like Url rewrites and header -// transformations are applied depending on additional settings specified in this -// HttpRouteAction. -// Structure is documented below. -func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { - if v == nil { - return nil - } - return v.WeightedBackendServices - }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicy struct { - // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. - // This translates to the Access-Control-Allow-Credentials header. - AllowCredentials *bool `pulumi:"allowCredentials"` - // Specifies the content for the Access-Control-Allow-Headers header. - AllowHeaders []string `pulumi:"allowHeaders"` - // Specifies the content for the Access-Control-Allow-Methods header. - AllowMethods []string `pulumi:"allowMethods"` - // Specifies the regular expression patterns that match allowed origins. For regular expression grammar - // please see en.cppreference.com/w/cpp/regex/ecmascript - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOriginRegexes []string `pulumi:"allowOriginRegexes"` - // Specifies the list of origins that will be allowed to do CORS requests. - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOrigins []string `pulumi:"allowOrigins"` - // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. - Disabled *bool `pulumi:"disabled"` - // Specifies the content for the Access-Control-Expose-Headers header. - ExposeHeaders []string `pulumi:"exposeHeaders"` - // Specifies how long results of a preflight request can be cached in seconds. - // This translates to the Access-Control-Max-Age header. - MaxAge *int `pulumi:"maxAge"` -} - -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs and URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs struct { - // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. - // This translates to the Access-Control-Allow-Credentials header. - AllowCredentials pulumi.BoolPtrInput `pulumi:"allowCredentials"` - // Specifies the content for the Access-Control-Allow-Headers header. - AllowHeaders pulumi.StringArrayInput `pulumi:"allowHeaders"` - // Specifies the content for the Access-Control-Allow-Methods header. - AllowMethods pulumi.StringArrayInput `pulumi:"allowMethods"` - // Specifies the regular expression patterns that match allowed origins. For regular expression grammar - // please see en.cppreference.com/w/cpp/regex/ecmascript - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOriginRegexes pulumi.StringArrayInput `pulumi:"allowOriginRegexes"` - // Specifies the list of origins that will be allowed to do CORS requests. - // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. - AllowOrigins pulumi.StringArrayInput `pulumi:"allowOrigins"` - // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. - Disabled pulumi.BoolPtrInput `pulumi:"disabled"` - // Specifies the content for the Access-Control-Expose-Headers header. - ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` - // Specifies how long results of a preflight request can be cached in seconds. - // This translates to the Access-Control-Max-Age header. - MaxAge pulumi.IntPtrInput `pulumi:"maxAge"` -} - -func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) -} - -func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput).ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx) -} - -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs, URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr and URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput values. -// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput` via: -// -// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} -// -// or: -// -// nil -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput interface { - pulumi.Input - - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput - ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput -} - -type urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs - -func URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput { - return (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType)(v) -} - -func (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) -} - -func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ElementType() reflect.Type { - return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - return &v - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) -} - -// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. -// This translates to the Access-Control-Allow-Credentials header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowCredentials() pulumi.BoolPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.AllowCredentials }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Allow-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowHeaders }).(pulumi.StringArrayOutput) -} - -// Specifies the content for the Access-Control-Allow-Methods header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowMethods() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowMethods }).(pulumi.StringArrayOutput) -} - -// Specifies the regular expression patterns that match allowed origins. For regular expression grammar -// please see en.cppreference.com/w/cpp/regex/ecmascript -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOriginRegexes() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOriginRegexes }).(pulumi.StringArrayOutput) -} - -// Specifies the list of origins that will be allowed to do CORS requests. -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOrigins() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOrigins }).(pulumi.StringArrayOutput) -} - -// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Expose-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ExposeHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) -} - -// Specifies how long results of a preflight request can be cached in seconds. -// This translates to the Access-Control-Max-Age header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) MaxAge() pulumi.IntPtrOutput { - return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { return v.MaxAge }).(pulumi.IntPtrOutput) -} - -type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput struct{ *pulumi.OutputState } - -func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ElementType() reflect.Type { - return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { - return o -} - -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) URLMapPathMatcherRouteRuleRouteActionCorsPolicy { - if v != nil { - return *v - } - var ret URLMapPathMatcherRouteRuleRouteActionCorsPolicy - return ret - }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) -} - -// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. -// This translates to the Access-Control-Allow-Credentials header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowCredentials() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { - if v == nil { - return nil - } - return v.AllowCredentials - }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Allow-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowHeaders - }).(pulumi.StringArrayOutput) -} - -// Specifies the content for the Access-Control-Allow-Methods header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowMethods() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowMethods - }).(pulumi.StringArrayOutput) -} - -// Specifies the regular expression patterns that match allowed origins. For regular expression grammar -// please see en.cppreference.com/w/cpp/regex/ecmascript -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOriginRegexes() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowOriginRegexes - }).(pulumi.StringArrayOutput) -} - -// Specifies the list of origins that will be allowed to do CORS requests. -// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOrigins() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.AllowOrigins - }).(pulumi.StringArrayOutput) -} - -// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Disabled() pulumi.BoolPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { - if v == nil { - return nil - } - return v.Disabled - }).(pulumi.BoolPtrOutput) -} - -// Specifies the content for the Access-Control-Expose-Headers header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ExposeHeaders() pulumi.StringArrayOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { - if v == nil { - return nil - } - return v.ExposeHeaders - }).(pulumi.StringArrayOutput) -} - -// Specifies how long results of a preflight request can be cached in seconds. -// This translates to the Access-Control-Max-Age header. -func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) MaxAge() pulumi.IntPtrOutput { - return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { - if v == nil { - return nil - } - return v.MaxAge - }).(pulumi.IntPtrOutput) -} - func init() { pulumi.RegisterInputType(reflect.TypeOf((*AutoscalarAutoscalingPolicyInput)(nil)).Elem(), AutoscalarAutoscalingPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AutoscalarAutoscalingPolicyPtrInput)(nil)).Elem(), AutoscalarAutoscalingPolicyArgs{}) @@ -90638,6 +90452,16 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*RegionPerInstanceConfigPreservedStateInternalIpIpAddressPtrInput)(nil)).Elem(), RegionPerInstanceConfigPreservedStateInternalIpIpAddressArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyDdosProtectionConfigInput)(nil)).Elem(), RegionSecurityPolicyDdosProtectionConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyDdosProtectionConfigPtrInput)(nil)).Elem(), RegionSecurityPolicyDdosProtectionConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleMatchInput)(nil)).Elem(), RegionSecurityPolicyRuleMatchArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleMatchPtrInput)(nil)).Elem(), RegionSecurityPolicyRuleMatchArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleMatchConfigInput)(nil)).Elem(), RegionSecurityPolicyRuleMatchConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleMatchConfigPtrInput)(nil)).Elem(), RegionSecurityPolicyRuleMatchConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatchInput)(nil)).Elem(), RegionSecurityPolicyRuleNetworkMatchArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatchPtrInput)(nil)).Elem(), RegionSecurityPolicyRuleNetworkMatchArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldInput)(nil)).Elem(), RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayInput)(nil)).Elem(), RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyUserDefinedFieldInput)(nil)).Elem(), RegionSecurityPolicyUserDefinedFieldArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyUserDefinedFieldArrayInput)(nil)).Elem(), RegionSecurityPolicyUserDefinedFieldArray{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionUrlMapDefaultRouteActionInput)(nil)).Elem(), RegionUrlMapDefaultRouteActionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionUrlMapDefaultRouteActionPtrInput)(nil)).Elem(), RegionUrlMapDefaultRouteActionArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*RegionUrlMapDefaultRouteActionCorsPolicyInput)(nil)).Elem(), RegionUrlMapDefaultRouteActionCorsPolicyArgs{}) @@ -91025,16 +90849,6 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) - pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) pulumi.RegisterOutputType(AutoscalarAutoscalingPolicyOutput{}) pulumi.RegisterOutputType(AutoscalarAutoscalingPolicyPtrOutput{}) pulumi.RegisterOutputType(AutoscalarAutoscalingPolicyCpuUtilizationOutput{}) @@ -91637,6 +91451,16 @@ func init() { pulumi.RegisterOutputType(RegionPerInstanceConfigPreservedStateInternalIpIpAddressPtrOutput{}) pulumi.RegisterOutputType(RegionSecurityPolicyDdosProtectionConfigOutput{}) pulumi.RegisterOutputType(RegionSecurityPolicyDdosProtectionConfigPtrOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleMatchOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleMatchPtrOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleMatchConfigOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleMatchConfigPtrOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleNetworkMatchOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleNetworkMatchPtrOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArrayOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyUserDefinedFieldOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyUserDefinedFieldArrayOutput{}) pulumi.RegisterOutputType(RegionUrlMapDefaultRouteActionOutput{}) pulumi.RegisterOutputType(RegionUrlMapDefaultRouteActionPtrOutput{}) pulumi.RegisterOutputType(RegionUrlMapDefaultRouteActionCorsPolicyOutput{}) @@ -92024,14 +91848,4 @@ func init() { pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArrayOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatchPtrOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionPtrOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput{}) - pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput{}) } diff --git a/sdk/go/gcp/compute/pulumiTypes1.go b/sdk/go/gcp/compute/pulumiTypes1.go index d864efdd96..072663f32a 100644 --- a/sdk/go/gcp/compute/pulumiTypes1.go +++ b/sdk/go/gcp/compute/pulumiTypes1.go @@ -13,6 +13,1068 @@ import ( var _ = internal.GetEnvOrDefault +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilter struct { + // The list of label value pairs that must match labels in the provided metadata + // based on filterMatchCriteria This list must not be empty and can have at the + // most 64 entries. + // Structure is documented below. + FilterLabels []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel `pulumi:"filterLabels"` + // Specifies how individual filterLabel matches within the list of filterLabels + // contribute towards the overall metadataFilter match. Supported values are: + // - MATCH_ANY: At least one of the filterLabels must have a matching label in the + // provided metadata. + // - MATCH_ALL: All filterLabels must have matching labels in + // the provided metadata. + // Possible values are: `MATCH_ALL`, `MATCH_ANY`. + FilterMatchCriteria string `pulumi:"filterMatchCriteria"` +} + +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput` via: +// +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{...} +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs struct { + // The list of label value pairs that must match labels in the provided metadata + // based on filterMatchCriteria This list must not be empty and can have at the + // most 64 entries. + // Structure is documented below. + FilterLabels URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput `pulumi:"filterLabels"` + // Specifies how individual filterLabel matches within the list of filterLabels + // contribute towards the overall metadataFilter match. Supported values are: + // - MATCH_ANY: At least one of the filterLabels must have a matching label in the + // provided metadata. + // - MATCH_ALL: All filterLabels must have matching labels in + // the provided metadata. + // Possible values are: `MATCH_ALL`, `MATCH_ANY`. + FilterMatchCriteria pulumi.StringInput `pulumi:"filterMatchCriteria"` +} + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { + return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) +} + +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput` via: +// +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{ URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{...} } +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { + return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { + return o +} + +// The list of label value pairs that must match labels in the provided metadata +// based on filterMatchCriteria This list must not be empty and can have at the +// most 64 entries. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) FilterLabels() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilter) []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel { + return v.FilterLabels + }).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) +} + +// Specifies how individual filterLabel matches within the list of filterLabels +// contribute towards the overall metadataFilter match. Supported values are: +// - MATCH_ANY: At least one of the filterLabels must have a matching label in the +// provided metadata. +// - MATCH_ALL: All filterLabels must have matching labels in +// the provided metadata. +// Possible values are: `MATCH_ALL`, `MATCH_ANY`. +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) FilterMatchCriteria() pulumi.StringOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilter) string { return v.FilterMatchCriteria }).(pulumi.StringOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput) Index(i pulumi.IntInput) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) URLMapPathMatcherRouteRuleMatchRuleMetadataFilter { + return vs[0].([]URLMapPathMatcherRouteRuleMatchRuleMetadataFilter)[vs[1].(int)] + }).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel struct { + // Name of metadata label. The name can have a maximum length of 1024 characters + // and must be at least 1 character long. + Name string `pulumi:"name"` + // The value of the label must match the specified value. value can have a maximum + // length of 1024 characters. + Value string `pulumi:"value"` +} + +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput` via: +// +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{...} +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs struct { + // Name of metadata label. The name can have a maximum length of 1024 characters + // and must be at least 1 character long. + Name pulumi.StringInput `pulumi:"name"` + // The value of the label must match the specified value. value can have a maximum + // length of 1024 characters. + Value pulumi.StringInput `pulumi:"value"` +} + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { + return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) +} + +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray and URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput` via: +// +// URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{ URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{...} } +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput + ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray []URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { + return i.ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { + return o +} + +// Name of metadata label. The name can have a maximum length of 1024 characters +// and must be at least 1 character long. +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel) string { return v.Name }).(pulumi.StringOutput) +} + +// The value of the label must match the specified value. value can have a maximum +// length of 1024 characters. +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput() URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput) Index(i pulumi.IntInput) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel { + return vs[0].([]URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel)[vs[1].(int)] + }).(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch struct { + // The queryParameterMatch matches if the value of the parameter exactly matches + // the contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch + // must be set. + ExactMatch *string `pulumi:"exactMatch"` + // The name of the query parameter to match. The query parameter must exist in the + // request, in the absence of which the request match fails. + Name string `pulumi:"name"` + // Specifies that the queryParameterMatch matches if the request contains the query + // parameter, irrespective of whether the parameter has a value or not. Only one of + // presentMatch, exactMatch and regexMatch must be set. + PresentMatch *bool `pulumi:"presentMatch"` + // The queryParameterMatch matches if the value of the parameter matches the + // regular expression specified by regexMatch. For the regular expression grammar, + // please see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch, + // exactMatch and regexMatch must be set. + RegexMatch *string `pulumi:"regexMatch"` +} + +// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs and URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput` via: +// +// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{...} +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput + ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput +} + +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs struct { + // The queryParameterMatch matches if the value of the parameter exactly matches + // the contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch + // must be set. + ExactMatch pulumi.StringPtrInput `pulumi:"exactMatch"` + // The name of the query parameter to match. The query parameter must exist in the + // request, in the absence of which the request match fails. + Name pulumi.StringInput `pulumi:"name"` + // Specifies that the queryParameterMatch matches if the request contains the query + // parameter, irrespective of whether the parameter has a value or not. Only one of + // presentMatch, exactMatch and regexMatch must be set. + PresentMatch pulumi.BoolPtrInput `pulumi:"presentMatch"` + // The queryParameterMatch matches if the value of the parameter matches the + // regular expression specified by regexMatch. For the regular expression grammar, + // please see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch, + // exactMatch and regexMatch must be set. + RegexMatch pulumi.StringPtrInput `pulumi:"regexMatch"` +} + +func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { + return i.ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) +} + +// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput is an input type that accepts URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray and URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput` via: +// +// URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{ URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{...} } +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput + ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput +} + +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray []URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput + +func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { + return i.ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { + return o +} + +// The queryParameterMatch matches if the value of the parameter exactly matches +// the contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch +// must be set. +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) ExactMatch() pulumi.StringPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) *string { return v.ExactMatch }).(pulumi.StringPtrOutput) +} + +// The name of the query parameter to match. The query parameter must exist in the +// request, in the absence of which the request match fails. +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) string { return v.Name }).(pulumi.StringOutput) +} + +// Specifies that the queryParameterMatch matches if the request contains the query +// parameter, irrespective of whether the parameter has a value or not. Only one of +// presentMatch, exactMatch and regexMatch must be set. +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) PresentMatch() pulumi.BoolPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) *bool { return v.PresentMatch }).(pulumi.BoolPtrOutput) +} + +// The queryParameterMatch matches if the value of the parameter matches the +// regular expression specified by regexMatch. For the regular expression grammar, +// please see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch, +// exactMatch and regexMatch must be set. +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) RegexMatch() pulumi.StringPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch) *string { return v.RegexMatch }).(pulumi.StringPtrOutput) +} + +type URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput() URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) ToURLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput) Index(i pulumi.IntInput) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch { + return vs[0].([]URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch)[vs[1].(int)] + }).(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput) +} + +type URLMapPathMatcherRouteRuleRouteAction struct { + // The specification for allowing client side cross-origin requests. Please see W3C + // Recommendation for Cross Origin Resource Sharing + // Structure is documented below. + CorsPolicy *URLMapPathMatcherRouteRuleRouteActionCorsPolicy `pulumi:"corsPolicy"` + // The specification for fault injection introduced into traffic to test the + // resiliency of clients to backend service failure. As part of fault injection, + // when clients send requests to a backend service, delays can be introduced by + // Loadbalancer on a percentage of requests before sending those request to the + // backend service. Similarly requests from clients can be aborted by the + // Loadbalancer for a percentage of requests. timeout and retryPolicy will be + // ignored by clients that are configured with a fault_injection_policy. + // Structure is documented below. + FaultInjectionPolicy *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy `pulumi:"faultInjectionPolicy"` + // Specifies the policy on how requests intended for the route's backends are + // shadowed to a separate mirrored backend service. Loadbalancer does not wait for + // responses from the shadow service. Prior to sending traffic to the shadow + // service, the host / authority header is suffixed with -shadow. + // Structure is documented below. + RequestMirrorPolicy *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy `pulumi:"requestMirrorPolicy"` + // Specifies the retry policy associated with this route. + // Structure is documented below. + RetryPolicy *URLMapPathMatcherRouteRuleRouteActionRetryPolicy `pulumi:"retryPolicy"` + // Specifies the timeout for the selected route. Timeout is computed from the time + // the request is has been fully processed (i.e. end-of-stream) up until the + // response has been completely processed. Timeout includes all retries. If not + // specified, the default value is 15 seconds. + // Structure is documented below. + Timeout *URLMapPathMatcherRouteRuleRouteActionTimeout `pulumi:"timeout"` + // The spec to modify the URL of the request, prior to forwarding the request to + // the matched service + // Structure is documented below. + UrlRewrite *URLMapPathMatcherRouteRuleRouteActionUrlRewrite `pulumi:"urlRewrite"` + // A list of weighted backend services to send traffic to when a route match + // occurs. The weights determine the fraction of traffic that flows to their + // corresponding backend service. If all traffic needs to go to a single backend + // service, there must be one weightedBackendService with weight set to a non 0 + // number. Once a backendService is identified and before forwarding the request to + // the backend service, advanced routing actions like Url rewrites and header + // transformations are applied depending on additional settings specified in this + // HttpRouteAction. + // Structure is documented below. + WeightedBackendServices []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService `pulumi:"weightedBackendServices"` +} + +// URLMapPathMatcherRouteRuleRouteActionInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs and URLMapPathMatcherRouteRuleRouteActionOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionArgs{...} +type URLMapPathMatcherRouteRuleRouteActionInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput + ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionOutput +} + +type URLMapPathMatcherRouteRuleRouteActionArgs struct { + // The specification for allowing client side cross-origin requests. Please see W3C + // Recommendation for Cross Origin Resource Sharing + // Structure is documented below. + CorsPolicy URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput `pulumi:"corsPolicy"` + // The specification for fault injection introduced into traffic to test the + // resiliency of clients to backend service failure. As part of fault injection, + // when clients send requests to a backend service, delays can be introduced by + // Loadbalancer on a percentage of requests before sending those request to the + // backend service. Similarly requests from clients can be aborted by the + // Loadbalancer for a percentage of requests. timeout and retryPolicy will be + // ignored by clients that are configured with a fault_injection_policy. + // Structure is documented below. + FaultInjectionPolicy URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrInput `pulumi:"faultInjectionPolicy"` + // Specifies the policy on how requests intended for the route's backends are + // shadowed to a separate mirrored backend service. Loadbalancer does not wait for + // responses from the shadow service. Prior to sending traffic to the shadow + // service, the host / authority header is suffixed with -shadow. + // Structure is documented below. + RequestMirrorPolicy URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrInput `pulumi:"requestMirrorPolicy"` + // Specifies the retry policy associated with this route. + // Structure is documented below. + RetryPolicy URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrInput `pulumi:"retryPolicy"` + // Specifies the timeout for the selected route. Timeout is computed from the time + // the request is has been fully processed (i.e. end-of-stream) up until the + // response has been completely processed. Timeout includes all retries. If not + // specified, the default value is 15 seconds. + // Structure is documented below. + Timeout URLMapPathMatcherRouteRuleRouteActionTimeoutPtrInput `pulumi:"timeout"` + // The spec to modify the URL of the request, prior to forwarding the request to + // the matched service + // Structure is documented below. + UrlRewrite URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrInput `pulumi:"urlRewrite"` + // A list of weighted backend services to send traffic to when a route match + // occurs. The weights determine the fraction of traffic that flows to their + // corresponding backend service. If all traffic needs to go to a single backend + // service, there must be one weightedBackendService with weight set to a non 0 + // number. Once a backendService is identified and before forwarding the request to + // the backend service, advanced routing actions like Url rewrites and header + // transformations are applied depending on additional settings specified in this + // HttpRouteAction. + // Structure is documented below. + WeightedBackendServices URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayInput `pulumi:"weightedBackendServices"` +} + +func (URLMapPathMatcherRouteRuleRouteActionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput) +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionArgs) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionOutput).ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx) +} + +// URLMapPathMatcherRouteRuleRouteActionPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionArgs, URLMapPathMatcherRouteRuleRouteActionPtr and URLMapPathMatcherRouteRuleRouteActionPtrOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionPtrInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionArgs{...} +// +// or: +// +// nil +type URLMapPathMatcherRouteRuleRouteActionPtrInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput + ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput +} + +type urlmapPathMatcherRouteRuleRouteActionPtrType URLMapPathMatcherRouteRuleRouteActionArgs + +func URLMapPathMatcherRouteRuleRouteActionPtr(v *URLMapPathMatcherRouteRuleRouteActionArgs) URLMapPathMatcherRouteRuleRouteActionPtrInput { + return (*urlmapPathMatcherRouteRuleRouteActionPtrType)(v) +} + +func (*urlmapPathMatcherRouteRuleRouteActionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) +} + +func (i *urlmapPathMatcherRouteRuleRouteActionPtrType) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutput() URLMapPathMatcherRouteRuleRouteActionOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o.ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(context.Background()) +} + +func (o URLMapPathMatcherRouteRuleRouteActionOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteAction { + return &v + }).(URLMapPathMatcherRouteRuleRouteActionPtrOutput) +} + +// The specification for allowing client side cross-origin requests. Please see W3C +// Recommendation for Cross Origin Resource Sharing +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + return v.CorsPolicy + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +// The specification for fault injection introduced into traffic to test the +// resiliency of clients to backend service failure. As part of fault injection, +// when clients send requests to a backend service, delays can be introduced by +// Loadbalancer on a percentage of requests before sending those request to the +// backend service. Similarly requests from clients can be aborted by the +// Loadbalancer for a percentage of requests. timeout and retryPolicy will be +// ignored by clients that are configured with a fault_injection_policy. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { + return v.FaultInjectionPolicy + }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) +} + +// Specifies the policy on how requests intended for the route's backends are +// shadowed to a separate mirrored backend service. Loadbalancer does not wait for +// responses from the shadow service. Prior to sending traffic to the shadow +// service, the host / authority header is suffixed with -shadow. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { + return v.RequestMirrorPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) +} + +// Specifies the retry policy associated with this route. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { + return v.RetryPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) +} + +// Specifies the timeout for the selected route. Timeout is computed from the time +// the request is has been fully processed (i.e. end-of-stream) up until the +// response has been completely processed. Timeout includes all retries. If not +// specified, the default value is 15 seconds. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { + return v.Timeout + }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) +} + +// The spec to modify the URL of the request, prior to forwarding the request to +// the matched service +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { + return v.UrlRewrite + }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) +} + +// A list of weighted backend services to send traffic to when a route match +// occurs. The weights determine the fraction of traffic that flows to their +// corresponding backend service. If all traffic needs to go to a single backend +// service, there must be one weightedBackendService with weight set to a non 0 +// number. Once a backendService is identified and before forwarding the request to +// the backend service, advanced routing actions like Url rewrites and header +// transformations are applied depending on additional settings specified in this +// HttpRouteAction. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { + return v.WeightedBackendServices + }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionPtrOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteAction)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutput() URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) URLMapPathMatcherRouteRuleRouteAction { + if v != nil { + return *v + } + var ret URLMapPathMatcherRouteRuleRouteAction + return ret + }).(URLMapPathMatcherRouteRuleRouteActionOutput) +} + +// The specification for allowing client side cross-origin requests. Please see W3C +// Recommendation for Cross Origin Resource Sharing +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) CorsPolicy() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + if v == nil { + return nil + } + return v.CorsPolicy + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +// The specification for fault injection introduced into traffic to test the +// resiliency of clients to backend service failure. As part of fault injection, +// when clients send requests to a backend service, delays can be introduced by +// Loadbalancer on a percentage of requests before sending those request to the +// backend service. Similarly requests from clients can be aborted by the +// Loadbalancer for a percentage of requests. timeout and retryPolicy will be +// ignored by clients that are configured with a fault_injection_policy. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) FaultInjectionPolicy() URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy { + if v == nil { + return nil + } + return v.FaultInjectionPolicy + }).(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput) +} + +// Specifies the policy on how requests intended for the route's backends are +// shadowed to a separate mirrored backend service. Loadbalancer does not wait for +// responses from the shadow service. Prior to sending traffic to the shadow +// service, the host / authority header is suffixed with -shadow. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RequestMirrorPolicy() URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy { + if v == nil { + return nil + } + return v.RequestMirrorPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicyPtrOutput) +} + +// Specifies the retry policy associated with this route. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) RetryPolicy() URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionRetryPolicy { + if v == nil { + return nil + } + return v.RetryPolicy + }).(URLMapPathMatcherRouteRuleRouteActionRetryPolicyPtrOutput) +} + +// Specifies the timeout for the selected route. Timeout is computed from the time +// the request is has been fully processed (i.e. end-of-stream) up until the +// response has been completely processed. Timeout includes all retries. If not +// specified, the default value is 15 seconds. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) Timeout() URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionTimeout { + if v == nil { + return nil + } + return v.Timeout + }).(URLMapPathMatcherRouteRuleRouteActionTimeoutPtrOutput) +} + +// The spec to modify the URL of the request, prior to forwarding the request to +// the matched service +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) UrlRewrite() URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) *URLMapPathMatcherRouteRuleRouteActionUrlRewrite { + if v == nil { + return nil + } + return v.UrlRewrite + }).(URLMapPathMatcherRouteRuleRouteActionUrlRewritePtrOutput) +} + +// A list of weighted backend services to send traffic to when a route match +// occurs. The weights determine the fraction of traffic that flows to their +// corresponding backend service. If all traffic needs to go to a single backend +// service, there must be one weightedBackendService with weight set to a non 0 +// number. Once a backendService is identified and before forwarding the request to +// the backend service, advanced routing actions like Url rewrites and header +// transformations are applied depending on additional settings specified in this +// HttpRouteAction. +// Structure is documented below. +func (o URLMapPathMatcherRouteRuleRouteActionPtrOutput) WeightedBackendServices() URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteAction) []URLMapPathMatcherRouteRuleRouteActionWeightedBackendService { + if v == nil { + return nil + } + return v.WeightedBackendServices + }).(URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceArrayOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicy struct { + // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. + // This translates to the Access-Control-Allow-Credentials header. + AllowCredentials *bool `pulumi:"allowCredentials"` + // Specifies the content for the Access-Control-Allow-Headers header. + AllowHeaders []string `pulumi:"allowHeaders"` + // Specifies the content for the Access-Control-Allow-Methods header. + AllowMethods []string `pulumi:"allowMethods"` + // Specifies the regular expression patterns that match allowed origins. For regular expression grammar + // please see en.cppreference.com/w/cpp/regex/ecmascript + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOriginRegexes []string `pulumi:"allowOriginRegexes"` + // Specifies the list of origins that will be allowed to do CORS requests. + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOrigins []string `pulumi:"allowOrigins"` + // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. + Disabled *bool `pulumi:"disabled"` + // Specifies the content for the Access-Control-Expose-Headers header. + ExposeHeaders []string `pulumi:"exposeHeaders"` + // Specifies how long results of a preflight request can be cached in seconds. + // This translates to the Access-Control-Max-Age header. + MaxAge *int `pulumi:"maxAge"` +} + +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs and URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs struct { + // In response to a preflight request, setting this to true indicates that the actual request can include user credentials. + // This translates to the Access-Control-Allow-Credentials header. + AllowCredentials pulumi.BoolPtrInput `pulumi:"allowCredentials"` + // Specifies the content for the Access-Control-Allow-Headers header. + AllowHeaders pulumi.StringArrayInput `pulumi:"allowHeaders"` + // Specifies the content for the Access-Control-Allow-Methods header. + AllowMethods pulumi.StringArrayInput `pulumi:"allowMethods"` + // Specifies the regular expression patterns that match allowed origins. For regular expression grammar + // please see en.cppreference.com/w/cpp/regex/ecmascript + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOriginRegexes pulumi.StringArrayInput `pulumi:"allowOriginRegexes"` + // Specifies the list of origins that will be allowed to do CORS requests. + // An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. + AllowOrigins pulumi.StringArrayInput `pulumi:"allowOrigins"` + // If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. + Disabled pulumi.BoolPtrInput `pulumi:"disabled"` + // Specifies the content for the Access-Control-Expose-Headers header. + ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` + // Specifies how long results of a preflight request can be cached in seconds. + // This translates to the Access-Control-Max-Age header. + MaxAge pulumi.IntPtrInput `pulumi:"maxAge"` +} + +func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) +} + +func (i URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput).ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx) +} + +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput is an input type that accepts URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs, URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr and URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput values. +// You can construct a concrete instance of `URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput` via: +// +// URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{...} +// +// or: +// +// nil +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput interface { + pulumi.Input + + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput + ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput +} + +type urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs + +func URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtr(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput { + return (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType)(v) +} + +func (*urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return i.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) +} + +func (i *urlmapPathMatcherRouteRuleRouteActionCorsPolicyPtrType) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(context.Background()) +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + return &v + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) +} + +// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. +// This translates to the Access-Control-Allow-Credentials header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowCredentials() pulumi.BoolPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.AllowCredentials }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Allow-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies the content for the Access-Control-Allow-Methods header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowMethods }).(pulumi.StringArrayOutput) +} + +// Specifies the regular expression patterns that match allowed origins. For regular expression grammar +// please see en.cppreference.com/w/cpp/regex/ecmascript +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOriginRegexes() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOriginRegexes }).(pulumi.StringArrayOutput) +} + +// Specifies the list of origins that will be allowed to do CORS requests. +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) AllowOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.AllowOrigins }).(pulumi.StringArrayOutput) +} + +// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) Disabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { return v.Disabled }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Expose-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies how long results of a preflight request can be cached in seconds. +// This translates to the Access-Control-Max-Age header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) MaxAge() pulumi.IntPtrOutput { + return o.ApplyT(func(v URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { return v.MaxAge }).(pulumi.IntPtrOutput) +} + +type URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput struct{ *pulumi.OutputState } + +func (URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**URLMapPathMatcherRouteRuleRouteActionCorsPolicy)(nil)).Elem() +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput() URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ToURLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutputWithContext(ctx context.Context) URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput { + return o +} + +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Elem() URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) URLMapPathMatcherRouteRuleRouteActionCorsPolicy { + if v != nil { + return *v + } + var ret URLMapPathMatcherRouteRuleRouteActionCorsPolicy + return ret + }).(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput) +} + +// In response to a preflight request, setting this to true indicates that the actual request can include user credentials. +// This translates to the Access-Control-Allow-Credentials header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowCredentials() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { + if v == nil { + return nil + } + return v.AllowCredentials + }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Allow-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowHeaders + }).(pulumi.StringArrayOutput) +} + +// Specifies the content for the Access-Control-Allow-Methods header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowMethods + }).(pulumi.StringArrayOutput) +} + +// Specifies the regular expression patterns that match allowed origins. For regular expression grammar +// please see en.cppreference.com/w/cpp/regex/ecmascript +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOriginRegexes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowOriginRegexes + }).(pulumi.StringArrayOutput) +} + +// Specifies the list of origins that will be allowed to do CORS requests. +// An origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) AllowOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.AllowOrigins + }).(pulumi.StringArrayOutput) +} + +// If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) Disabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *bool { + if v == nil { + return nil + } + return v.Disabled + }).(pulumi.BoolPtrOutput) +} + +// Specifies the content for the Access-Control-Expose-Headers header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) []string { + if v == nil { + return nil + } + return v.ExposeHeaders + }).(pulumi.StringArrayOutput) +} + +// Specifies how long results of a preflight request can be cached in seconds. +// This translates to the Access-Control-Max-Age header. +func (o URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput) MaxAge() pulumi.IntPtrOutput { + return o.ApplyT(func(v *URLMapPathMatcherRouteRuleRouteActionCorsPolicy) *int { + if v == nil { + return nil + } + return v.MaxAge + }).(pulumi.IntPtrOutput) +} + type URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy struct { // The specification for how client requests are aborted as part of fault injection. // Structure is documented below. @@ -11586,7 +12648,8 @@ type GetInstanceTemplateDisk struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode string `pulumi:"mode"` + Mode string `pulumi:"mode"` + ProvisionedIops int `pulumi:"provisionedIops"` // (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies []string `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -11652,7 +12715,8 @@ type GetInstanceTemplateDiskArgs struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode pulumi.StringInput `pulumi:"mode"` + Mode pulumi.StringInput `pulumi:"mode"` + ProvisionedIops pulumi.IntInput `pulumi:"provisionedIops"` // (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies pulumi.StringArrayInput `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -11790,6 +12854,10 @@ func (o GetInstanceTemplateDiskOutput) Mode() pulumi.StringOutput { return o.ApplyT(func(v GetInstanceTemplateDisk) string { return v.Mode }).(pulumi.StringOutput) } +func (o GetInstanceTemplateDiskOutput) ProvisionedIops() pulumi.IntOutput { + return o.ApplyT(func(v GetInstanceTemplateDisk) int { return v.ProvisionedIops }).(pulumi.IntOutput) +} + // (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. func (o GetInstanceTemplateDiskOutput) ResourcePolicies() pulumi.StringArrayOutput { return o.ApplyT(func(v GetInstanceTemplateDisk) []string { return v.ResourcePolicies }).(pulumi.StringArrayOutput) @@ -14376,7 +15444,8 @@ type GetRegionInstanceTemplateDisk struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode string `pulumi:"mode"` + Mode string `pulumi:"mode"` + ProvisionedIops int `pulumi:"provisionedIops"` // (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies []string `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -14442,7 +15511,8 @@ type GetRegionInstanceTemplateDiskArgs struct { // The mode in which to attach this disk, either READ_WRITE // or READ_ONLY. If you are attaching or creating a boot disk, this must // read-write mode. - Mode pulumi.StringInput `pulumi:"mode"` + Mode pulumi.StringInput `pulumi:"mode"` + ProvisionedIops pulumi.IntInput `pulumi:"provisionedIops"` // (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. ResourcePolicies pulumi.StringArrayInput `pulumi:"resourcePolicies"` // The name (**not self_link**) @@ -14580,6 +15650,10 @@ func (o GetRegionInstanceTemplateDiskOutput) Mode() pulumi.StringOutput { return o.ApplyT(func(v GetRegionInstanceTemplateDisk) string { return v.Mode }).(pulumi.StringOutput) } +func (o GetRegionInstanceTemplateDiskOutput) ProvisionedIops() pulumi.IntOutput { + return o.ApplyT(func(v GetRegionInstanceTemplateDisk) int { return v.ProvisionedIops }).(pulumi.IntOutput) +} + // (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. func (o GetRegionInstanceTemplateDiskOutput) ResourcePolicies() pulumi.StringArrayOutput { return o.ApplyT(func(v GetRegionInstanceTemplateDisk) []string { return v.ResourcePolicies }).(pulumi.StringArrayOutput) @@ -19814,6 +20888,16 @@ func (o GetSubnetworkSecondaryIpRangeArrayOutput) Index(i pulumi.IntInput) GetSu } func init() { + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayInput)(nil)).Elem(), URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionCorsPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbortInput)(nil)).Elem(), URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbortArgs{}) @@ -20138,6 +21222,16 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*GetSnapshotSourceDiskEncryptionKeyArrayInput)(nil)).Elem(), GetSnapshotSourceDiskEncryptionKeyArray{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSubnetworkSecondaryIpRangeInput)(nil)).Elem(), GetSubnetworkSecondaryIpRangeArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*GetSubnetworkSecondaryIpRangeArrayInput)(nil)).Elem(), GetSubnetworkSecondaryIpRangeArray{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArrayOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArrayOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArrayOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionPtrOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyOutput{}) + pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionCorsPolicyPtrOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyPtrOutput{}) pulumi.RegisterOutputType(URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbortOutput{}) diff --git a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go index 07824c3b30..447c534a09 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go +++ b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go @@ -155,7 +155,7 @@ import ( // } // appengineNegBucketObject, err := storage.NewBucketObject(ctx, "appengineNegBucketObject", &storage.BucketObjectArgs{ // Bucket: appengineNegBucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/appengine/hello-world.zip"), +// Source: pulumi.NewFileAsset("./test-fixtures/hello-world.zip"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/compute/regionSecurityPolicy.go b/sdk/go/gcp/compute/regionSecurityPolicy.go index 686681f927..ff37656cc9 100644 --- a/sdk/go/gcp/compute/regionSecurityPolicy.go +++ b/sdk/go/gcp/compute/regionSecurityPolicy.go @@ -67,6 +67,48 @@ import ( // } // // ``` +// ### Region Security Policy With User Defined Fields +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := compute.NewRegionSecurityPolicy(ctx, "region-sec-policy-user-defined-fields", &compute.RegionSecurityPolicyArgs{ +// Description: pulumi.String("with user defined fields"), +// Type: pulumi.String("CLOUD_ARMOR_NETWORK"), +// UserDefinedFields: compute.RegionSecurityPolicyUserDefinedFieldArray{ +// &compute.RegionSecurityPolicyUserDefinedFieldArgs{ +// Name: pulumi.String("SIG1_AT_0"), +// Base: pulumi.String("UDP"), +// Offset: pulumi.Int(8), +// Size: pulumi.Int(2), +// Mask: pulumi.String("0x8F00"), +// }, +// &compute.RegionSecurityPolicyUserDefinedFieldArgs{ +// Name: pulumi.String("SIG2_AT_8"), +// Base: pulumi.String("UDP"), +// Offset: pulumi.Int(16), +// Size: pulumi.Int(4), +// Mask: pulumi.String("0xFFFFFFFF"), +// }, +// }, +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // @@ -130,6 +172,11 @@ type RegionSecurityPolicy struct { // This field can be set only at resource creation time. // Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. Type pulumi.StringPtrOutput `pulumi:"type"` + // Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + // A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + // Rules may then specify matching values for these fields. + // Structure is documented below. + UserDefinedFields RegionSecurityPolicyUserDefinedFieldArrayOutput `pulumi:"userDefinedFields"` } // NewRegionSecurityPolicy registers a new resource with the given unique name, arguments, and options. @@ -194,6 +241,11 @@ type regionSecurityPolicyState struct { // This field can be set only at resource creation time. // Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. Type *string `pulumi:"type"` + // Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + // A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + // Rules may then specify matching values for these fields. + // Structure is documented below. + UserDefinedFields []RegionSecurityPolicyUserDefinedField `pulumi:"userDefinedFields"` } type RegionSecurityPolicyState struct { @@ -229,6 +281,11 @@ type RegionSecurityPolicyState struct { // This field can be set only at resource creation time. // Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. Type pulumi.StringPtrInput + // Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + // A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + // Rules may then specify matching values for these fields. + // Structure is documented below. + UserDefinedFields RegionSecurityPolicyUserDefinedFieldArrayInput } func (RegionSecurityPolicyState) ElementType() reflect.Type { @@ -259,6 +316,11 @@ type regionSecurityPolicyArgs struct { // This field can be set only at resource creation time. // Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. Type *string `pulumi:"type"` + // Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + // A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + // Rules may then specify matching values for these fields. + // Structure is documented below. + UserDefinedFields []RegionSecurityPolicyUserDefinedField `pulumi:"userDefinedFields"` } // The set of arguments for constructing a RegionSecurityPolicy resource. @@ -286,6 +348,11 @@ type RegionSecurityPolicyArgs struct { // This field can be set only at resource creation time. // Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. Type pulumi.StringPtrInput + // Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + // A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + // Rules may then specify matching values for these fields. + // Structure is documented below. + UserDefinedFields RegionSecurityPolicyUserDefinedFieldArrayInput } func (RegionSecurityPolicyArgs) ElementType() reflect.Type { @@ -439,6 +506,16 @@ func (o RegionSecurityPolicyOutput) Type() pulumi.StringPtrOutput { return o.ApplyT(func(v *RegionSecurityPolicy) pulumi.StringPtrOutput { return v.Type }).(pulumi.StringPtrOutput) } +// Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. +// A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. +// Rules may then specify matching values for these fields. +// Structure is documented below. +func (o RegionSecurityPolicyOutput) UserDefinedFields() RegionSecurityPolicyUserDefinedFieldArrayOutput { + return o.ApplyT(func(v *RegionSecurityPolicy) RegionSecurityPolicyUserDefinedFieldArrayOutput { + return v.UserDefinedFields + }).(RegionSecurityPolicyUserDefinedFieldArrayOutput) +} + type RegionSecurityPolicyArrayOutput struct{ *pulumi.OutputState } func (RegionSecurityPolicyArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/gcp/compute/regionSecurityPolicyRule.go b/sdk/go/gcp/compute/regionSecurityPolicyRule.go new file mode 100644 index 0000000000..f4c653cff5 --- /dev/null +++ b/sdk/go/gcp/compute/regionSecurityPolicyRule.go @@ -0,0 +1,689 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package compute + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Example Usage +// ### Region Security Policy Rule Basic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ +// Region: pulumi.String("us-west2"), +// Description: pulumi.String("basic region security policy"), +// Type: pulumi.String("CLOUD_ARMOR"), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// _, err = compute.NewRegionSecurityPolicyRule(ctx, "policyRule", &compute.RegionSecurityPolicyRuleArgs{ +// Region: pulumi.String("us-west2"), +// SecurityPolicy: _default.Name, +// Description: pulumi.String("new rule"), +// Priority: pulumi.Int(100), +// Match: &compute.RegionSecurityPolicyRuleMatchArgs{ +// VersionedExpr: pulumi.String("SRC_IPS_V1"), +// Config: &compute.RegionSecurityPolicyRuleMatchConfigArgs{ +// SrcIpRanges: pulumi.StringArray{ +// pulumi.String("10.10.0.0/16"), +// }, +// }, +// }, +// Action: pulumi.String("allow"), +// Preview: pulumi.Bool(true), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Region Security Policy Rule Multiple Rules +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ +// Region: pulumi.String("us-west2"), +// Description: pulumi.String("basic region security policy"), +// Type: pulumi.String("CLOUD_ARMOR"), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// _, err = compute.NewRegionSecurityPolicyRule(ctx, "policyRuleOne", &compute.RegionSecurityPolicyRuleArgs{ +// Region: pulumi.String("us-west2"), +// SecurityPolicy: _default.Name, +// Description: pulumi.String("new rule one"), +// Priority: pulumi.Int(100), +// Match: &compute.RegionSecurityPolicyRuleMatchArgs{ +// VersionedExpr: pulumi.String("SRC_IPS_V1"), +// Config: &compute.RegionSecurityPolicyRuleMatchConfigArgs{ +// SrcIpRanges: pulumi.StringArray{ +// pulumi.String("10.10.0.0/16"), +// }, +// }, +// }, +// Action: pulumi.String("allow"), +// Preview: pulumi.Bool(true), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// _, err = compute.NewRegionSecurityPolicyRule(ctx, "policyRuleTwo", &compute.RegionSecurityPolicyRuleArgs{ +// Region: pulumi.String("us-west2"), +// SecurityPolicy: _default.Name, +// Description: pulumi.String("new rule two"), +// Priority: pulumi.Int(101), +// Match: &compute.RegionSecurityPolicyRuleMatchArgs{ +// VersionedExpr: pulumi.String("SRC_IPS_V1"), +// Config: &compute.RegionSecurityPolicyRuleMatchConfigArgs{ +// SrcIpRanges: pulumi.StringArray{ +// pulumi.String("192.168.0.0/16"), +// pulumi.String("10.0.0.0/8"), +// }, +// }, +// }, +// Action: pulumi.String("allow"), +// Preview: pulumi.Bool(true), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Region Security Policy Rule With Network Match +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/compute" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// policyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, "policyddosprotection", &compute.RegionSecurityPolicyArgs{ +// Region: pulumi.String("us-west2"), +// Description: pulumi.String("policy for activating network DDoS protection for the desired region"), +// Type: pulumi.String("CLOUD_ARMOR_NETWORK"), +// DdosProtectionConfig: &compute.RegionSecurityPolicyDdosProtectionConfigArgs{ +// DdosProtection: pulumi.String("ADVANCED_PREVIEW"), +// }, +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// edgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, "edgeSecService", &compute.NetworkEdgeSecurityServiceArgs{ +// Region: pulumi.String("us-west2"), +// Description: pulumi.String("linking policy to edge security service"), +// SecurityPolicy: policyddosprotection.SelfLink, +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// policynetworkmatch, err := compute.NewRegionSecurityPolicy(ctx, "policynetworkmatch", &compute.RegionSecurityPolicyArgs{ +// Region: pulumi.String("us-west2"), +// Description: pulumi.String("region security policy for network match"), +// Type: pulumi.String("CLOUD_ARMOR_NETWORK"), +// UserDefinedFields: compute.RegionSecurityPolicyUserDefinedFieldArray{ +// &compute.RegionSecurityPolicyUserDefinedFieldArgs{ +// Name: pulumi.String("SIG1_AT_0"), +// Base: pulumi.String("TCP"), +// Offset: pulumi.Int(8), +// Size: pulumi.Int(2), +// Mask: pulumi.String("0x8F00"), +// }, +// }, +// }, pulumi.Provider(google_beta), pulumi.DependsOn([]pulumi.Resource{ +// edgeSecService, +// })) +// if err != nil { +// return err +// } +// _, err = compute.NewRegionSecurityPolicyRule(ctx, "policyRuleNetworkMatch", &compute.RegionSecurityPolicyRuleArgs{ +// Region: pulumi.String("us-west2"), +// SecurityPolicy: policynetworkmatch.Name, +// Description: pulumi.String("custom rule for network match"), +// Priority: pulumi.Int(100), +// NetworkMatch: &compute.RegionSecurityPolicyRuleNetworkMatchArgs{ +// SrcIpRanges: pulumi.StringArray{ +// pulumi.String("10.10.0.0/16"), +// }, +// UserDefinedFields: compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray{ +// &compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{ +// Name: pulumi.String("SIG1_AT_0"), +// Values: pulumi.StringArray{ +// pulumi.String("0x8F00"), +// }, +// }, +// }, +// }, +// Action: pulumi.String("allow"), +// Preview: pulumi.Bool(true), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// # RegionSecurityPolicyRule can be imported using any of these accepted formats +// +// ```sh +// +// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}} +// +// ``` +// +// ```sh +// +// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}} +// +// ``` +// +// ```sh +// +// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}} +// +// ``` +// +// ```sh +// +// $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}} +// +// ``` +type RegionSecurityPolicyRule struct { + pulumi.CustomResourceState + + // The Action to perform when the rule is matched. The following are the valid actions: + // * allow: allow access to target. + // * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + // * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + // * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + // * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + Action pulumi.StringOutput `pulumi:"action"` + // An optional description of this resource. Provide this property when you create the resource. + Description pulumi.StringPtrOutput `pulumi:"description"` + // A match condition that incoming traffic is evaluated against. + // If it evaluates to true, the corresponding 'action' is enforced. + // Structure is documented below. + Match RegionSecurityPolicyRuleMatchPtrOutput `pulumi:"match"` + // A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + // The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + // Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + // Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + // For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + // Example: + // networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + // The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + // Structure is documented below. + NetworkMatch RegionSecurityPolicyRuleNetworkMatchPtrOutput `pulumi:"networkMatch"` + // If set to true, the specified action is not enforced. + Preview pulumi.BoolPtrOutput `pulumi:"preview"` + // An integer indicating the priority of a rule in the list. + // The priority must be a positive value between 0 and 2147483647. + // Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + Priority pulumi.IntOutput `pulumi:"priority"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringOutput `pulumi:"project"` + // The Region in which the created Region Security Policy rule should reside. + Region pulumi.StringOutput `pulumi:"region"` + // The name of the security policy this rule belongs to. + // + // *** + SecurityPolicy pulumi.StringOutput `pulumi:"securityPolicy"` +} + +// NewRegionSecurityPolicyRule registers a new resource with the given unique name, arguments, and options. +func NewRegionSecurityPolicyRule(ctx *pulumi.Context, + name string, args *RegionSecurityPolicyRuleArgs, opts ...pulumi.ResourceOption) (*RegionSecurityPolicyRule, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Action == nil { + return nil, errors.New("invalid value for required argument 'Action'") + } + if args.Priority == nil { + return nil, errors.New("invalid value for required argument 'Priority'") + } + if args.Region == nil { + return nil, errors.New("invalid value for required argument 'Region'") + } + if args.SecurityPolicy == nil { + return nil, errors.New("invalid value for required argument 'SecurityPolicy'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RegionSecurityPolicyRule + err := ctx.RegisterResource("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRegionSecurityPolicyRule gets an existing RegionSecurityPolicyRule resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetRegionSecurityPolicyRule(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RegionSecurityPolicyRuleState, opts ...pulumi.ResourceOption) (*RegionSecurityPolicyRule, error) { + var resource RegionSecurityPolicyRule + err := ctx.ReadResource("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RegionSecurityPolicyRule resources. +type regionSecurityPolicyRuleState struct { + // The Action to perform when the rule is matched. The following are the valid actions: + // * allow: allow access to target. + // * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + // * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + // * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + // * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + Action *string `pulumi:"action"` + // An optional description of this resource. Provide this property when you create the resource. + Description *string `pulumi:"description"` + // A match condition that incoming traffic is evaluated against. + // If it evaluates to true, the corresponding 'action' is enforced. + // Structure is documented below. + Match *RegionSecurityPolicyRuleMatch `pulumi:"match"` + // A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + // The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + // Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + // Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + // For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + // Example: + // networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + // The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + // Structure is documented below. + NetworkMatch *RegionSecurityPolicyRuleNetworkMatch `pulumi:"networkMatch"` + // If set to true, the specified action is not enforced. + Preview *bool `pulumi:"preview"` + // An integer indicating the priority of a rule in the list. + // The priority must be a positive value between 0 and 2147483647. + // Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + Priority *int `pulumi:"priority"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // The Region in which the created Region Security Policy rule should reside. + Region *string `pulumi:"region"` + // The name of the security policy this rule belongs to. + // + // *** + SecurityPolicy *string `pulumi:"securityPolicy"` +} + +type RegionSecurityPolicyRuleState struct { + // The Action to perform when the rule is matched. The following are the valid actions: + // * allow: allow access to target. + // * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + // * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + // * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + // * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + Action pulumi.StringPtrInput + // An optional description of this resource. Provide this property when you create the resource. + Description pulumi.StringPtrInput + // A match condition that incoming traffic is evaluated against. + // If it evaluates to true, the corresponding 'action' is enforced. + // Structure is documented below. + Match RegionSecurityPolicyRuleMatchPtrInput + // A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + // The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + // Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + // Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + // For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + // Example: + // networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + // The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + // Structure is documented below. + NetworkMatch RegionSecurityPolicyRuleNetworkMatchPtrInput + // If set to true, the specified action is not enforced. + Preview pulumi.BoolPtrInput + // An integer indicating the priority of a rule in the list. + // The priority must be a positive value between 0 and 2147483647. + // Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + Priority pulumi.IntPtrInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // The Region in which the created Region Security Policy rule should reside. + Region pulumi.StringPtrInput + // The name of the security policy this rule belongs to. + // + // *** + SecurityPolicy pulumi.StringPtrInput +} + +func (RegionSecurityPolicyRuleState) ElementType() reflect.Type { + return reflect.TypeOf((*regionSecurityPolicyRuleState)(nil)).Elem() +} + +type regionSecurityPolicyRuleArgs struct { + // The Action to perform when the rule is matched. The following are the valid actions: + // * allow: allow access to target. + // * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + // * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + // * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + // * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + Action string `pulumi:"action"` + // An optional description of this resource. Provide this property when you create the resource. + Description *string `pulumi:"description"` + // A match condition that incoming traffic is evaluated against. + // If it evaluates to true, the corresponding 'action' is enforced. + // Structure is documented below. + Match *RegionSecurityPolicyRuleMatch `pulumi:"match"` + // A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + // The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + // Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + // Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + // For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + // Example: + // networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + // The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + // Structure is documented below. + NetworkMatch *RegionSecurityPolicyRuleNetworkMatch `pulumi:"networkMatch"` + // If set to true, the specified action is not enforced. + Preview *bool `pulumi:"preview"` + // An integer indicating the priority of a rule in the list. + // The priority must be a positive value between 0 and 2147483647. + // Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + Priority int `pulumi:"priority"` + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project *string `pulumi:"project"` + // The Region in which the created Region Security Policy rule should reside. + Region string `pulumi:"region"` + // The name of the security policy this rule belongs to. + // + // *** + SecurityPolicy string `pulumi:"securityPolicy"` +} + +// The set of arguments for constructing a RegionSecurityPolicyRule resource. +type RegionSecurityPolicyRuleArgs struct { + // The Action to perform when the rule is matched. The following are the valid actions: + // * allow: allow access to target. + // * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + // * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + // * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + // * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + Action pulumi.StringInput + // An optional description of this resource. Provide this property when you create the resource. + Description pulumi.StringPtrInput + // A match condition that incoming traffic is evaluated against. + // If it evaluates to true, the corresponding 'action' is enforced. + // Structure is documented below. + Match RegionSecurityPolicyRuleMatchPtrInput + // A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + // The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + // Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + // Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + // For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + // Example: + // networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + // The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + // Structure is documented below. + NetworkMatch RegionSecurityPolicyRuleNetworkMatchPtrInput + // If set to true, the specified action is not enforced. + Preview pulumi.BoolPtrInput + // An integer indicating the priority of a rule in the list. + // The priority must be a positive value between 0 and 2147483647. + // Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + Priority pulumi.IntInput + // The ID of the project in which the resource belongs. + // If it is not provided, the provider project is used. + Project pulumi.StringPtrInput + // The Region in which the created Region Security Policy rule should reside. + Region pulumi.StringInput + // The name of the security policy this rule belongs to. + // + // *** + SecurityPolicy pulumi.StringInput +} + +func (RegionSecurityPolicyRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*regionSecurityPolicyRuleArgs)(nil)).Elem() +} + +type RegionSecurityPolicyRuleInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleOutput() RegionSecurityPolicyRuleOutput + ToRegionSecurityPolicyRuleOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleOutput +} + +func (*RegionSecurityPolicyRule) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRule)(nil)).Elem() +} + +func (i *RegionSecurityPolicyRule) ToRegionSecurityPolicyRuleOutput() RegionSecurityPolicyRuleOutput { + return i.ToRegionSecurityPolicyRuleOutputWithContext(context.Background()) +} + +func (i *RegionSecurityPolicyRule) ToRegionSecurityPolicyRuleOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleOutput) +} + +// RegionSecurityPolicyRuleArrayInput is an input type that accepts RegionSecurityPolicyRuleArray and RegionSecurityPolicyRuleArrayOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleArrayInput` via: +// +// RegionSecurityPolicyRuleArray{ RegionSecurityPolicyRuleArgs{...} } +type RegionSecurityPolicyRuleArrayInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleArrayOutput() RegionSecurityPolicyRuleArrayOutput + ToRegionSecurityPolicyRuleArrayOutputWithContext(context.Context) RegionSecurityPolicyRuleArrayOutput +} + +type RegionSecurityPolicyRuleArray []RegionSecurityPolicyRuleInput + +func (RegionSecurityPolicyRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RegionSecurityPolicyRule)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleArray) ToRegionSecurityPolicyRuleArrayOutput() RegionSecurityPolicyRuleArrayOutput { + return i.ToRegionSecurityPolicyRuleArrayOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleArray) ToRegionSecurityPolicyRuleArrayOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleArrayOutput) +} + +// RegionSecurityPolicyRuleMapInput is an input type that accepts RegionSecurityPolicyRuleMap and RegionSecurityPolicyRuleMapOutput values. +// You can construct a concrete instance of `RegionSecurityPolicyRuleMapInput` via: +// +// RegionSecurityPolicyRuleMap{ "key": RegionSecurityPolicyRuleArgs{...} } +type RegionSecurityPolicyRuleMapInput interface { + pulumi.Input + + ToRegionSecurityPolicyRuleMapOutput() RegionSecurityPolicyRuleMapOutput + ToRegionSecurityPolicyRuleMapOutputWithContext(context.Context) RegionSecurityPolicyRuleMapOutput +} + +type RegionSecurityPolicyRuleMap map[string]RegionSecurityPolicyRuleInput + +func (RegionSecurityPolicyRuleMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RegionSecurityPolicyRule)(nil)).Elem() +} + +func (i RegionSecurityPolicyRuleMap) ToRegionSecurityPolicyRuleMapOutput() RegionSecurityPolicyRuleMapOutput { + return i.ToRegionSecurityPolicyRuleMapOutputWithContext(context.Background()) +} + +func (i RegionSecurityPolicyRuleMap) ToRegionSecurityPolicyRuleMapOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegionSecurityPolicyRuleMapOutput) +} + +type RegionSecurityPolicyRuleOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RegionSecurityPolicyRule)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleOutput) ToRegionSecurityPolicyRuleOutput() RegionSecurityPolicyRuleOutput { + return o +} + +func (o RegionSecurityPolicyRuleOutput) ToRegionSecurityPolicyRuleOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleOutput { + return o +} + +// The Action to perform when the rule is matched. The following are the valid actions: +// * allow: allow access to target. +// * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. +// * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. +// * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. +// * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. +func (o RegionSecurityPolicyRuleOutput) Action() pulumi.StringOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.StringOutput { return v.Action }).(pulumi.StringOutput) +} + +// An optional description of this resource. Provide this property when you create the resource. +func (o RegionSecurityPolicyRuleOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// A match condition that incoming traffic is evaluated against. +// If it evaluates to true, the corresponding 'action' is enforced. +// Structure is documented below. +func (o RegionSecurityPolicyRuleOutput) Match() RegionSecurityPolicyRuleMatchPtrOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) RegionSecurityPolicyRuleMatchPtrOutput { return v.Match }).(RegionSecurityPolicyRuleMatchPtrOutput) +} + +// A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. +// The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). +// Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. +// Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. +// For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. +// Example: +// networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" +// The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive +// Structure is documented below. +func (o RegionSecurityPolicyRuleOutput) NetworkMatch() RegionSecurityPolicyRuleNetworkMatchPtrOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) RegionSecurityPolicyRuleNetworkMatchPtrOutput { return v.NetworkMatch }).(RegionSecurityPolicyRuleNetworkMatchPtrOutput) +} + +// If set to true, the specified action is not enforced. +func (o RegionSecurityPolicyRuleOutput) Preview() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.BoolPtrOutput { return v.Preview }).(pulumi.BoolPtrOutput) +} + +// An integer indicating the priority of a rule in the list. +// The priority must be a positive value between 0 and 2147483647. +// Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. +func (o RegionSecurityPolicyRuleOutput) Priority() pulumi.IntOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.IntOutput { return v.Priority }).(pulumi.IntOutput) +} + +// The ID of the project in which the resource belongs. +// If it is not provided, the provider project is used. +func (o RegionSecurityPolicyRuleOutput) Project() pulumi.StringOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) +} + +// The Region in which the created Region Security Policy rule should reside. +func (o RegionSecurityPolicyRuleOutput) Region() pulumi.StringOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.StringOutput { return v.Region }).(pulumi.StringOutput) +} + +// The name of the security policy this rule belongs to. +// +// *** +func (o RegionSecurityPolicyRuleOutput) SecurityPolicy() pulumi.StringOutput { + return o.ApplyT(func(v *RegionSecurityPolicyRule) pulumi.StringOutput { return v.SecurityPolicy }).(pulumi.StringOutput) +} + +type RegionSecurityPolicyRuleArrayOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RegionSecurityPolicyRule)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleArrayOutput) ToRegionSecurityPolicyRuleArrayOutput() RegionSecurityPolicyRuleArrayOutput { + return o +} + +func (o RegionSecurityPolicyRuleArrayOutput) ToRegionSecurityPolicyRuleArrayOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleArrayOutput { + return o +} + +func (o RegionSecurityPolicyRuleArrayOutput) Index(i pulumi.IntInput) RegionSecurityPolicyRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RegionSecurityPolicyRule { + return vs[0].([]*RegionSecurityPolicyRule)[vs[1].(int)] + }).(RegionSecurityPolicyRuleOutput) +} + +type RegionSecurityPolicyRuleMapOutput struct{ *pulumi.OutputState } + +func (RegionSecurityPolicyRuleMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RegionSecurityPolicyRule)(nil)).Elem() +} + +func (o RegionSecurityPolicyRuleMapOutput) ToRegionSecurityPolicyRuleMapOutput() RegionSecurityPolicyRuleMapOutput { + return o +} + +func (o RegionSecurityPolicyRuleMapOutput) ToRegionSecurityPolicyRuleMapOutputWithContext(ctx context.Context) RegionSecurityPolicyRuleMapOutput { + return o +} + +func (o RegionSecurityPolicyRuleMapOutput) MapIndex(k pulumi.StringInput) RegionSecurityPolicyRuleOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RegionSecurityPolicyRule { + return vs[0].(map[string]*RegionSecurityPolicyRule)[vs[1].(string)] + }).(RegionSecurityPolicyRuleOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleInput)(nil)).Elem(), &RegionSecurityPolicyRule{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleArrayInput)(nil)).Elem(), RegionSecurityPolicyRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegionSecurityPolicyRuleMapInput)(nil)).Elem(), RegionSecurityPolicyRuleMap{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleArrayOutput{}) + pulumi.RegisterOutputType(RegionSecurityPolicyRuleMapOutput{}) +} diff --git a/sdk/go/gcp/compute/subnetwork.go b/sdk/go/gcp/compute/subnetwork.go index 8981ae3808..67829a1ce3 100644 --- a/sdk/go/gcp/compute/subnetwork.go +++ b/sdk/go/gcp/compute/subnetwork.go @@ -143,7 +143,7 @@ import ( // _, err = compute.NewSubnetwork(ctx, "network-for-l7lb", &compute.SubnetworkArgs{ // IpCidrRange: pulumi.String("10.0.0.0/22"), // Region: pulumi.String("us-central1"), -// Purpose: pulumi.String("INTERNAL_HTTPS_LOAD_BALANCER"), +// Purpose: pulumi.String("REGIONAL_MANAGED_PROXY"), // Role: pulumi.String("ACTIVE"), // Network: custom_test.ID(), // }, pulumi.Provider(google_beta)) @@ -284,9 +284,10 @@ type Subnetwork struct { Ipv6AccessType pulumi.StringPtrOutput `pulumi:"ipv6AccessType"` // The range of internal IPv6 addresses that are owned by this subnetwork. Ipv6CidrRange pulumi.StringOutput `pulumi:"ipv6CidrRange"` - // Denotes the logging options for the subnetwork flow logs. If logging is enabled - // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - // subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + // This field denotes the VPC flow logging options for this subnetwork. If + // logging is enabled, logs are exported to Cloud Logging. Flow logging + // isn't supported if the subnet `purpose` field is set to subnetwork is + // `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. // Structure is documented below. LogConfig SubnetworkLogConfigPtrOutput `pulumi:"logConfig"` // The name of the resource, provided by the client when initially @@ -310,21 +311,20 @@ type Subnetwork struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringOutput `pulumi:"project"` - // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - // A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - // A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + // A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. // A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. // A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + // Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. // If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - // The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Purpose pulumi.StringOutput `pulumi:"purpose"` // The GCP region for this subnetwork. Region pulumi.StringOutput `pulumi:"region"` // The role of subnetwork. + // Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. // The value can be set to `ACTIVE` or `BACKUP`. - // An `ACTIVE` subnetwork is one that is currently being used. + // An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. // A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - // Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. // Possible values are: `ACTIVE`, `BACKUP`. Role pulumi.StringPtrOutput `pulumi:"role"` // An array of configurations for secondary IP ranges for VM instances @@ -404,9 +404,10 @@ type subnetworkState struct { Ipv6AccessType *string `pulumi:"ipv6AccessType"` // The range of internal IPv6 addresses that are owned by this subnetwork. Ipv6CidrRange *string `pulumi:"ipv6CidrRange"` - // Denotes the logging options for the subnetwork flow logs. If logging is enabled - // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - // subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + // This field denotes the VPC flow logging options for this subnetwork. If + // logging is enabled, logs are exported to Cloud Logging. Flow logging + // isn't supported if the subnet `purpose` field is set to subnetwork is + // `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. // Structure is documented below. LogConfig *SubnetworkLogConfig `pulumi:"logConfig"` // The name of the resource, provided by the client when initially @@ -430,21 +431,20 @@ type subnetworkState struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project *string `pulumi:"project"` - // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - // A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - // A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + // A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. // A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. // A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + // Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. // If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - // The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Purpose *string `pulumi:"purpose"` // The GCP region for this subnetwork. Region *string `pulumi:"region"` // The role of subnetwork. + // Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. // The value can be set to `ACTIVE` or `BACKUP`. - // An `ACTIVE` subnetwork is one that is currently being used. + // An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. // A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - // Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. // Possible values are: `ACTIVE`, `BACKUP`. Role *string `pulumi:"role"` // An array of configurations for secondary IP ranges for VM instances @@ -489,9 +489,10 @@ type SubnetworkState struct { Ipv6AccessType pulumi.StringPtrInput // The range of internal IPv6 addresses that are owned by this subnetwork. Ipv6CidrRange pulumi.StringPtrInput - // Denotes the logging options for the subnetwork flow logs. If logging is enabled - // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - // subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + // This field denotes the VPC flow logging options for this subnetwork. If + // logging is enabled, logs are exported to Cloud Logging. Flow logging + // isn't supported if the subnet `purpose` field is set to subnetwork is + // `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. // Structure is documented below. LogConfig SubnetworkLogConfigPtrInput // The name of the resource, provided by the client when initially @@ -515,21 +516,20 @@ type SubnetworkState struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringPtrInput - // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - // A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - // A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + // A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. // A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. // A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + // Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. // If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - // The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Purpose pulumi.StringPtrInput // The GCP region for this subnetwork. Region pulumi.StringPtrInput // The role of subnetwork. + // Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. // The value can be set to `ACTIVE` or `BACKUP`. - // An `ACTIVE` subnetwork is one that is currently being used. + // An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. // A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - // Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. // Possible values are: `ACTIVE`, `BACKUP`. Role pulumi.StringPtrInput // An array of configurations for secondary IP ranges for VM instances @@ -565,9 +565,10 @@ type subnetworkArgs struct { // cannot enable direct path. // Possible values are: `EXTERNAL`, `INTERNAL`. Ipv6AccessType *string `pulumi:"ipv6AccessType"` - // Denotes the logging options for the subnetwork flow logs. If logging is enabled - // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - // subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + // This field denotes the VPC flow logging options for this subnetwork. If + // logging is enabled, logs are exported to Cloud Logging. Flow logging + // isn't supported if the subnet `purpose` field is set to subnetwork is + // `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. // Structure is documented below. LogConfig *SubnetworkLogConfig `pulumi:"logConfig"` // The name of the resource, provided by the client when initially @@ -591,21 +592,20 @@ type subnetworkArgs struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project *string `pulumi:"project"` - // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - // A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - // A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + // A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. // A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. // A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + // Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. // If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - // The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Purpose *string `pulumi:"purpose"` // The GCP region for this subnetwork. Region *string `pulumi:"region"` // The role of subnetwork. + // Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. // The value can be set to `ACTIVE` or `BACKUP`. - // An `ACTIVE` subnetwork is one that is currently being used. + // An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. // A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - // Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. // Possible values are: `ACTIVE`, `BACKUP`. Role *string `pulumi:"role"` // An array of configurations for secondary IP ranges for VM instances @@ -636,9 +636,10 @@ type SubnetworkArgs struct { // cannot enable direct path. // Possible values are: `EXTERNAL`, `INTERNAL`. Ipv6AccessType pulumi.StringPtrInput - // Denotes the logging options for the subnetwork flow logs. If logging is enabled - // logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - // subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + // This field denotes the VPC flow logging options for this subnetwork. If + // logging is enabled, logs are exported to Cloud Logging. Flow logging + // isn't supported if the subnet `purpose` field is set to subnetwork is + // `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. // Structure is documented below. LogConfig SubnetworkLogConfigPtrInput // The name of the resource, provided by the client when initially @@ -662,21 +663,20 @@ type SubnetworkArgs struct { // The ID of the project in which the resource belongs. // If it is not provided, the provider project is used. Project pulumi.StringPtrInput - // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - // A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - // A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + // The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + // A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. // A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. // A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + // Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. // If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - // The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Purpose pulumi.StringPtrInput // The GCP region for this subnetwork. Region pulumi.StringPtrInput // The role of subnetwork. + // Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. // The value can be set to `ACTIVE` or `BACKUP`. - // An `ACTIVE` subnetwork is one that is currently being used. + // An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. // A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - // Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. // Possible values are: `ACTIVE`, `BACKUP`. Role pulumi.StringPtrInput // An array of configurations for secondary IP ranges for VM instances @@ -829,9 +829,10 @@ func (o SubnetworkOutput) Ipv6CidrRange() pulumi.StringOutput { return o.ApplyT(func(v *Subnetwork) pulumi.StringOutput { return v.Ipv6CidrRange }).(pulumi.StringOutput) } -// Denotes the logging options for the subnetwork flow logs. If logging is enabled -// logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this -// subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` +// This field denotes the VPC flow logging options for this subnetwork. If +// logging is enabled, logs are exported to Cloud Logging. Flow logging +// isn't supported if the subnet `purpose` field is set to subnetwork is +// `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. // Structure is documented below. func (o SubnetworkOutput) LogConfig() SubnetworkLogConfigPtrOutput { return o.ApplyT(func(v *Subnetwork) SubnetworkLogConfigPtrOutput { return v.LogConfig }).(SubnetworkLogConfigPtrOutput) @@ -873,13 +874,12 @@ func (o SubnetworkOutput) Project() pulumi.StringOutput { return o.ApplyT(func(v *Subnetwork) pulumi.StringOutput { return v.Project }).(pulumi.StringOutput) } -// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. -// A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. -// A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. +// The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. +// A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. // A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. // A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. +// Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. // If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. -// The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. func (o SubnetworkOutput) Purpose() pulumi.StringOutput { return o.ApplyT(func(v *Subnetwork) pulumi.StringOutput { return v.Purpose }).(pulumi.StringOutput) } @@ -890,10 +890,10 @@ func (o SubnetworkOutput) Region() pulumi.StringOutput { } // The role of subnetwork. +// Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. // The value can be set to `ACTIVE` or `BACKUP`. -// An `ACTIVE` subnetwork is one that is currently being used. +// An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. // A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. -// Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. // Possible values are: `ACTIVE`, `BACKUP`. func (o SubnetworkOutput) Role() pulumi.StringPtrOutput { return o.ApplyT(func(v *Subnetwork) pulumi.StringPtrOutput { return v.Role }).(pulumi.StringPtrOutput) diff --git a/sdk/go/gcp/config/config.go b/sdk/go/gcp/config/config.go index f26cd6fbb9..b881a127b9 100644 --- a/sdk/go/gcp/config/config.go +++ b/sdk/go/gcp/config/config.go @@ -44,6 +44,9 @@ func GetArtifactRegistryCustomEndpoint(ctx *pulumi.Context) string { func GetAssuredWorkloadsCustomEndpoint(ctx *pulumi.Context) string { return config.Get(ctx, "gcp:assuredWorkloadsCustomEndpoint") } +func GetBackupDrCustomEndpoint(ctx *pulumi.Context) string { + return config.Get(ctx, "gcp:backupDrCustomEndpoint") +} func GetBatching(ctx *pulumi.Context) string { return config.Get(ctx, "gcp:batching") } diff --git a/sdk/go/gcp/container/awsCluster.go b/sdk/go/gcp/container/awsCluster.go index dbcaa28aa9..9c5838fc89 100644 --- a/sdk/go/gcp/container/awsCluster.go +++ b/sdk/go/gcp/container/awsCluster.go @@ -117,6 +117,217 @@ import ( // } // // ``` +// ### Basic_enum_aws_cluster +// A basic example of a containeraws cluster with lowercase enums +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// versions, err := container.GetAwsVersions(ctx, &container.GetAwsVersionsArgs{ +// Location: pulumi.StringRef("us-west1"), +// Project: pulumi.StringRef("my-project-name"), +// }, nil) +// if err != nil { +// return err +// } +// _, err = container.NewAwsCluster(ctx, "primary", &container.AwsClusterArgs{ +// Annotations: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Authorization: &container.AwsClusterAuthorizationArgs{ +// AdminUsers: container.AwsClusterAuthorizationAdminUserArray{ +// &container.AwsClusterAuthorizationAdminUserArgs{ +// Username: pulumi.String("my@service-account.com"), +// }, +// }, +// }, +// AwsRegion: pulumi.String("my-aws-region"), +// ControlPlane: &container.AwsClusterControlPlaneArgs{ +// AwsServicesAuthentication: &container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{ +// RoleArn: pulumi.String("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform"), +// RoleSessionName: pulumi.String("my--1p-dev-session"), +// }, +// ConfigEncryption: &container.AwsClusterControlPlaneConfigEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// DatabaseEncryption: &container.AwsClusterControlPlaneDatabaseEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// IamInstanceProfile: pulumi.String("my--1p-dev-controlplane"), +// InstanceType: pulumi.String("t3.medium"), +// MainVolume: &container.AwsClusterControlPlaneMainVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("gp3"), +// }, +// ProxyConfig: &container.AwsClusterControlPlaneProxyConfigArgs{ +// SecretArn: pulumi.String("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF"), +// SecretVersion: pulumi.String("12345678-ABCD-EFGH-IJKL-987654321098"), +// }, +// RootVolume: &container.AwsClusterControlPlaneRootVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("gp3"), +// }, +// SecurityGroupIds: pulumi.StringArray{ +// pulumi.String("sg-00000000000000000"), +// }, +// SshConfig: &container.AwsClusterControlPlaneSshConfigArgs{ +// Ec2KeyPair: pulumi.String("my--1p-dev-ssh"), +// }, +// SubnetIds: pulumi.StringArray{ +// pulumi.String("subnet-00000000000000000"), +// }, +// Tags: pulumi.StringMap{ +// "owner": pulumi.String("my@service-account.com"), +// }, +// Version: *pulumi.String(versions.ValidVersions[0]), +// }, +// Description: pulumi.String("A sample aws cluster"), +// Fleet: &container.AwsClusterFleetArgs{ +// Project: pulumi.String("my-project-number"), +// }, +// Location: pulumi.String("us-west1"), +// Networking: &container.AwsClusterNetworkingArgs{ +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.2.0.0/16"), +// }, +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.1.0.0/16"), +// }, +// VpcId: pulumi.String("vpc-00000000000000000"), +// }, +// Project: pulumi.String("my-project-name"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Beta_basic_enum_aws_cluster +// A basic example of a containeraws cluster with lowercase enums (beta) +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// versions, err := container.GetAwsVersions(ctx, &container.GetAwsVersionsArgs{ +// Project: pulumi.StringRef("my-project-name"), +// Location: pulumi.StringRef("us-west1"), +// }, nil) +// if err != nil { +// return err +// } +// _, err = container.NewAwsCluster(ctx, "primary", &container.AwsClusterArgs{ +// Authorization: &container.AwsClusterAuthorizationArgs{ +// AdminUsers: container.AwsClusterAuthorizationAdminUserArray{ +// &container.AwsClusterAuthorizationAdminUserArgs{ +// Username: pulumi.String("my@service-account.com"), +// }, +// }, +// }, +// AwsRegion: pulumi.String("my-aws-region"), +// ControlPlane: &container.AwsClusterControlPlaneArgs{ +// AwsServicesAuthentication: &container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{ +// RoleArn: pulumi.String("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform"), +// RoleSessionName: pulumi.String("my--1p-dev-session"), +// }, +// ConfigEncryption: &container.AwsClusterControlPlaneConfigEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// DatabaseEncryption: &container.AwsClusterControlPlaneDatabaseEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// IamInstanceProfile: pulumi.String("my--1p-dev-controlplane"), +// SubnetIds: pulumi.StringArray{ +// pulumi.String("subnet-00000000000000000"), +// }, +// Version: *pulumi.String(versions.ValidVersions[0]), +// InstanceType: pulumi.String("t3.medium"), +// MainVolume: &container.AwsClusterControlPlaneMainVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("gp3"), +// }, +// ProxyConfig: &container.AwsClusterControlPlaneProxyConfigArgs{ +// SecretArn: pulumi.String("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF"), +// SecretVersion: pulumi.String("12345678-ABCD-EFGH-IJKL-987654321098"), +// }, +// RootVolume: &container.AwsClusterControlPlaneRootVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("gp3"), +// }, +// SecurityGroupIds: pulumi.StringArray{ +// pulumi.String("sg-00000000000000000"), +// }, +// SshConfig: &container.AwsClusterControlPlaneSshConfigArgs{ +// Ec2KeyPair: pulumi.String("my--1p-dev-ssh"), +// }, +// Tags: pulumi.StringMap{ +// "owner": pulumi.String("my@service-account.com"), +// }, +// InstancePlacement: &container.AwsClusterControlPlaneInstancePlacementArgs{ +// Tenancy: pulumi.String("dedicated"), +// }, +// }, +// Fleet: &container.AwsClusterFleetArgs{ +// Project: pulumi.String("my-project-number"), +// }, +// Location: pulumi.String("us-west1"), +// Networking: &container.AwsClusterNetworkingArgs{ +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.2.0.0/16"), +// }, +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.1.0.0/16"), +// }, +// VpcId: pulumi.String("vpc-00000000000000000"), +// }, +// Annotations: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Description: pulumi.String("A sample aws cluster"), +// Project: pulumi.String("my-project-name"), +// LoggingConfig: &container.AwsClusterLoggingConfigArgs{ +// ComponentConfig: &container.AwsClusterLoggingConfigComponentConfigArgs{ +// EnableComponents: pulumi.StringArray{ +// pulumi.String("system_components"), +// pulumi.String("workloads"), +// }, +// }, +// }, +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // diff --git a/sdk/go/gcp/container/awsNodePool.go b/sdk/go/gcp/container/awsNodePool.go index dee25bcbd7..b30611eccc 100644 --- a/sdk/go/gcp/container/awsNodePool.go +++ b/sdk/go/gcp/container/awsNodePool.go @@ -173,6 +173,322 @@ import ( // } // // ``` +// ### Basic_enum_aws_cluster +// A basic example of a containeraws node pool with lowercase enums +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// versions, err := container.GetAwsVersions(ctx, &container.GetAwsVersionsArgs{ +// Project: pulumi.StringRef("my-project-name"), +// Location: pulumi.StringRef("us-west1"), +// }, nil) +// if err != nil { +// return err +// } +// primaryAwsCluster, err := container.NewAwsCluster(ctx, "primaryAwsCluster", &container.AwsClusterArgs{ +// Authorization: &container.AwsClusterAuthorizationArgs{ +// AdminUsers: container.AwsClusterAuthorizationAdminUserArray{ +// &container.AwsClusterAuthorizationAdminUserArgs{ +// Username: pulumi.String("my@service-account.com"), +// }, +// }, +// }, +// AwsRegion: pulumi.String("my-aws-region"), +// ControlPlane: &container.AwsClusterControlPlaneArgs{ +// AwsServicesAuthentication: &container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{ +// RoleArn: pulumi.String("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform"), +// RoleSessionName: pulumi.String("my--1p-dev-session"), +// }, +// ConfigEncryption: &container.AwsClusterControlPlaneConfigEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// DatabaseEncryption: &container.AwsClusterControlPlaneDatabaseEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// IamInstanceProfile: pulumi.String("my--1p-dev-controlplane"), +// SubnetIds: pulumi.StringArray{ +// pulumi.String("subnet-00000000000000000"), +// }, +// Version: *pulumi.String(versions.ValidVersions[0]), +// InstanceType: pulumi.String("t3.medium"), +// MainVolume: &container.AwsClusterControlPlaneMainVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("GP3"), +// }, +// ProxyConfig: &container.AwsClusterControlPlaneProxyConfigArgs{ +// SecretArn: pulumi.String("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF"), +// SecretVersion: pulumi.String("12345678-ABCD-EFGH-IJKL-987654321098"), +// }, +// RootVolume: &container.AwsClusterControlPlaneRootVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("GP3"), +// }, +// SecurityGroupIds: pulumi.StringArray{ +// pulumi.String("sg-00000000000000000"), +// }, +// SshConfig: &container.AwsClusterControlPlaneSshConfigArgs{ +// Ec2KeyPair: pulumi.String("my--1p-dev-ssh"), +// }, +// Tags: pulumi.StringMap{ +// "owner": pulumi.String("my@service-account.com"), +// }, +// }, +// Fleet: &container.AwsClusterFleetArgs{ +// Project: pulumi.String("my-project-number"), +// }, +// Location: pulumi.String("us-west1"), +// Networking: &container.AwsClusterNetworkingArgs{ +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.2.0.0/16"), +// }, +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.1.0.0/16"), +// }, +// VpcId: pulumi.String("vpc-00000000000000000"), +// }, +// Annotations: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Description: pulumi.String("A sample aws cluster"), +// Project: pulumi.String("my-project-name"), +// }) +// if err != nil { +// return err +// } +// _, err = container.NewAwsNodePool(ctx, "primaryAwsNodePool", &container.AwsNodePoolArgs{ +// Autoscaling: &container.AwsNodePoolAutoscalingArgs{ +// MaxNodeCount: pulumi.Int(5), +// MinNodeCount: pulumi.Int(1), +// }, +// Cluster: primaryAwsCluster.Name, +// Config: &container.AwsNodePoolConfigArgs{ +// ConfigEncryption: &container.AwsNodePoolConfigConfigEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// IamInstanceProfile: pulumi.String("my--1p-dev-nodepool"), +// InstanceType: pulumi.String("t3.medium"), +// Labels: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// RootVolume: &container.AwsNodePoolConfigRootVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("gp3"), +// }, +// SecurityGroupIds: pulumi.StringArray{ +// pulumi.String("sg-00000000000000000"), +// }, +// ProxyConfig: &container.AwsNodePoolConfigProxyConfigArgs{ +// SecretArn: pulumi.String("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF"), +// SecretVersion: pulumi.String("12345678-ABCD-EFGH-IJKL-987654321098"), +// }, +// SshConfig: &container.AwsNodePoolConfigSshConfigArgs{ +// Ec2KeyPair: pulumi.String("my--1p-dev-ssh"), +// }, +// Tags: pulumi.StringMap{ +// "tag-one": pulumi.String("value-one"), +// }, +// Taints: container.AwsNodePoolConfigTaintArray{ +// &container.AwsNodePoolConfigTaintArgs{ +// Effect: pulumi.String("prefer_no_schedule"), +// Key: pulumi.String("taint-key"), +// Value: pulumi.String("taint-value"), +// }, +// }, +// }, +// Location: pulumi.String("us-west1"), +// MaxPodsConstraint: &container.AwsNodePoolMaxPodsConstraintArgs{ +// MaxPodsPerNode: pulumi.Int(110), +// }, +// SubnetId: pulumi.String("subnet-00000000000000000"), +// Version: *pulumi.String(versions.ValidVersions[0]), +// Annotations: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Project: pulumi.String("my-project-name"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Beta_basic_enum_aws_cluster +// A basic example of a containeraws node pool with lowercase enums (beta) +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/container" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// versions, err := container.GetAwsVersions(ctx, &container.GetAwsVersionsArgs{ +// Project: pulumi.StringRef("my-project-name"), +// Location: pulumi.StringRef("us-west1"), +// }, nil) +// if err != nil { +// return err +// } +// primaryAwsCluster, err := container.NewAwsCluster(ctx, "primaryAwsCluster", &container.AwsClusterArgs{ +// Authorization: &container.AwsClusterAuthorizationArgs{ +// AdminUsers: container.AwsClusterAuthorizationAdminUserArray{ +// &container.AwsClusterAuthorizationAdminUserArgs{ +// Username: pulumi.String("my@service-account.com"), +// }, +// }, +// }, +// AwsRegion: pulumi.String("my-aws-region"), +// ControlPlane: &container.AwsClusterControlPlaneArgs{ +// AwsServicesAuthentication: &container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{ +// RoleArn: pulumi.String("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform"), +// RoleSessionName: pulumi.String("my--1p-dev-session"), +// }, +// ConfigEncryption: &container.AwsClusterControlPlaneConfigEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// DatabaseEncryption: &container.AwsClusterControlPlaneDatabaseEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// IamInstanceProfile: pulumi.String("my--1p-dev-controlplane"), +// SubnetIds: pulumi.StringArray{ +// pulumi.String("subnet-00000000000000000"), +// }, +// Version: *pulumi.String(versions.ValidVersions[0]), +// InstanceType: pulumi.String("t3.medium"), +// MainVolume: &container.AwsClusterControlPlaneMainVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("GP3"), +// }, +// ProxyConfig: &container.AwsClusterControlPlaneProxyConfigArgs{ +// SecretArn: pulumi.String("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF"), +// SecretVersion: pulumi.String("12345678-ABCD-EFGH-IJKL-987654321098"), +// }, +// RootVolume: &container.AwsClusterControlPlaneRootVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("GP3"), +// }, +// SecurityGroupIds: pulumi.StringArray{ +// pulumi.String("sg-00000000000000000"), +// }, +// SshConfig: &container.AwsClusterControlPlaneSshConfigArgs{ +// Ec2KeyPair: pulumi.String("my--1p-dev-ssh"), +// }, +// Tags: pulumi.StringMap{ +// "owner": pulumi.String("my@service-account.com"), +// }, +// }, +// Fleet: &container.AwsClusterFleetArgs{ +// Project: pulumi.String("my-project-number"), +// }, +// Location: pulumi.String("us-west1"), +// Networking: &container.AwsClusterNetworkingArgs{ +// PodAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.2.0.0/16"), +// }, +// ServiceAddressCidrBlocks: pulumi.StringArray{ +// pulumi.String("10.1.0.0/16"), +// }, +// VpcId: pulumi.String("vpc-00000000000000000"), +// }, +// Annotations: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Description: pulumi.String("A sample aws cluster"), +// Project: pulumi.String("my-project-name"), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// _, err = container.NewAwsNodePool(ctx, "primaryAwsNodePool", &container.AwsNodePoolArgs{ +// Autoscaling: &container.AwsNodePoolAutoscalingArgs{ +// MaxNodeCount: pulumi.Int(5), +// MinNodeCount: pulumi.Int(1), +// }, +// Cluster: primaryAwsCluster.Name, +// Config: &container.AwsNodePoolConfigArgs{ +// ConfigEncryption: &container.AwsNodePoolConfigConfigEncryptionArgs{ +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// }, +// IamInstanceProfile: pulumi.String("my--1p-dev-nodepool"), +// InstanceType: pulumi.String("t3.medium"), +// Labels: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// RootVolume: &container.AwsNodePoolConfigRootVolumeArgs{ +// Iops: pulumi.Int(3000), +// KmsKeyArn: pulumi.String("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111"), +// SizeGib: pulumi.Int(10), +// VolumeType: pulumi.String("gp3"), +// }, +// SecurityGroupIds: pulumi.StringArray{ +// pulumi.String("sg-00000000000000000"), +// }, +// ProxyConfig: &container.AwsNodePoolConfigProxyConfigArgs{ +// SecretArn: pulumi.String("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF"), +// SecretVersion: pulumi.String("12345678-ABCD-EFGH-IJKL-987654321098"), +// }, +// SshConfig: &container.AwsNodePoolConfigSshConfigArgs{ +// Ec2KeyPair: pulumi.String("my--1p-dev-ssh"), +// }, +// Tags: pulumi.StringMap{ +// "tag-one": pulumi.String("value-one"), +// }, +// Taints: container.AwsNodePoolConfigTaintArray{ +// &container.AwsNodePoolConfigTaintArgs{ +// Effect: pulumi.String("prefer_no_schedule"), +// Key: pulumi.String("taint-key"), +// Value: pulumi.String("taint-value"), +// }, +// }, +// InstancePlacement: &container.AwsNodePoolConfigInstancePlacementArgs{ +// Tenancy: pulumi.String("dedicated"), +// }, +// ImageType: pulumi.String("ubuntu"), +// }, +// Location: pulumi.String("us-west1"), +// MaxPodsConstraint: &container.AwsNodePoolMaxPodsConstraintArgs{ +// MaxPodsPerNode: pulumi.Int(110), +// }, +// SubnetId: pulumi.String("subnet-00000000000000000"), +// Version: *pulumi.String(versions.ValidVersions[0]), +// Annotations: pulumi.StringMap{ +// "label-one": pulumi.String("value-one"), +// }, +// Project: pulumi.String("my-project-name"), +// }, pulumi.Provider(google_beta)) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // diff --git a/sdk/go/gcp/databasemigrationservice/connectionProfile.go b/sdk/go/gcp/databasemigrationservice/connectionProfile.go index a9e0fbf7bf..98eea32bb9 100644 --- a/sdk/go/gcp/databasemigrationservice/connectionProfile.go +++ b/sdk/go/gcp/databasemigrationservice/connectionProfile.go @@ -117,6 +117,7 @@ import ( // "cloudfoo": pulumi.String("cloudbar"), // }, // Tier: pulumi.String("db-n1-standard-1"), +// Edition: pulumi.String("ENTERPRISE"), // StorageAutoResizeLimit: pulumi.String("0"), // ActivationPolicy: pulumi.String("ALWAYS"), // IpConfig: &databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs{ diff --git a/sdk/go/gcp/databasemigrationservice/pulumiTypes.go b/sdk/go/gcp/databasemigrationservice/pulumiTypes.go index 22089d6737..1e9c7a0689 100644 --- a/sdk/go/gcp/databasemigrationservice/pulumiTypes.go +++ b/sdk/go/gcp/databasemigrationservice/pulumiTypes.go @@ -1159,6 +1159,9 @@ type ConnectionProfileCloudsqlSettings struct { // The database engine type and version. // Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion DatabaseVersion *string `pulumi:"databaseVersion"` + // The edition of the given Cloud SQL instance. + // Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + Edition *string `pulumi:"edition"` // The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. // Structure is documented below. IpConfig *ConnectionProfileCloudsqlSettingsIpConfig `pulumi:"ipConfig"` @@ -1213,6 +1216,9 @@ type ConnectionProfileCloudsqlSettingsArgs struct { // The database engine type and version. // Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion DatabaseVersion pulumi.StringPtrInput `pulumi:"databaseVersion"` + // The edition of the given Cloud SQL instance. + // Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + Edition pulumi.StringPtrInput `pulumi:"edition"` // The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. // Structure is documented below. IpConfig ConnectionProfileCloudsqlSettingsIpConfigPtrInput `pulumi:"ipConfig"` @@ -1356,6 +1362,12 @@ func (o ConnectionProfileCloudsqlSettingsOutput) DatabaseVersion() pulumi.String return o.ApplyT(func(v ConnectionProfileCloudsqlSettings) *string { return v.DatabaseVersion }).(pulumi.StringPtrOutput) } +// The edition of the given Cloud SQL instance. +// Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. +func (o ConnectionProfileCloudsqlSettingsOutput) Edition() pulumi.StringPtrOutput { + return o.ApplyT(func(v ConnectionProfileCloudsqlSettings) *string { return v.Edition }).(pulumi.StringPtrOutput) +} + // The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. // Structure is documented below. func (o ConnectionProfileCloudsqlSettingsOutput) IpConfig() ConnectionProfileCloudsqlSettingsIpConfigPtrOutput { @@ -1510,6 +1522,17 @@ func (o ConnectionProfileCloudsqlSettingsPtrOutput) DatabaseVersion() pulumi.Str }).(pulumi.StringPtrOutput) } +// The edition of the given Cloud SQL instance. +// Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. +func (o ConnectionProfileCloudsqlSettingsPtrOutput) Edition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ConnectionProfileCloudsqlSettings) *string { + if v == nil { + return nil + } + return v.Edition + }).(pulumi.StringPtrOutput) +} + // The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. // Structure is documented below. func (o ConnectionProfileCloudsqlSettingsPtrOutput) IpConfig() ConnectionProfileCloudsqlSettingsIpConfigPtrOutput { diff --git a/sdk/go/gcp/dataloss/preventionStoredInfoType.go b/sdk/go/gcp/dataloss/preventionStoredInfoType.go index 7e5405a6bf..097a64a314 100644 --- a/sdk/go/gcp/dataloss/preventionStoredInfoType.go +++ b/sdk/go/gcp/dataloss/preventionStoredInfoType.go @@ -115,7 +115,7 @@ import ( // } // object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ // Bucket: bucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/dlp/words.txt"), +// Source: pulumi.NewFileAsset("./test-fixtures/words.txt"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/dataproc/metastoreService.go b/sdk/go/gcp/dataproc/metastoreService.go index 1e8a796d69..25aa098890 100644 --- a/sdk/go/gcp/dataproc/metastoreService.go +++ b/sdk/go/gcp/dataproc/metastoreService.go @@ -154,6 +154,72 @@ import ( // } // // ``` +// ### Dataproc Metastore Service Dpms2 +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := dataproc.NewMetastoreService(ctx, "dpms2", &dataproc.MetastoreServiceArgs{ +// DatabaseType: pulumi.String("SPANNER"), +// HiveMetastoreConfig: &dataproc.MetastoreServiceHiveMetastoreConfigArgs{ +// Version: pulumi.String("3.1.2"), +// }, +// Location: pulumi.String("us-central1"), +// ScalingConfig: &dataproc.MetastoreServiceScalingConfigArgs{ +// InstanceSize: pulumi.String("EXTRA_SMALL"), +// }, +// ServiceId: pulumi.String("dpms2"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Dataproc Metastore Service Dpms2 Scaling Factor +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/dataproc" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := dataproc.NewMetastoreService(ctx, "dpms2ScalingFactor", &dataproc.MetastoreServiceArgs{ +// DatabaseType: pulumi.String("SPANNER"), +// HiveMetastoreConfig: &dataproc.MetastoreServiceHiveMetastoreConfigArgs{ +// Version: pulumi.String("3.1.2"), +// }, +// Location: pulumi.String("us-central1"), +// ScalingConfig: &dataproc.MetastoreServiceScalingConfigArgs{ +// ScalingFactor: pulumi.Float64(2), +// }, +// ServiceId: pulumi.String("dpms2sf"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` // // ## Import // @@ -224,6 +290,9 @@ type MetastoreService struct { // Default value is `STABLE`. // Possible values are: `CANARY`, `STABLE`. ReleaseChannel pulumi.StringPtrOutput `pulumi:"releaseChannel"` + // Represents the scaling configuration of a metastore service. + // Structure is documented below. + ScalingConfig MetastoreServiceScalingConfigPtrOutput `pulumi:"scalingConfig"` // The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), // and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between // 3 and 63 characters. @@ -322,6 +391,9 @@ type metastoreServiceState struct { // Default value is `STABLE`. // Possible values are: `CANARY`, `STABLE`. ReleaseChannel *string `pulumi:"releaseChannel"` + // Represents the scaling configuration of a metastore service. + // Structure is documented below. + ScalingConfig *MetastoreServiceScalingConfig `pulumi:"scalingConfig"` // The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), // and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between // 3 and 63 characters. @@ -388,6 +460,9 @@ type MetastoreServiceState struct { // Default value is `STABLE`. // Possible values are: `CANARY`, `STABLE`. ReleaseChannel pulumi.StringPtrInput + // Represents the scaling configuration of a metastore service. + // Structure is documented below. + ScalingConfig MetastoreServiceScalingConfigPtrInput // The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), // and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between // 3 and 63 characters. @@ -451,6 +526,9 @@ type metastoreServiceArgs struct { // Default value is `STABLE`. // Possible values are: `CANARY`, `STABLE`. ReleaseChannel *string `pulumi:"releaseChannel"` + // Represents the scaling configuration of a metastore service. + // Structure is documented below. + ScalingConfig *MetastoreServiceScalingConfig `pulumi:"scalingConfig"` // The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), // and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between // 3 and 63 characters. @@ -505,6 +583,9 @@ type MetastoreServiceArgs struct { // Default value is `STABLE`. // Possible values are: `CANARY`, `STABLE`. ReleaseChannel pulumi.StringPtrInput + // Represents the scaling configuration of a metastore service. + // Structure is documented below. + ScalingConfig MetastoreServiceScalingConfigPtrInput // The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), // and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between // 3 and 63 characters. @@ -696,6 +777,12 @@ func (o MetastoreServiceOutput) ReleaseChannel() pulumi.StringPtrOutput { return o.ApplyT(func(v *MetastoreService) pulumi.StringPtrOutput { return v.ReleaseChannel }).(pulumi.StringPtrOutput) } +// Represents the scaling configuration of a metastore service. +// Structure is documented below. +func (o MetastoreServiceOutput) ScalingConfig() MetastoreServiceScalingConfigPtrOutput { + return o.ApplyT(func(v *MetastoreService) MetastoreServiceScalingConfigPtrOutput { return v.ScalingConfig }).(MetastoreServiceScalingConfigPtrOutput) +} + // The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), // and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between // 3 and 63 characters. diff --git a/sdk/go/gcp/dataproc/pulumiTypes.go b/sdk/go/gcp/dataproc/pulumiTypes.go index 3c60f69e6b..981596a9d3 100644 --- a/sdk/go/gcp/dataproc/pulumiTypes.go +++ b/sdk/go/gcp/dataproc/pulumiTypes.go @@ -14722,6 +14722,166 @@ func (o MetastoreServiceNetworkConfigConsumerArrayOutput) Index(i pulumi.IntInpu }).(MetastoreServiceNetworkConfigConsumerOutput) } +type MetastoreServiceScalingConfig struct { + // Metastore instance sizes. + // Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + InstanceSize *string `pulumi:"instanceSize"` + // Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + ScalingFactor *float64 `pulumi:"scalingFactor"` +} + +// MetastoreServiceScalingConfigInput is an input type that accepts MetastoreServiceScalingConfigArgs and MetastoreServiceScalingConfigOutput values. +// You can construct a concrete instance of `MetastoreServiceScalingConfigInput` via: +// +// MetastoreServiceScalingConfigArgs{...} +type MetastoreServiceScalingConfigInput interface { + pulumi.Input + + ToMetastoreServiceScalingConfigOutput() MetastoreServiceScalingConfigOutput + ToMetastoreServiceScalingConfigOutputWithContext(context.Context) MetastoreServiceScalingConfigOutput +} + +type MetastoreServiceScalingConfigArgs struct { + // Metastore instance sizes. + // Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + InstanceSize pulumi.StringPtrInput `pulumi:"instanceSize"` + // Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + ScalingFactor pulumi.Float64PtrInput `pulumi:"scalingFactor"` +} + +func (MetastoreServiceScalingConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetastoreServiceScalingConfig)(nil)).Elem() +} + +func (i MetastoreServiceScalingConfigArgs) ToMetastoreServiceScalingConfigOutput() MetastoreServiceScalingConfigOutput { + return i.ToMetastoreServiceScalingConfigOutputWithContext(context.Background()) +} + +func (i MetastoreServiceScalingConfigArgs) ToMetastoreServiceScalingConfigOutputWithContext(ctx context.Context) MetastoreServiceScalingConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetastoreServiceScalingConfigOutput) +} + +func (i MetastoreServiceScalingConfigArgs) ToMetastoreServiceScalingConfigPtrOutput() MetastoreServiceScalingConfigPtrOutput { + return i.ToMetastoreServiceScalingConfigPtrOutputWithContext(context.Background()) +} + +func (i MetastoreServiceScalingConfigArgs) ToMetastoreServiceScalingConfigPtrOutputWithContext(ctx context.Context) MetastoreServiceScalingConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetastoreServiceScalingConfigOutput).ToMetastoreServiceScalingConfigPtrOutputWithContext(ctx) +} + +// MetastoreServiceScalingConfigPtrInput is an input type that accepts MetastoreServiceScalingConfigArgs, MetastoreServiceScalingConfigPtr and MetastoreServiceScalingConfigPtrOutput values. +// You can construct a concrete instance of `MetastoreServiceScalingConfigPtrInput` via: +// +// MetastoreServiceScalingConfigArgs{...} +// +// or: +// +// nil +type MetastoreServiceScalingConfigPtrInput interface { + pulumi.Input + + ToMetastoreServiceScalingConfigPtrOutput() MetastoreServiceScalingConfigPtrOutput + ToMetastoreServiceScalingConfigPtrOutputWithContext(context.Context) MetastoreServiceScalingConfigPtrOutput +} + +type metastoreServiceScalingConfigPtrType MetastoreServiceScalingConfigArgs + +func MetastoreServiceScalingConfigPtr(v *MetastoreServiceScalingConfigArgs) MetastoreServiceScalingConfigPtrInput { + return (*metastoreServiceScalingConfigPtrType)(v) +} + +func (*metastoreServiceScalingConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MetastoreServiceScalingConfig)(nil)).Elem() +} + +func (i *metastoreServiceScalingConfigPtrType) ToMetastoreServiceScalingConfigPtrOutput() MetastoreServiceScalingConfigPtrOutput { + return i.ToMetastoreServiceScalingConfigPtrOutputWithContext(context.Background()) +} + +func (i *metastoreServiceScalingConfigPtrType) ToMetastoreServiceScalingConfigPtrOutputWithContext(ctx context.Context) MetastoreServiceScalingConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetastoreServiceScalingConfigPtrOutput) +} + +type MetastoreServiceScalingConfigOutput struct{ *pulumi.OutputState } + +func (MetastoreServiceScalingConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetastoreServiceScalingConfig)(nil)).Elem() +} + +func (o MetastoreServiceScalingConfigOutput) ToMetastoreServiceScalingConfigOutput() MetastoreServiceScalingConfigOutput { + return o +} + +func (o MetastoreServiceScalingConfigOutput) ToMetastoreServiceScalingConfigOutputWithContext(ctx context.Context) MetastoreServiceScalingConfigOutput { + return o +} + +func (o MetastoreServiceScalingConfigOutput) ToMetastoreServiceScalingConfigPtrOutput() MetastoreServiceScalingConfigPtrOutput { + return o.ToMetastoreServiceScalingConfigPtrOutputWithContext(context.Background()) +} + +func (o MetastoreServiceScalingConfigOutput) ToMetastoreServiceScalingConfigPtrOutputWithContext(ctx context.Context) MetastoreServiceScalingConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MetastoreServiceScalingConfig) *MetastoreServiceScalingConfig { + return &v + }).(MetastoreServiceScalingConfigPtrOutput) +} + +// Metastore instance sizes. +// Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. +func (o MetastoreServiceScalingConfigOutput) InstanceSize() pulumi.StringPtrOutput { + return o.ApplyT(func(v MetastoreServiceScalingConfig) *string { return v.InstanceSize }).(pulumi.StringPtrOutput) +} + +// Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. +func (o MetastoreServiceScalingConfigOutput) ScalingFactor() pulumi.Float64PtrOutput { + return o.ApplyT(func(v MetastoreServiceScalingConfig) *float64 { return v.ScalingFactor }).(pulumi.Float64PtrOutput) +} + +type MetastoreServiceScalingConfigPtrOutput struct{ *pulumi.OutputState } + +func (MetastoreServiceScalingConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MetastoreServiceScalingConfig)(nil)).Elem() +} + +func (o MetastoreServiceScalingConfigPtrOutput) ToMetastoreServiceScalingConfigPtrOutput() MetastoreServiceScalingConfigPtrOutput { + return o +} + +func (o MetastoreServiceScalingConfigPtrOutput) ToMetastoreServiceScalingConfigPtrOutputWithContext(ctx context.Context) MetastoreServiceScalingConfigPtrOutput { + return o +} + +func (o MetastoreServiceScalingConfigPtrOutput) Elem() MetastoreServiceScalingConfigOutput { + return o.ApplyT(func(v *MetastoreServiceScalingConfig) MetastoreServiceScalingConfig { + if v != nil { + return *v + } + var ret MetastoreServiceScalingConfig + return ret + }).(MetastoreServiceScalingConfigOutput) +} + +// Metastore instance sizes. +// Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. +func (o MetastoreServiceScalingConfigPtrOutput) InstanceSize() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetastoreServiceScalingConfig) *string { + if v == nil { + return nil + } + return v.InstanceSize + }).(pulumi.StringPtrOutput) +} + +// Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. +func (o MetastoreServiceScalingConfigPtrOutput) ScalingFactor() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *MetastoreServiceScalingConfig) *float64 { + if v == nil { + return nil + } + return v.ScalingFactor + }).(pulumi.Float64PtrOutput) +} + type MetastoreServiceTelemetryConfig struct { // The output format of the Dataproc Metastore service's logs. // Default value is `JSON`. @@ -25362,6 +25522,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceNetworkConfigPtrInput)(nil)).Elem(), MetastoreServiceNetworkConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceNetworkConfigConsumerInput)(nil)).Elem(), MetastoreServiceNetworkConfigConsumerArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceNetworkConfigConsumerArrayInput)(nil)).Elem(), MetastoreServiceNetworkConfigConsumerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceScalingConfigInput)(nil)).Elem(), MetastoreServiceScalingConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceScalingConfigPtrInput)(nil)).Elem(), MetastoreServiceScalingConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceTelemetryConfigInput)(nil)).Elem(), MetastoreServiceTelemetryConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*MetastoreServiceTelemetryConfigPtrInput)(nil)).Elem(), MetastoreServiceTelemetryConfigArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*WorkflowTemplateJobInput)(nil)).Elem(), WorkflowTemplateJobArgs{}) @@ -25630,6 +25792,8 @@ func init() { pulumi.RegisterOutputType(MetastoreServiceNetworkConfigPtrOutput{}) pulumi.RegisterOutputType(MetastoreServiceNetworkConfigConsumerOutput{}) pulumi.RegisterOutputType(MetastoreServiceNetworkConfigConsumerArrayOutput{}) + pulumi.RegisterOutputType(MetastoreServiceScalingConfigOutput{}) + pulumi.RegisterOutputType(MetastoreServiceScalingConfigPtrOutput{}) pulumi.RegisterOutputType(MetastoreServiceTelemetryConfigOutput{}) pulumi.RegisterOutputType(MetastoreServiceTelemetryConfigPtrOutput{}) pulumi.RegisterOutputType(WorkflowTemplateJobOutput{}) diff --git a/sdk/go/gcp/dns/managedZone.go b/sdk/go/gcp/dns/managedZone.go index d5aad9d0a6..74b4e7dcd6 100644 --- a/sdk/go/gcp/dns/managedZone.go +++ b/sdk/go/gcp/dns/managedZone.go @@ -247,11 +247,6 @@ import ( // }, // Visibility: pulumi.String("private"), // PrivateVisibilityConfig: &dns.ManagedZonePrivateVisibilityConfigArgs{ -// Networks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{ -// &dns.ManagedZonePrivateVisibilityConfigNetworkArgs{ -// NetworkUrl: network_1.ID(), -// }, -// }, // GkeClusters: dns.ManagedZonePrivateVisibilityConfigGkeClusterArray{ // &dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs{ // GkeClusterName: cluster_1.ID(), @@ -460,7 +455,7 @@ type ManagedZone struct { // Structure is documented below. PeeringConfig ManagedZonePeeringConfigPtrOutput `pulumi:"peeringConfig"` // For privately visible zones, the set of Virtual Private Cloud - // resources that the zone is visible from. + // resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. // Structure is documented below. PrivateVisibilityConfig ManagedZonePrivateVisibilityConfigPtrOutput `pulumi:"privateVisibilityConfig"` // The ID of the project in which the resource belongs. @@ -553,7 +548,7 @@ type managedZoneState struct { // Structure is documented below. PeeringConfig *ManagedZonePeeringConfig `pulumi:"peeringConfig"` // For privately visible zones, the set of Virtual Private Cloud - // resources that the zone is visible from. + // resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. // Structure is documented below. PrivateVisibilityConfig *ManagedZonePrivateVisibilityConfig `pulumi:"privateVisibilityConfig"` // The ID of the project in which the resource belongs. @@ -611,7 +606,7 @@ type ManagedZoneState struct { // Structure is documented below. PeeringConfig ManagedZonePeeringConfigPtrInput // For privately visible zones, the set of Virtual Private Cloud - // resources that the zone is visible from. + // resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. // Structure is documented below. PrivateVisibilityConfig ManagedZonePrivateVisibilityConfigPtrInput // The ID of the project in which the resource belongs. @@ -665,7 +660,7 @@ type managedZoneArgs struct { // Structure is documented below. PeeringConfig *ManagedZonePeeringConfig `pulumi:"peeringConfig"` // For privately visible zones, the set of Virtual Private Cloud - // resources that the zone is visible from. + // resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. // Structure is documented below. PrivateVisibilityConfig *ManagedZonePrivateVisibilityConfig `pulumi:"privateVisibilityConfig"` // The ID of the project in which the resource belongs. @@ -716,7 +711,7 @@ type ManagedZoneArgs struct { // Structure is documented below. PeeringConfig ManagedZonePeeringConfigPtrInput // For privately visible zones, the set of Virtual Private Cloud - // resources that the zone is visible from. + // resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. // Structure is documented below. PrivateVisibilityConfig ManagedZonePrivateVisibilityConfigPtrInput // The ID of the project in which the resource belongs. @@ -896,7 +891,7 @@ func (o ManagedZoneOutput) PeeringConfig() ManagedZonePeeringConfigPtrOutput { } // For privately visible zones, the set of Virtual Private Cloud -// resources that the zone is visible from. +// resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. // Structure is documented below. func (o ManagedZoneOutput) PrivateVisibilityConfig() ManagedZonePrivateVisibilityConfigPtrOutput { return o.ApplyT(func(v *ManagedZone) ManagedZonePrivateVisibilityConfigPtrOutput { return v.PrivateVisibilityConfig }).(ManagedZonePrivateVisibilityConfigPtrOutput) diff --git a/sdk/go/gcp/dns/pulumiTypes.go b/sdk/go/gcp/dns/pulumiTypes.go index e18c17d939..a0dd0bb75e 100644 --- a/sdk/go/gcp/dns/pulumiTypes.go +++ b/sdk/go/gcp/dns/pulumiTypes.go @@ -2900,7 +2900,7 @@ type RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer struct { IpAddress string `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol string `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType string `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl string `pulumi:"networkUrl"` @@ -2928,7 +2928,7 @@ type RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerArgs struc IpAddress pulumi.StringInput `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol pulumi.StringInput `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType pulumi.StringInput `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl pulumi.StringInput `pulumi:"networkUrl"` @@ -3001,7 +3001,7 @@ func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerOutput) return o.ApplyT(func(v RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer) string { return v.IpProtocol }).(pulumi.StringOutput) } -// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] +// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] func (o RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancerOutput) LoadBalancerType() pulumi.StringOutput { return o.ApplyT(func(v RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer) string { return v.LoadBalancerType @@ -3525,7 +3525,7 @@ type RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoa IpAddress string `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol string `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType string `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl string `pulumi:"networkUrl"` @@ -3553,7 +3553,7 @@ type RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoa IpAddress pulumi.StringInput `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol pulumi.StringInput `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType pulumi.StringInput `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl pulumi.StringInput `pulumi:"networkUrl"` @@ -3630,7 +3630,7 @@ func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternal }).(pulumi.StringOutput) } -// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] +// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] func (o RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerOutput) LoadBalancerType() pulumi.StringOutput { return o.ApplyT(func(v RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer) string { return v.LoadBalancerType @@ -3833,7 +3833,7 @@ type RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer struct { IpAddress string `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol string `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType string `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl string `pulumi:"networkUrl"` @@ -3861,7 +3861,7 @@ type RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs struct { IpAddress pulumi.StringInput `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol pulumi.StringInput `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType pulumi.StringInput `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl pulumi.StringInput `pulumi:"networkUrl"` @@ -3934,7 +3934,7 @@ func (o RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerOutput) Ip return o.ApplyT(func(v RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer) string { return v.IpProtocol }).(pulumi.StringOutput) } -// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] +// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] func (o RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerOutput) LoadBalancerType() pulumi.StringOutput { return o.ApplyT(func(v RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer) string { return v.LoadBalancerType @@ -4249,7 +4249,7 @@ type RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer struct { IpAddress string `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol string `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType string `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl string `pulumi:"networkUrl"` @@ -4277,7 +4277,7 @@ type RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs struc IpAddress pulumi.StringInput `pulumi:"ipAddress"` // The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] IpProtocol pulumi.StringInput `pulumi:"ipProtocol"` - // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + // The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] LoadBalancerType pulumi.StringInput `pulumi:"loadBalancerType"` // The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. NetworkUrl pulumi.StringInput `pulumi:"networkUrl"` @@ -4350,7 +4350,7 @@ func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerOutput) return o.ApplyT(func(v RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer) string { return v.IpProtocol }).(pulumi.StringOutput) } -// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] +// The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] func (o RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerOutput) LoadBalancerType() pulumi.StringOutput { return o.ApplyT(func(v RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer) string { return v.LoadBalancerType diff --git a/sdk/go/gcp/gkeonprem/pulumiTypes.go b/sdk/go/gcp/gkeonprem/pulumiTypes.go index f008a0717d..24296752ff 100644 --- a/sdk/go/gcp/gkeonprem/pulumiTypes.go +++ b/sdk/go/gcp/gkeonprem/pulumiTypes.go @@ -13419,9 +13419,12 @@ func (o VMwareClusterControlPlaneNodeAutoResizeConfigPtrOutput) Enabled() pulumi type VMwareClusterControlPlaneNodeVsphereConfig struct { // (Output) // The Vsphere datastore used by the Control Plane Node. + Datastore *string `pulumi:"datastore"` + // (Output) + // The Vsphere storage policy used by the control plane Node. // // *** - Datastore *string `pulumi:"datastore"` + StoragePolicyName *string `pulumi:"storagePolicyName"` } // VMwareClusterControlPlaneNodeVsphereConfigInput is an input type that accepts VMwareClusterControlPlaneNodeVsphereConfigArgs and VMwareClusterControlPlaneNodeVsphereConfigOutput values. @@ -13438,9 +13441,12 @@ type VMwareClusterControlPlaneNodeVsphereConfigInput interface { type VMwareClusterControlPlaneNodeVsphereConfigArgs struct { // (Output) // The Vsphere datastore used by the Control Plane Node. + Datastore pulumi.StringPtrInput `pulumi:"datastore"` + // (Output) + // The Vsphere storage policy used by the control plane Node. // // *** - Datastore pulumi.StringPtrInput `pulumi:"datastore"` + StoragePolicyName pulumi.StringPtrInput `pulumi:"storagePolicyName"` } func (VMwareClusterControlPlaneNodeVsphereConfigArgs) ElementType() reflect.Type { @@ -13496,12 +13502,18 @@ func (o VMwareClusterControlPlaneNodeVsphereConfigOutput) ToVMwareClusterControl // (Output) // The Vsphere datastore used by the Control Plane Node. -// -// *** func (o VMwareClusterControlPlaneNodeVsphereConfigOutput) Datastore() pulumi.StringPtrOutput { return o.ApplyT(func(v VMwareClusterControlPlaneNodeVsphereConfig) *string { return v.Datastore }).(pulumi.StringPtrOutput) } +// (Output) +// The Vsphere storage policy used by the control plane Node. +// +// *** +func (o VMwareClusterControlPlaneNodeVsphereConfigOutput) StoragePolicyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v VMwareClusterControlPlaneNodeVsphereConfig) *string { return v.StoragePolicyName }).(pulumi.StringPtrOutput) +} + type VMwareClusterControlPlaneNodeVsphereConfigArrayOutput struct{ *pulumi.OutputState } func (VMwareClusterControlPlaneNodeVsphereConfigArrayOutput) ElementType() reflect.Type { @@ -17081,8 +17093,6 @@ type VMwareClusterVcenter struct { Datacenter *string `pulumi:"datacenter"` // (Output) // The Vsphere datastore used by the Control Plane Node. - // - // *** Datastore *string `pulumi:"datastore"` // (Output) // The name of the vCenter folder for the user cluster. @@ -17090,6 +17100,11 @@ type VMwareClusterVcenter struct { // (Output) // The name of the vCenter resource pool for the user cluster. ResourcePool *string `pulumi:"resourcePool"` + // (Output) + // The Vsphere storage policy used by the control plane Node. + // + // *** + StoragePolicyName *string `pulumi:"storagePolicyName"` } // VMwareClusterVcenterInput is an input type that accepts VMwareClusterVcenterArgs and VMwareClusterVcenterOutput values. @@ -17117,8 +17132,6 @@ type VMwareClusterVcenterArgs struct { Datacenter pulumi.StringPtrInput `pulumi:"datacenter"` // (Output) // The Vsphere datastore used by the Control Plane Node. - // - // *** Datastore pulumi.StringPtrInput `pulumi:"datastore"` // (Output) // The name of the vCenter folder for the user cluster. @@ -17126,6 +17139,11 @@ type VMwareClusterVcenterArgs struct { // (Output) // The name of the vCenter resource pool for the user cluster. ResourcePool pulumi.StringPtrInput `pulumi:"resourcePool"` + // (Output) + // The Vsphere storage policy used by the control plane Node. + // + // *** + StoragePolicyName pulumi.StringPtrInput `pulumi:"storagePolicyName"` } func (VMwareClusterVcenterArgs) ElementType() reflect.Type { @@ -17204,8 +17222,6 @@ func (o VMwareClusterVcenterOutput) Datacenter() pulumi.StringPtrOutput { // (Output) // The Vsphere datastore used by the Control Plane Node. -// -// *** func (o VMwareClusterVcenterOutput) Datastore() pulumi.StringPtrOutput { return o.ApplyT(func(v VMwareClusterVcenter) *string { return v.Datastore }).(pulumi.StringPtrOutput) } @@ -17222,6 +17238,14 @@ func (o VMwareClusterVcenterOutput) ResourcePool() pulumi.StringPtrOutput { return o.ApplyT(func(v VMwareClusterVcenter) *string { return v.ResourcePool }).(pulumi.StringPtrOutput) } +// (Output) +// The Vsphere storage policy used by the control plane Node. +// +// *** +func (o VMwareClusterVcenterOutput) StoragePolicyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v VMwareClusterVcenter) *string { return v.StoragePolicyName }).(pulumi.StringPtrOutput) +} + type VMwareClusterVcenterArrayOutput struct{ *pulumi.OutputState } func (VMwareClusterVcenterArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/gcp/healthcare/fhirStore.go b/sdk/go/gcp/healthcare/fhirStore.go index bcccec190d..9023dc8303 100644 --- a/sdk/go/gcp/healthcare/fhirStore.go +++ b/sdk/go/gcp/healthcare/fhirStore.go @@ -55,6 +55,7 @@ import ( // DisableReferentialIntegrity: pulumi.Bool(false), // DisableResourceVersioning: pulumi.Bool(false), // EnableHistoryImport: pulumi.Bool(false), +// DefaultSearchHandlingStrict: pulumi.Bool(false), // NotificationConfig: &healthcare.FhirStoreNotificationConfigArgs{ // PubsubTopic: topic.ID(), // }, @@ -273,6 +274,10 @@ type FhirStore struct { // // *** Dataset pulumi.StringOutput `pulumi:"dataset"` + // If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + // If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + // The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + DefaultSearchHandlingStrict pulumi.BoolPtrOutput `pulumi:"defaultSearchHandlingStrict"` // Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store // creation. The default value is false, meaning that the API will enforce referential integrity and fail the // requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -375,6 +380,10 @@ type fhirStoreState struct { // // *** Dataset *string `pulumi:"dataset"` + // If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + // If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + // The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + DefaultSearchHandlingStrict *bool `pulumi:"defaultSearchHandlingStrict"` // Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store // creation. The default value is false, meaning that the API will enforce referential integrity and fail the // requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -445,6 +454,10 @@ type FhirStoreState struct { // // *** Dataset pulumi.StringPtrInput + // If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + // If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + // The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + DefaultSearchHandlingStrict pulumi.BoolPtrInput // Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store // creation. The default value is false, meaning that the API will enforce referential integrity and fail the // requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -519,6 +532,10 @@ type fhirStoreArgs struct { // // *** Dataset string `pulumi:"dataset"` + // If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + // If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + // The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + DefaultSearchHandlingStrict *bool `pulumi:"defaultSearchHandlingStrict"` // Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store // creation. The default value is false, meaning that the API will enforce referential integrity and fail the // requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -588,6 +605,10 @@ type FhirStoreArgs struct { // // *** Dataset pulumi.StringInput + // If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + // If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + // The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + DefaultSearchHandlingStrict pulumi.BoolPtrInput // Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store // creation. The default value is false, meaning that the API will enforce referential integrity and fail the // requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -748,6 +769,13 @@ func (o FhirStoreOutput) Dataset() pulumi.StringOutput { return o.ApplyT(func(v *FhirStore) pulumi.StringOutput { return v.Dataset }).(pulumi.StringOutput) } +// If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. +// If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. +// The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. +func (o FhirStoreOutput) DefaultSearchHandlingStrict() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *FhirStore) pulumi.BoolPtrOutput { return v.DefaultSearchHandlingStrict }).(pulumi.BoolPtrOutput) +} + // Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store // creation. The default value is false, meaning that the API will enforce referential integrity and fail the // requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API diff --git a/sdk/go/gcp/monitoring/getAppEngineService.go b/sdk/go/gcp/monitoring/getAppEngineService.go index c66cc7a191..30467dada3 100644 --- a/sdk/go/gcp/monitoring/getAppEngineService.go +++ b/sdk/go/gcp/monitoring/getAppEngineService.go @@ -52,7 +52,7 @@ import ( // } // object, err := storage.NewBucketObject(ctx, "object", &storage.BucketObjectArgs{ // Bucket: bucket.Name, -// Source: pulumi.NewFileAsset("./test-fixtures/appengine/hello-world.zip"), +// Source: pulumi.NewFileAsset("./test-fixtures/hello-world.zip"), // }) // if err != nil { // return err diff --git a/sdk/go/gcp/networkservices/gateway.go b/sdk/go/gcp/networkservices/gateway.go index 94770f0349..5c95cc1eba 100644 --- a/sdk/go/gcp/networkservices/gateway.go +++ b/sdk/go/gcp/networkservices/gateway.go @@ -114,8 +114,8 @@ import ( // defaultCertificate, err := certificatemanager.NewCertificate(ctx, "defaultCertificate", &certificatemanager.CertificateArgs{ // Location: pulumi.String("us-central1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: readFileOrPanic("test-fixtures/certificatemanager/cert.pem"), -// PemPrivateKey: readFileOrPanic("test-fixtures/certificatemanager/private-key.pem"), +// PemCertificate: readFileOrPanic("test-fixtures/cert.pem"), +// PemPrivateKey: readFileOrPanic("test-fixtures/private-key.pem"), // }, // }) // if err != nil { @@ -223,8 +223,8 @@ import ( // defaultCertificate, err := certificatemanager.NewCertificate(ctx, "defaultCertificate", &certificatemanager.CertificateArgs{ // Location: pulumi.String("us-south1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ -// PemCertificate: readFileOrPanic("test-fixtures/certificatemanager/cert.pem"), -// PemPrivateKey: readFileOrPanic("test-fixtures/certificatemanager/private-key.pem"), +// PemCertificate: readFileOrPanic("test-fixtures/cert.pem"), +// PemPrivateKey: readFileOrPanic("test-fixtures/private-key.pem"), // }, // }) // if err != nil { diff --git a/sdk/go/gcp/provider.go b/sdk/go/gcp/provider.go index 3d724da044..6f9bb5254b 100644 --- a/sdk/go/gcp/provider.go +++ b/sdk/go/gcp/provider.go @@ -29,6 +29,7 @@ type Provider struct { AppEngineCustomEndpoint pulumi.StringPtrOutput `pulumi:"appEngineCustomEndpoint"` ArtifactRegistryCustomEndpoint pulumi.StringPtrOutput `pulumi:"artifactRegistryCustomEndpoint"` AssuredWorkloadsCustomEndpoint pulumi.StringPtrOutput `pulumi:"assuredWorkloadsCustomEndpoint"` + BackupDrCustomEndpoint pulumi.StringPtrOutput `pulumi:"backupDrCustomEndpoint"` BeyondcorpCustomEndpoint pulumi.StringPtrOutput `pulumi:"beyondcorpCustomEndpoint"` BigQueryCustomEndpoint pulumi.StringPtrOutput `pulumi:"bigQueryCustomEndpoint"` BigqueryAnalyticsHubCustomEndpoint pulumi.StringPtrOutput `pulumi:"bigqueryAnalyticsHubCustomEndpoint"` @@ -203,6 +204,7 @@ type providerArgs struct { AppEngineCustomEndpoint *string `pulumi:"appEngineCustomEndpoint"` ArtifactRegistryCustomEndpoint *string `pulumi:"artifactRegistryCustomEndpoint"` AssuredWorkloadsCustomEndpoint *string `pulumi:"assuredWorkloadsCustomEndpoint"` + BackupDrCustomEndpoint *string `pulumi:"backupDrCustomEndpoint"` Batching *ProviderBatching `pulumi:"batching"` BeyondcorpCustomEndpoint *string `pulumi:"beyondcorpCustomEndpoint"` BigQueryCustomEndpoint *string `pulumi:"bigQueryCustomEndpoint"` @@ -352,6 +354,7 @@ type ProviderArgs struct { AppEngineCustomEndpoint pulumi.StringPtrInput ArtifactRegistryCustomEndpoint pulumi.StringPtrInput AssuredWorkloadsCustomEndpoint pulumi.StringPtrInput + BackupDrCustomEndpoint pulumi.StringPtrInput Batching ProviderBatchingPtrInput BeyondcorpCustomEndpoint pulumi.StringPtrInput BigQueryCustomEndpoint pulumi.StringPtrInput @@ -569,6 +572,10 @@ func (o ProviderOutput) AssuredWorkloadsCustomEndpoint() pulumi.StringPtrOutput return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.AssuredWorkloadsCustomEndpoint }).(pulumi.StringPtrOutput) } +func (o ProviderOutput) BackupDrCustomEndpoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.BackupDrCustomEndpoint }).(pulumi.StringPtrOutput) +} + func (o ProviderOutput) BeyondcorpCustomEndpoint() pulumi.StringPtrOutput { return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.BeyondcorpCustomEndpoint }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/gcp/secretmanager/getSecret.go b/sdk/go/gcp/secretmanager/getSecret.go index 3c7fac52d1..93f76708fb 100644 --- a/sdk/go/gcp/secretmanager/getSecret.go +++ b/sdk/go/gcp/secretmanager/getSecret.go @@ -62,15 +62,16 @@ type LookupSecretResult struct { CreateTime string `pulumi:"createTime"` ExpireTime string `pulumi:"expireTime"` // The provider-assigned unique ID for this managed resource. - Id string `pulumi:"id"` - Labels map[string]string `pulumi:"labels"` - Name string `pulumi:"name"` - Project *string `pulumi:"project"` - Replications []GetSecretReplication `pulumi:"replications"` - Rotations []GetSecretRotation `pulumi:"rotations"` - SecretId string `pulumi:"secretId"` - Topics []GetSecretTopic `pulumi:"topics"` - Ttl string `pulumi:"ttl"` + Id string `pulumi:"id"` + Labels map[string]string `pulumi:"labels"` + Name string `pulumi:"name"` + Project *string `pulumi:"project"` + Replications []GetSecretReplication `pulumi:"replications"` + Rotations []GetSecretRotation `pulumi:"rotations"` + SecretId string `pulumi:"secretId"` + Topics []GetSecretTopic `pulumi:"topics"` + Ttl string `pulumi:"ttl"` + VersionAliases map[string]string `pulumi:"versionAliases"` } func LookupSecretOutput(ctx *pulumi.Context, args LookupSecretOutputArgs, opts ...pulumi.InvokeOption) LookupSecretResultOutput { @@ -162,6 +163,10 @@ func (o LookupSecretResultOutput) Ttl() pulumi.StringOutput { return o.ApplyT(func(v LookupSecretResult) string { return v.Ttl }).(pulumi.StringOutput) } +func (o LookupSecretResultOutput) VersionAliases() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupSecretResult) map[string]string { return v.VersionAliases }).(pulumi.StringMapOutput) +} + func init() { pulumi.RegisterOutputType(LookupSecretResultOutput{}) } diff --git a/sdk/go/gcp/secretmanager/secret.go b/sdk/go/gcp/secretmanager/secret.go index d751f26373..12e099d412 100644 --- a/sdk/go/gcp/secretmanager/secret.go +++ b/sdk/go/gcp/secretmanager/secret.go @@ -168,6 +168,14 @@ type Secret struct { // The TTL for the Secret. // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Ttl pulumi.StringPtrOutput `pulumi:"ttl"` + // Mapping from version alias to version name. + // A version alias is a string with a maximum length of 63 characters and can contain + // uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + // characters. An alias string must start with a letter and cannot be the string + // 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + // An object containing a list of "key": value pairs. Example: + // { "name": "wrench", "mass": "1.3kg", "count": "3" }. + VersionAliases pulumi.StringMapOutput `pulumi:"versionAliases"` } // NewSecret registers a new resource with the given unique name, arguments, and options. @@ -252,6 +260,14 @@ type secretState struct { // The TTL for the Secret. // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Ttl *string `pulumi:"ttl"` + // Mapping from version alias to version name. + // A version alias is a string with a maximum length of 63 characters and can contain + // uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + // characters. An alias string must start with a letter and cannot be the string + // 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + // An object containing a list of "key": value pairs. Example: + // { "name": "wrench", "mass": "1.3kg", "count": "3" }. + VersionAliases map[string]string `pulumi:"versionAliases"` } type SecretState struct { @@ -301,6 +317,14 @@ type SecretState struct { // The TTL for the Secret. // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Ttl pulumi.StringPtrInput + // Mapping from version alias to version name. + // A version alias is a string with a maximum length of 63 characters and can contain + // uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + // characters. An alias string must start with a letter and cannot be the string + // 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + // An object containing a list of "key": value pairs. Example: + // { "name": "wrench", "mass": "1.3kg", "count": "3" }. + VersionAliases pulumi.StringMapInput } func (SecretState) ElementType() reflect.Type { @@ -349,6 +373,14 @@ type secretArgs struct { // The TTL for the Secret. // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Ttl *string `pulumi:"ttl"` + // Mapping from version alias to version name. + // A version alias is a string with a maximum length of 63 characters and can contain + // uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + // characters. An alias string must start with a letter and cannot be the string + // 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + // An object containing a list of "key": value pairs. Example: + // { "name": "wrench", "mass": "1.3kg", "count": "3" }. + VersionAliases map[string]string `pulumi:"versionAliases"` } // The set of arguments for constructing a Secret resource. @@ -394,6 +426,14 @@ type SecretArgs struct { // The TTL for the Secret. // A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". Ttl pulumi.StringPtrInput + // Mapping from version alias to version name. + // A version alias is a string with a maximum length of 63 characters and can contain + // uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + // characters. An alias string must start with a letter and cannot be the string + // 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + // An object containing a list of "key": value pairs. Example: + // { "name": "wrench", "mass": "1.3kg", "count": "3" }. + VersionAliases pulumi.StringMapInput } func (SecretArgs) ElementType() reflect.Type { @@ -562,6 +602,17 @@ func (o SecretOutput) Ttl() pulumi.StringPtrOutput { return o.ApplyT(func(v *Secret) pulumi.StringPtrOutput { return v.Ttl }).(pulumi.StringPtrOutput) } +// Mapping from version alias to version name. +// A version alias is a string with a maximum length of 63 characters and can contain +// uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') +// characters. An alias string must start with a letter and cannot be the string +// 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. +// An object containing a list of "key": value pairs. Example: +// { "name": "wrench", "mass": "1.3kg", "count": "3" }. +func (o SecretOutput) VersionAliases() pulumi.StringMapOutput { + return o.ApplyT(func(v *Secret) pulumi.StringMapOutput { return v.VersionAliases }).(pulumi.StringMapOutput) +} + type SecretArrayOutput struct{ *pulumi.OutputState } func (SecretArrayOutput) ElementType() reflect.Type { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/Config.java b/sdk/java/src/main/java/com/pulumi/gcp/Config.java index 5468169320..3a6ca012c0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/Config.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/Config.java @@ -47,6 +47,9 @@ public Optional artifactRegistryCustomEndpoint() { public Optional assuredWorkloadsCustomEndpoint() { return Codegen.stringProp("assuredWorkloadsCustomEndpoint").config(config).get(); } + public Optional backupDrCustomEndpoint() { + return Codegen.stringProp("backupDrCustomEndpoint").config(config).get(); + } public Optional batching() { return Codegen.objectProp("batching", Batching.class).config(config).get(); } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/Provider.java b/sdk/java/src/main/java/com/pulumi/gcp/Provider.java index 4553e1e39e..7f4503be27 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/Provider.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/Provider.java @@ -88,6 +88,12 @@ public Output> artifactRegistryCustomEndpoint() { public Output> assuredWorkloadsCustomEndpoint() { return Codegen.optional(this.assuredWorkloadsCustomEndpoint); } + @Export(name="backupDrCustomEndpoint", type=String.class, parameters={}) + private Output backupDrCustomEndpoint; + + public Output> backupDrCustomEndpoint() { + return Codegen.optional(this.backupDrCustomEndpoint); + } @Export(name="beyondcorpCustomEndpoint", type=String.class, parameters={}) private Output beyondcorpCustomEndpoint; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java index 1953edfee2..4c28044e18 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/ProviderArgs.java @@ -96,6 +96,13 @@ public Optional> assuredWorkloadsCustomEndpoint() { return Optional.ofNullable(this.assuredWorkloadsCustomEndpoint); } + @Import(name="backupDrCustomEndpoint") + private @Nullable Output backupDrCustomEndpoint; + + public Optional> backupDrCustomEndpoint() { + return Optional.ofNullable(this.backupDrCustomEndpoint); + } + @Import(name="batching", json=true) private @Nullable Output batching; @@ -1048,6 +1055,7 @@ private ProviderArgs(ProviderArgs $) { this.appEngineCustomEndpoint = $.appEngineCustomEndpoint; this.artifactRegistryCustomEndpoint = $.artifactRegistryCustomEndpoint; this.assuredWorkloadsCustomEndpoint = $.assuredWorkloadsCustomEndpoint; + this.backupDrCustomEndpoint = $.backupDrCustomEndpoint; this.batching = $.batching; this.beyondcorpCustomEndpoint = $.beyondcorpCustomEndpoint; this.bigQueryCustomEndpoint = $.bigQueryCustomEndpoint; @@ -1301,6 +1309,15 @@ public Builder assuredWorkloadsCustomEndpoint(String assuredWorkloadsCustomEndpo return assuredWorkloadsCustomEndpoint(Output.of(assuredWorkloadsCustomEndpoint)); } + public Builder backupDrCustomEndpoint(@Nullable Output backupDrCustomEndpoint) { + $.backupDrCustomEndpoint = backupDrCustomEndpoint; + return this; + } + + public Builder backupDrCustomEndpoint(String backupDrCustomEndpoint) { + return backupDrCustomEndpoint(Output.of(backupDrCustomEndpoint)); + } + public Builder batching(@Nullable Output batching) { $.batching = batching; return this; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/apigateway/ApiConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/apigateway/ApiConfig.java index 2cc7d604dc..3c4e6c4085 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/apigateway/ApiConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/apigateway/ApiConfig.java @@ -69,7 +69,7 @@ * .openapiDocuments(ApiConfigOpenapiDocumentArgs.builder() * .document(ApiConfigOpenapiDocumentDocumentArgs.builder() * .path("spec.yaml") - * .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get("test-fixtures/apigateway/openapi.yaml")))) + * .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get("test-fixtures/openapi.yaml")))) * .build()) * .build()) * .build(), CustomResourceOptions.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/apigateway/Gateway.java b/sdk/java/src/main/java/com/pulumi/gcp/apigateway/Gateway.java index 1acbe842d3..69b9d0d77c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/apigateway/Gateway.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/apigateway/Gateway.java @@ -66,7 +66,7 @@ * .openapiDocuments(ApiConfigOpenapiDocumentArgs.builder() * .document(ApiConfigOpenapiDocumentDocumentArgs.builder() * .path("spec.yaml") - * .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get("test-fixtures/apigateway/openapi.yaml")))) + * .contents(Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get("test-fixtures/openapi.yaml")))) * .build()) * .build()) * .build(), CustomResourceOptions.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/appengine/ApplicationUrlDispatchRules.java b/sdk/java/src/main/java/com/pulumi/gcp/appengine/ApplicationUrlDispatchRules.java index ec6f70553b..7f92ee8335 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/appengine/ApplicationUrlDispatchRules.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/appengine/ApplicationUrlDispatchRules.java @@ -62,7 +62,7 @@ * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var adminV3 = new StandardAppVersion("adminV3", StandardAppVersionArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/appengine/FlexibleAppVersion.java b/sdk/java/src/main/java/com/pulumi/gcp/appengine/FlexibleAppVersion.java index 1efa6cfc55..c6c04e9ccb 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/appengine/FlexibleAppVersion.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/appengine/FlexibleAppVersion.java @@ -139,7 +139,7 @@ * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var myappV1 = new FlexibleAppVersion("myappV1", FlexibleAppVersionArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/appengine/ServiceNetworkSettings.java b/sdk/java/src/main/java/com/pulumi/gcp/appengine/ServiceNetworkSettings.java index 045851977d..de95f682a4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/appengine/ServiceNetworkSettings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/appengine/ServiceNetworkSettings.java @@ -61,7 +61,7 @@ * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var internalappStandardAppVersion = new StandardAppVersion("internalappStandardAppVersion", StandardAppVersionArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/appengine/StandardAppVersion.java b/sdk/java/src/main/java/com/pulumi/gcp/appengine/StandardAppVersion.java index 119057e2ed..f5d4093263 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/appengine/StandardAppVersion.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/appengine/StandardAppVersion.java @@ -98,7 +98,7 @@ * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var myappV1 = new StandardAppVersion("myappV1", StandardAppVersionArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServer.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServer.java new file mode 100644 index 0000000000..22a8beb534 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServer.java @@ -0,0 +1,265 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.backupdisasterrecovery.ManagementServerArgs; +import com.pulumi.gcp.backupdisasterrecovery.inputs.ManagementServerState; +import com.pulumi.gcp.backupdisasterrecovery.outputs.ManagementServerManagementUri; +import com.pulumi.gcp.backupdisasterrecovery.outputs.ManagementServerNetwork; +import java.lang.String; +import java.util.List; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * ### Backup Dr Management Server + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.compute.Network; + * import com.pulumi.gcp.compute.NetworkArgs; + * import com.pulumi.gcp.compute.GlobalAddress; + * import com.pulumi.gcp.compute.GlobalAddressArgs; + * import com.pulumi.gcp.servicenetworking.Connection; + * import com.pulumi.gcp.servicenetworking.ConnectionArgs; + * import com.pulumi.gcp.backupdisasterrecovery.ManagementServer; + * import com.pulumi.gcp.backupdisasterrecovery.ManagementServerArgs; + * import com.pulumi.gcp.backupdisasterrecovery.inputs.ManagementServerNetworkArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var defaultNetwork = new Network("defaultNetwork", NetworkArgs.Empty, CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var privateIpAddress = new GlobalAddress("privateIpAddress", GlobalAddressArgs.builder() + * .addressType("INTERNAL") + * .purpose("VPC_PEERING") + * .prefixLength(20) + * .network(defaultNetwork.id()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var defaultConnection = new Connection("defaultConnection", ConnectionArgs.builder() + * .network(defaultNetwork.id()) + * .service("servicenetworking.googleapis.com") + * .reservedPeeringRanges(privateIpAddress.name()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var ms_console = new ManagementServer("ms-console", ManagementServerArgs.builder() + * .location("us-central1") + * .type("BACKUP_RESTORE") + * .networks(ManagementServerNetworkArgs.builder() + * .network(defaultNetwork.id()) + * .peeringMode("PRIVATE_SERVICE_ACCESS") + * .build()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .dependsOn(defaultConnection) + * .build()); + * + * } + * } + * ``` + * + * ## Import + * + * ManagementServer can be imported using any of these accepted formats + * + * ```sh + * $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}} + * ``` + * + */ +@ResourceType(type="gcp:backupdisasterrecovery/managementServer:ManagementServer") +public class ManagementServer extends com.pulumi.resources.CustomResource { + /** + * The location for the management server (management console) + * + */ + @Export(name="location", type=String.class, parameters={}) + private Output location; + + /** + * @return The location for the management server (management console) + * + */ + public Output location() { + return this.location; + } + /** + * The management console URI + * Structure is documented below. + * + */ + @Export(name="managementUris", type=List.class, parameters={ManagementServerManagementUri.class}) + private Output> managementUris; + + /** + * @return The management console URI + * Structure is documented below. + * + */ + public Output> managementUris() { + return this.managementUris; + } + /** + * The name of management server (management console) + * + */ + @Export(name="name", type=String.class, parameters={}) + private Output name; + + /** + * @return The name of management server (management console) + * + */ + public Output name() { + return this.name; + } + /** + * Network details to create management server (management console). + * Structure is documented below. + * + */ + @Export(name="networks", type=List.class, parameters={ManagementServerNetwork.class}) + private Output> networks; + + /** + * @return Network details to create management server (management console). + * Structure is documented below. + * + */ + public Output> networks() { + return this.networks; + } + /** + * The oauth2ClientId of management console. + * + */ + @Export(name="oauth2ClientId", type=String.class, parameters={}) + private Output oauth2ClientId; + + /** + * @return The oauth2ClientId of management console. + * + */ + public Output oauth2ClientId() { + return this.oauth2ClientId; + } + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Export(name="project", type=String.class, parameters={}) + private Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Output project() { + return this.project; + } + /** + * The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + */ + @Export(name="type", type=String.class, parameters={}) + private Output type; + + /** + * @return The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + */ + public Output> type() { + return Codegen.optional(this.type); + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public ManagementServer(String name) { + this(name, ManagementServerArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public ManagementServer(String name, ManagementServerArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public ManagementServer(String name, ManagementServerArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:backupdisasterrecovery/managementServer:ManagementServer", name, args == null ? ManagementServerArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private ManagementServer(String name, Output id, @Nullable ManagementServerState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:backupdisasterrecovery/managementServer:ManagementServer", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static ManagementServer get(String name, Output id, @Nullable ManagementServerState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new ManagementServer(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServerArgs.java new file mode 100644 index 0000000000..98cba10113 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/ManagementServerArgs.java @@ -0,0 +1,262 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.backupdisasterrecovery.inputs.ManagementServerNetworkArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ManagementServerArgs extends com.pulumi.resources.ResourceArgs { + + public static final ManagementServerArgs Empty = new ManagementServerArgs(); + + /** + * The location for the management server (management console) + * + */ + @Import(name="location", required=true) + private Output location; + + /** + * @return The location for the management server (management console) + * + */ + public Output location() { + return this.location; + } + + /** + * The name of management server (management console) + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of management server (management console) + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Network details to create management server (management console). + * Structure is documented below. + * + */ + @Import(name="networks", required=true) + private Output> networks; + + /** + * @return Network details to create management server (management console). + * Structure is documented below. + * + */ + public Output> networks() { + return this.networks; + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private ManagementServerArgs() {} + + private ManagementServerArgs(ManagementServerArgs $) { + this.location = $.location; + this.name = $.name; + this.networks = $.networks; + this.project = $.project; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ManagementServerArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ManagementServerArgs $; + + public Builder() { + $ = new ManagementServerArgs(); + } + + public Builder(ManagementServerArgs defaults) { + $ = new ManagementServerArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param location The location for the management server (management console) + * + * @return builder + * + */ + public Builder location(Output location) { + $.location = location; + return this; + } + + /** + * @param location The location for the management server (management console) + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param name The name of management server (management console) + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of management server (management console) + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param networks Network details to create management server (management console). + * Structure is documented below. + * + * @return builder + * + */ + public Builder networks(Output> networks) { + $.networks = networks; + return this; + } + + /** + * @param networks Network details to create management server (management console). + * Structure is documented below. + * + * @return builder + * + */ + public Builder networks(List networks) { + return networks(Output.of(networks)); + } + + /** + * @param networks Network details to create management server (management console). + * Structure is documented below. + * + * @return builder + * + */ + public Builder networks(ManagementServerNetworkArgs... networks) { + return networks(List.of(networks)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param type The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public ManagementServerArgs build() { + $.location = Objects.requireNonNull($.location, "expected parameter 'location' to be non-null"); + $.networks = Objects.requireNonNull($.networks, "expected parameter 'networks' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerManagementUriArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerManagementUriArgs.java new file mode 100644 index 0000000000..2e7d860a41 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerManagementUriArgs.java @@ -0,0 +1,128 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ManagementServerManagementUriArgs extends com.pulumi.resources.ResourceArgs { + + public static final ManagementServerManagementUriArgs Empty = new ManagementServerManagementUriArgs(); + + /** + * (Output) + * The management console api endpoint. + * + */ + @Import(name="api") + private @Nullable Output api; + + /** + * @return (Output) + * The management console api endpoint. + * + */ + public Optional> api() { + return Optional.ofNullable(this.api); + } + + /** + * (Output) + * The management console webUi. + * + */ + @Import(name="webUi") + private @Nullable Output webUi; + + /** + * @return (Output) + * The management console webUi. + * + */ + public Optional> webUi() { + return Optional.ofNullable(this.webUi); + } + + private ManagementServerManagementUriArgs() {} + + private ManagementServerManagementUriArgs(ManagementServerManagementUriArgs $) { + this.api = $.api; + this.webUi = $.webUi; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ManagementServerManagementUriArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ManagementServerManagementUriArgs $; + + public Builder() { + $ = new ManagementServerManagementUriArgs(); + } + + public Builder(ManagementServerManagementUriArgs defaults) { + $ = new ManagementServerManagementUriArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param api (Output) + * The management console api endpoint. + * + * @return builder + * + */ + public Builder api(@Nullable Output api) { + $.api = api; + return this; + } + + /** + * @param api (Output) + * The management console api endpoint. + * + * @return builder + * + */ + public Builder api(String api) { + return api(Output.of(api)); + } + + /** + * @param webUi (Output) + * The management console webUi. + * + * @return builder + * + */ + public Builder webUi(@Nullable Output webUi) { + $.webUi = webUi; + return this; + } + + /** + * @param webUi (Output) + * The management console webUi. + * + * @return builder + * + */ + public Builder webUi(String webUi) { + return webUi(Output.of(webUi)); + } + + public ManagementServerManagementUriArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerNetworkArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerNetworkArgs.java new file mode 100644 index 0000000000..726fb2caf1 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerNetworkArgs.java @@ -0,0 +1,137 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ManagementServerNetworkArgs extends com.pulumi.resources.ResourceArgs { + + public static final ManagementServerNetworkArgs Empty = new ManagementServerNetworkArgs(); + + /** + * Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + * + */ + @Import(name="network", required=true) + private Output network; + + /** + * @return Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + * + */ + public Output network() { + return this.network; + } + + /** + * Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * *** + * + */ + @Import(name="peeringMode") + private @Nullable Output peeringMode; + + /** + * @return Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * *** + * + */ + public Optional> peeringMode() { + return Optional.ofNullable(this.peeringMode); + } + + private ManagementServerNetworkArgs() {} + + private ManagementServerNetworkArgs(ManagementServerNetworkArgs $) { + this.network = $.network; + this.peeringMode = $.peeringMode; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ManagementServerNetworkArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ManagementServerNetworkArgs $; + + public Builder() { + $ = new ManagementServerNetworkArgs(); + } + + public Builder(ManagementServerNetworkArgs defaults) { + $ = new ManagementServerNetworkArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param network Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + * + * @return builder + * + */ + public Builder network(Output network) { + $.network = network; + return this; + } + + /** + * @param network Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + * + * @return builder + * + */ + public Builder network(String network) { + return network(Output.of(network)); + } + + /** + * @param peeringMode Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * *** + * + * @return builder + * + */ + public Builder peeringMode(@Nullable Output peeringMode) { + $.peeringMode = peeringMode; + return this; + } + + /** + * @param peeringMode Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * *** + * + * @return builder + * + */ + public Builder peeringMode(String peeringMode) { + return peeringMode(Output.of(peeringMode)); + } + + public ManagementServerNetworkArgs build() { + $.network = Objects.requireNonNull($.network, "expected parameter 'network' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerState.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerState.java new file mode 100644 index 0000000000..64a6a19fe5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/inputs/ManagementServerState.java @@ -0,0 +1,350 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.backupdisasterrecovery.inputs.ManagementServerManagementUriArgs; +import com.pulumi.gcp.backupdisasterrecovery.inputs.ManagementServerNetworkArgs; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class ManagementServerState extends com.pulumi.resources.ResourceArgs { + + public static final ManagementServerState Empty = new ManagementServerState(); + + /** + * The location for the management server (management console) + * + */ + @Import(name="location") + private @Nullable Output location; + + /** + * @return The location for the management server (management console) + * + */ + public Optional> location() { + return Optional.ofNullable(this.location); + } + + /** + * The management console URI + * Structure is documented below. + * + */ + @Import(name="managementUris") + private @Nullable Output> managementUris; + + /** + * @return The management console URI + * Structure is documented below. + * + */ + public Optional>> managementUris() { + return Optional.ofNullable(this.managementUris); + } + + /** + * The name of management server (management console) + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of management server (management console) + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Network details to create management server (management console). + * Structure is documented below. + * + */ + @Import(name="networks") + private @Nullable Output> networks; + + /** + * @return Network details to create management server (management console). + * Structure is documented below. + * + */ + public Optional>> networks() { + return Optional.ofNullable(this.networks); + } + + /** + * The oauth2ClientId of management console. + * + */ + @Import(name="oauth2ClientId") + private @Nullable Output oauth2ClientId; + + /** + * @return The oauth2ClientId of management console. + * + */ + public Optional> oauth2ClientId() { + return Optional.ofNullable(this.oauth2ClientId); + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + */ + @Import(name="type") + private @Nullable Output type; + + /** + * @return The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + */ + public Optional> type() { + return Optional.ofNullable(this.type); + } + + private ManagementServerState() {} + + private ManagementServerState(ManagementServerState $) { + this.location = $.location; + this.managementUris = $.managementUris; + this.name = $.name; + this.networks = $.networks; + this.oauth2ClientId = $.oauth2ClientId; + this.project = $.project; + this.type = $.type; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(ManagementServerState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private ManagementServerState $; + + public Builder() { + $ = new ManagementServerState(); + } + + public Builder(ManagementServerState defaults) { + $ = new ManagementServerState(Objects.requireNonNull(defaults)); + } + + /** + * @param location The location for the management server (management console) + * + * @return builder + * + */ + public Builder location(@Nullable Output location) { + $.location = location; + return this; + } + + /** + * @param location The location for the management server (management console) + * + * @return builder + * + */ + public Builder location(String location) { + return location(Output.of(location)); + } + + /** + * @param managementUris The management console URI + * Structure is documented below. + * + * @return builder + * + */ + public Builder managementUris(@Nullable Output> managementUris) { + $.managementUris = managementUris; + return this; + } + + /** + * @param managementUris The management console URI + * Structure is documented below. + * + * @return builder + * + */ + public Builder managementUris(List managementUris) { + return managementUris(Output.of(managementUris)); + } + + /** + * @param managementUris The management console URI + * Structure is documented below. + * + * @return builder + * + */ + public Builder managementUris(ManagementServerManagementUriArgs... managementUris) { + return managementUris(List.of(managementUris)); + } + + /** + * @param name The name of management server (management console) + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of management server (management console) + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param networks Network details to create management server (management console). + * Structure is documented below. + * + * @return builder + * + */ + public Builder networks(@Nullable Output> networks) { + $.networks = networks; + return this; + } + + /** + * @param networks Network details to create management server (management console). + * Structure is documented below. + * + * @return builder + * + */ + public Builder networks(List networks) { + return networks(Output.of(networks)); + } + + /** + * @param networks Network details to create management server (management console). + * Structure is documented below. + * + * @return builder + * + */ + public Builder networks(ManagementServerNetworkArgs... networks) { + return networks(List.of(networks)); + } + + /** + * @param oauth2ClientId The oauth2ClientId of management console. + * + * @return builder + * + */ + public Builder oauth2ClientId(@Nullable Output oauth2ClientId) { + $.oauth2ClientId = oauth2ClientId; + return this; + } + + /** + * @param oauth2ClientId The oauth2ClientId of management console. + * + * @return builder + * + */ + public Builder oauth2ClientId(String oauth2ClientId) { + return oauth2ClientId(Output.of(oauth2ClientId)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param type The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + * @return builder + * + */ + public Builder type(@Nullable Output type) { + $.type = type; + return this; + } + + /** + * @param type The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + * + * @return builder + * + */ + public Builder type(String type) { + return type(Output.of(type)); + } + + public ManagementServerState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerManagementUri.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerManagementUri.java new file mode 100644 index 0000000000..5400980904 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerManagementUri.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ManagementServerManagementUri { + /** + * @return (Output) + * The management console api endpoint. + * + */ + private @Nullable String api; + /** + * @return (Output) + * The management console webUi. + * + */ + private @Nullable String webUi; + + private ManagementServerManagementUri() {} + /** + * @return (Output) + * The management console api endpoint. + * + */ + public Optional api() { + return Optional.ofNullable(this.api); + } + /** + * @return (Output) + * The management console webUi. + * + */ + public Optional webUi() { + return Optional.ofNullable(this.webUi); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ManagementServerManagementUri defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String api; + private @Nullable String webUi; + public Builder() {} + public Builder(ManagementServerManagementUri defaults) { + Objects.requireNonNull(defaults); + this.api = defaults.api; + this.webUi = defaults.webUi; + } + + @CustomType.Setter + public Builder api(@Nullable String api) { + this.api = api; + return this; + } + @CustomType.Setter + public Builder webUi(@Nullable String webUi) { + this.webUi = webUi; + return this; + } + public ManagementServerManagementUri build() { + final var o = new ManagementServerManagementUri(); + o.api = api; + o.webUi = webUi; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerNetwork.java b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerNetwork.java new file mode 100644 index 0000000000..d8bd7e6e1e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/backupdisasterrecovery/outputs/ManagementServerNetwork.java @@ -0,0 +1,84 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.backupdisasterrecovery.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class ManagementServerNetwork { + /** + * @return Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + * + */ + private String network; + /** + * @return Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * *** + * + */ + private @Nullable String peeringMode; + + private ManagementServerNetwork() {} + /** + * @return Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + * + */ + public String network() { + return this.network; + } + /** + * @return Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * *** + * + */ + public Optional peeringMode() { + return Optional.ofNullable(this.peeringMode); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(ManagementServerNetwork defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String network; + private @Nullable String peeringMode; + public Builder() {} + public Builder(ManagementServerNetwork defaults) { + Objects.requireNonNull(defaults); + this.network = defaults.network; + this.peeringMode = defaults.peeringMode; + } + + @CustomType.Setter + public Builder network(String network) { + this.network = Objects.requireNonNull(network); + return this; + } + @CustomType.Setter + public Builder peeringMode(@Nullable String peeringMode) { + this.peeringMode = peeringMode; + return this; + } + public ManagementServerNetwork build() { + final var o = new ManagementServerNetwork(); + o.network = network; + o.peeringMode = peeringMode; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java index 16d24b1cee..a8783b3793 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/bigquery/Job.java @@ -263,7 +263,7 @@ * .build()); * * var testBucketObject = new BucketObject("testBucketObject", BucketObjectArgs.builder() - * .source(new FileAsset("./test-fixtures/bigquerytable/test.parquet.gzip")) + * .source(new FileAsset("./test-fixtures/test.parquet.gzip")) * .bucket(testBucket.name()) * .build()); * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/Certificate.java b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/Certificate.java index fb66a2c9fb..6932379b6d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/Certificate.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/Certificate.java @@ -126,7 +126,7 @@ * var caAuthority = new Authority("caAuthority", AuthorityArgs.builder() * .location("us-central1") * .pool(pool.name()) - * .certificateAuthorityId("my-ca") + * .certificateAuthorityId("ca-authority") * .config(AuthorityConfigArgs.builder() * .subjectConfig(AuthorityConfigSubjectConfigArgs.builder() * .subject(AuthorityConfigSubjectConfigSubjectArgs.builder() @@ -264,8 +264,8 @@ * .description("Regional cert") * .location("us-central1") * .selfManaged(CertificateSelfManagedArgs.builder() - * .pemCertificate(Files.readString(Paths.get("test-fixtures/certificatemanager/cert.pem"))) - * .pemPrivateKey(Files.readString(Paths.get("test-fixtures/certificatemanager/private-key.pem"))) + * .pemCertificate(Files.readString(Paths.get("test-fixtures/cert.pem"))) + * .pemPrivateKey(Files.readString(Paths.get("test-fixtures/private-key.pem"))) * .build()) * .build()); * @@ -398,7 +398,8 @@ public Output project() { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * */ @Export(name="scope", type=String.class, parameters={}) @@ -410,7 +411,8 @@ public Output project() { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * */ public Output> scope() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateArgs.java index a43f100036..2a37b562e2 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateArgs.java @@ -130,7 +130,8 @@ public Optional> project() { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * */ @Import(name="scope") @@ -142,7 +143,8 @@ public Optional> project() { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * */ public Optional> scope() { @@ -349,7 +351,8 @@ public Builder project(String project) { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * * @return builder * @@ -365,7 +368,8 @@ public Builder scope(@Nullable Output scope) { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateIssuanceConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateIssuanceConfig.java index f3c8f59eed..eedc5461b3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateIssuanceConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/CertificateIssuanceConfig.java @@ -74,7 +74,7 @@ * var caAuthority = new Authority("caAuthority", AuthorityArgs.builder() * .location("us-central1") * .pool(pool.name()) - * .certificateAuthorityId("my-ca") + * .certificateAuthorityId("ca-authority") * .config(AuthorityConfigArgs.builder() * .subjectConfig(AuthorityConfigSubjectConfigArgs.builder() * .subject(AuthorityConfigSubjectConfigSubjectArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateState.java b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateState.java index b1675bd82b..5e201a292c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/certificatemanager/inputs/CertificateState.java @@ -130,7 +130,8 @@ public Optional> project() { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * */ @Import(name="scope") @@ -142,7 +143,8 @@ public Optional> project() { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * */ public Optional> scope() { @@ -349,7 +351,8 @@ public Builder project(String project) { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * * @return builder * @@ -365,7 +368,8 @@ public Builder scope(@Nullable Output scope) { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/Trigger.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/Trigger.java index e8480a7a22..a75a787730 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/Trigger.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/Trigger.java @@ -514,6 +514,49 @@ * } * } * ``` + * ### Cloudbuild Trigger Manual Bitbucket Server + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.cloudbuild.Trigger; + * import com.pulumi.gcp.cloudbuild.TriggerArgs; + * import com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs; + * import com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var manual_bitbucket_trigger = new Trigger("manual-bitbucket-trigger", TriggerArgs.builder() + * .gitFileSource(TriggerGitFileSourceArgs.builder() + * .bitbucketServerConfig("projects/myProject/locations/global/bitbucketServerConfigs/configID") + * .path("cloudbuild.yaml") + * .repoType("BITBUCKET_SERVER") + * .revision("refs/heads/main") + * .uri("https://bbs.com/scm/stag/test-repo.git") + * .build()) + * .sourceToBuild(TriggerSourceToBuildArgs.builder() + * .bitbucketServerConfig("projects/myProject/locations/global/bitbucketServerConfigs/configID") + * .ref("refs/heads/main") + * .repoType("BITBUCKET_SERVER") + * .uri("https://bbs.com/scm/stag/test-repo.git") + * .build()) + * .build()); + * + * } + * } + * ``` * ### Cloudbuild Trigger Repo * ```java * package generated_program; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerGitFileSourceArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerGitFileSourceArgs.java index 3c14be6c0b..013a3b4e3c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerGitFileSourceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerGitFileSourceArgs.java @@ -15,6 +15,23 @@ public final class TriggerGitFileSourceArgs extends com.pulumi.resources.Resourc public static final TriggerGitFileSourceArgs Empty = new TriggerGitFileSourceArgs(); + /** + * The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + @Import(name="bitbucketServerConfig") + private @Nullable Output bitbucketServerConfig; + + /** + * @return The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + public Optional> bitbucketServerConfig() { + return Optional.ofNullable(this.bitbucketServerConfig); + } + /** * The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -122,6 +139,7 @@ public Optional> uri() { private TriggerGitFileSourceArgs() {} private TriggerGitFileSourceArgs(TriggerGitFileSourceArgs $) { + this.bitbucketServerConfig = $.bitbucketServerConfig; this.githubEnterpriseConfig = $.githubEnterpriseConfig; this.path = $.path; this.repoType = $.repoType; @@ -148,6 +166,29 @@ public Builder(TriggerGitFileSourceArgs defaults) { $ = new TriggerGitFileSourceArgs(Objects.requireNonNull(defaults)); } + /** + * @param bitbucketServerConfig The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + * @return builder + * + */ + public Builder bitbucketServerConfig(@Nullable Output bitbucketServerConfig) { + $.bitbucketServerConfig = bitbucketServerConfig; + return this; + } + + /** + * @param bitbucketServerConfig The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + * @return builder + * + */ + public Builder bitbucketServerConfig(String bitbucketServerConfig) { + return bitbucketServerConfig(Output.of(bitbucketServerConfig)); + } + /** * @param githubEnterpriseConfig The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerSourceToBuildArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerSourceToBuildArgs.java index cc4fc505ee..82c3e01a15 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerSourceToBuildArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/inputs/TriggerSourceToBuildArgs.java @@ -15,6 +15,23 @@ public final class TriggerSourceToBuildArgs extends com.pulumi.resources.Resourc public static final TriggerSourceToBuildArgs Empty = new TriggerSourceToBuildArgs(); + /** + * The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + @Import(name="bitbucketServerConfig") + private @Nullable Output bitbucketServerConfig; + + /** + * @return The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + public Optional> bitbucketServerConfig() { + return Optional.ofNullable(this.bitbucketServerConfig); + } + /** * The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -101,6 +118,7 @@ public Optional> uri() { private TriggerSourceToBuildArgs() {} private TriggerSourceToBuildArgs(TriggerSourceToBuildArgs $) { + this.bitbucketServerConfig = $.bitbucketServerConfig; this.githubEnterpriseConfig = $.githubEnterpriseConfig; this.ref = $.ref; this.repoType = $.repoType; @@ -126,6 +144,29 @@ public Builder(TriggerSourceToBuildArgs defaults) { $ = new TriggerSourceToBuildArgs(Objects.requireNonNull(defaults)); } + /** + * @param bitbucketServerConfig The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + * @return builder + * + */ + public Builder bitbucketServerConfig(@Nullable Output bitbucketServerConfig) { + $.bitbucketServerConfig = bitbucketServerConfig; + return this; + } + + /** + * @param bitbucketServerConfig The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + * @return builder + * + */ + public Builder bitbucketServerConfig(String bitbucketServerConfig) { + return bitbucketServerConfig(Output.of(bitbucketServerConfig)); + } + /** * @param githubEnterpriseConfig The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerGitFileSource.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerGitFileSource.java index cdfcb44c4a..136946963e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerGitFileSource.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerGitFileSource.java @@ -9,6 +9,7 @@ @CustomType public final class GetTriggerGitFileSource { + private String bitbucketServerConfig; private String githubEnterpriseConfig; private String path; private String repoType; @@ -17,6 +18,9 @@ public final class GetTriggerGitFileSource { private String uri; private GetTriggerGitFileSource() {} + public String bitbucketServerConfig() { + return this.bitbucketServerConfig; + } public String githubEnterpriseConfig() { return this.githubEnterpriseConfig; } @@ -45,6 +49,7 @@ public static Builder builder(GetTriggerGitFileSource defaults) { } @CustomType.Builder public static final class Builder { + private String bitbucketServerConfig; private String githubEnterpriseConfig; private String path; private String repoType; @@ -54,6 +59,7 @@ public static final class Builder { public Builder() {} public Builder(GetTriggerGitFileSource defaults) { Objects.requireNonNull(defaults); + this.bitbucketServerConfig = defaults.bitbucketServerConfig; this.githubEnterpriseConfig = defaults.githubEnterpriseConfig; this.path = defaults.path; this.repoType = defaults.repoType; @@ -62,6 +68,11 @@ public Builder(GetTriggerGitFileSource defaults) { this.uri = defaults.uri; } + @CustomType.Setter + public Builder bitbucketServerConfig(String bitbucketServerConfig) { + this.bitbucketServerConfig = Objects.requireNonNull(bitbucketServerConfig); + return this; + } @CustomType.Setter public Builder githubEnterpriseConfig(String githubEnterpriseConfig) { this.githubEnterpriseConfig = Objects.requireNonNull(githubEnterpriseConfig); @@ -94,6 +105,7 @@ public Builder uri(String uri) { } public GetTriggerGitFileSource build() { final var o = new GetTriggerGitFileSource(); + o.bitbucketServerConfig = bitbucketServerConfig; o.githubEnterpriseConfig = githubEnterpriseConfig; o.path = path; o.repoType = repoType; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerSourceToBuild.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerSourceToBuild.java index 08eff1f26d..5eca3d3be3 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerSourceToBuild.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/GetTriggerSourceToBuild.java @@ -9,6 +9,7 @@ @CustomType public final class GetTriggerSourceToBuild { + private String bitbucketServerConfig; private String githubEnterpriseConfig; private String ref; private String repoType; @@ -16,6 +17,9 @@ public final class GetTriggerSourceToBuild { private String uri; private GetTriggerSourceToBuild() {} + public String bitbucketServerConfig() { + return this.bitbucketServerConfig; + } public String githubEnterpriseConfig() { return this.githubEnterpriseConfig; } @@ -41,6 +45,7 @@ public static Builder builder(GetTriggerSourceToBuild defaults) { } @CustomType.Builder public static final class Builder { + private String bitbucketServerConfig; private String githubEnterpriseConfig; private String ref; private String repoType; @@ -49,6 +54,7 @@ public static final class Builder { public Builder() {} public Builder(GetTriggerSourceToBuild defaults) { Objects.requireNonNull(defaults); + this.bitbucketServerConfig = defaults.bitbucketServerConfig; this.githubEnterpriseConfig = defaults.githubEnterpriseConfig; this.ref = defaults.ref; this.repoType = defaults.repoType; @@ -56,6 +62,11 @@ public Builder(GetTriggerSourceToBuild defaults) { this.uri = defaults.uri; } + @CustomType.Setter + public Builder bitbucketServerConfig(String bitbucketServerConfig) { + this.bitbucketServerConfig = Objects.requireNonNull(bitbucketServerConfig); + return this; + } @CustomType.Setter public Builder githubEnterpriseConfig(String githubEnterpriseConfig) { this.githubEnterpriseConfig = Objects.requireNonNull(githubEnterpriseConfig); @@ -83,6 +94,7 @@ public Builder uri(String uri) { } public GetTriggerSourceToBuild build() { final var o = new GetTriggerSourceToBuild(); + o.bitbucketServerConfig = bitbucketServerConfig; o.githubEnterpriseConfig = githubEnterpriseConfig; o.ref = ref; o.repoType = repoType; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerGitFileSource.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerGitFileSource.java index d3f762eabf..e8876be1a6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerGitFileSource.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerGitFileSource.java @@ -11,6 +11,12 @@ @CustomType public final class TriggerGitFileSource { + /** + * @return The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + private @Nullable String bitbucketServerConfig; /** * @return The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -50,6 +56,14 @@ public final class TriggerGitFileSource { private @Nullable String uri; private TriggerGitFileSource() {} + /** + * @return The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + public Optional bitbucketServerConfig() { + return Optional.ofNullable(this.bitbucketServerConfig); + } /** * @return The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -109,6 +123,7 @@ public static Builder builder(TriggerGitFileSource defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable String bitbucketServerConfig; private @Nullable String githubEnterpriseConfig; private String path; private String repoType; @@ -118,6 +133,7 @@ public static final class Builder { public Builder() {} public Builder(TriggerGitFileSource defaults) { Objects.requireNonNull(defaults); + this.bitbucketServerConfig = defaults.bitbucketServerConfig; this.githubEnterpriseConfig = defaults.githubEnterpriseConfig; this.path = defaults.path; this.repoType = defaults.repoType; @@ -126,6 +142,11 @@ public Builder(TriggerGitFileSource defaults) { this.uri = defaults.uri; } + @CustomType.Setter + public Builder bitbucketServerConfig(@Nullable String bitbucketServerConfig) { + this.bitbucketServerConfig = bitbucketServerConfig; + return this; + } @CustomType.Setter public Builder githubEnterpriseConfig(@Nullable String githubEnterpriseConfig) { this.githubEnterpriseConfig = githubEnterpriseConfig; @@ -158,6 +179,7 @@ public Builder uri(@Nullable String uri) { } public TriggerGitFileSource build() { final var o = new TriggerGitFileSource(); + o.bitbucketServerConfig = bitbucketServerConfig; o.githubEnterpriseConfig = githubEnterpriseConfig; o.path = path; o.repoType = repoType; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerSourceToBuild.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerSourceToBuild.java index 7a3f4bbe47..c6ec68a8f9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerSourceToBuild.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudbuild/outputs/TriggerSourceToBuild.java @@ -11,6 +11,12 @@ @CustomType public final class TriggerSourceToBuild { + /** + * @return The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + private @Nullable String bitbucketServerConfig; /** * @return The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -42,6 +48,14 @@ public final class TriggerSourceToBuild { private @Nullable String uri; private TriggerSourceToBuild() {} + /** + * @return The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + * + */ + public Optional bitbucketServerConfig() { + return Optional.ofNullable(this.bitbucketServerConfig); + } /** * @return The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -91,6 +105,7 @@ public static Builder builder(TriggerSourceToBuild defaults) { } @CustomType.Builder public static final class Builder { + private @Nullable String bitbucketServerConfig; private @Nullable String githubEnterpriseConfig; private String ref; private String repoType; @@ -99,6 +114,7 @@ public static final class Builder { public Builder() {} public Builder(TriggerSourceToBuild defaults) { Objects.requireNonNull(defaults); + this.bitbucketServerConfig = defaults.bitbucketServerConfig; this.githubEnterpriseConfig = defaults.githubEnterpriseConfig; this.ref = defaults.ref; this.repoType = defaults.repoType; @@ -106,6 +122,11 @@ public Builder(TriggerSourceToBuild defaults) { this.uri = defaults.uri; } + @CustomType.Setter + public Builder bitbucketServerConfig(@Nullable String bitbucketServerConfig) { + this.bitbucketServerConfig = bitbucketServerConfig; + return this; + } @CustomType.Setter public Builder githubEnterpriseConfig(@Nullable String githubEnterpriseConfig) { this.githubEnterpriseConfig = githubEnterpriseConfig; @@ -133,6 +154,7 @@ public Builder uri(@Nullable String uri) { } public TriggerSourceToBuild build() { final var o = new TriggerSourceToBuild(); + o.bitbucketServerConfig = bitbucketServerConfig; o.githubEnterpriseConfig = githubEnterpriseConfig; o.ref = ref; o.repoType = repoType; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Job.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Job.java index 08c244df7c..039d26967f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Job.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Job.java @@ -502,6 +502,52 @@ public Output> clientVersion() { public Output> conditions() { return this.conditions; } + /** + * (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + * + */ + @Export(name="createTime", type=String.class, parameters={}) + private Output createTime; + + /** + * @return (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + * + */ + public Output createTime() { + return this.createTime; + } + /** + * Email address of the authenticated creator. + * + */ + @Export(name="creator", type=String.class, parameters={}) + private Output creator; + + /** + * @return Email address of the authenticated creator. + * + */ + public Output creator() { + return this.creator; + } + /** + * The deletion time. + * + */ + @Export(name="deleteTime", type=String.class, parameters={}) + private Output deleteTime; + + /** + * @return The deletion time. + * + */ + public Output deleteTime() { + return this.deleteTime; + } /** * A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. * @@ -530,6 +576,20 @@ public Output etag() { public Output executionCount() { return this.executionCount; } + /** + * For a deleted resource, the time after which it will be permamently deleted. + * + */ + @Export(name="expireTime", type=String.class, parameters={}) + private Output expireTime; + + /** + * @return For a deleted resource, the time after which it will be permamently deleted. + * + */ + public Output expireTime() { + return this.expireTime; + } /** * A number that monotonically increases every time the user modifies the desired state. * @@ -578,6 +638,20 @@ public Output generation() { public Output>> labels() { return Codegen.optional(this.labels); } + /** + * Email address of the last authenticated modifier. + * + */ + @Export(name="lastModifier", type=String.class, parameters={}) + private Output lastModifier; + + /** + * @return Email address of the last authenticated modifier. + * + */ + public Output lastModifier() { + return this.lastModifier; + } /** * Name of the last created execution. * Structure is documented below. @@ -738,6 +812,20 @@ public Output> terminalConditions() { public Output uid() { return this.uid; } + /** + * The last-modified time. + * + */ + @Export(name="updateTime", type=String.class, parameters={}) + private Output updateTime; + + /** + * @return The last-modified time. + * + */ + public Output updateTime() { + return this.updateTime; + } /** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Service.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Service.java index e14d72091e..49bc0919c4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Service.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/Service.java @@ -559,6 +559,34 @@ public Output> clientVersion() { public Output> conditions() { return this.conditions; } + /** + * The creation time. + * + */ + @Export(name="createTime", type=String.class, parameters={}) + private Output createTime; + + /** + * @return The creation time. + * + */ + public Output createTime() { + return this.createTime; + } + /** + * Email address of the authenticated creator. + * + */ + @Export(name="creator", type=String.class, parameters={}) + private Output creator; + + /** + * @return Email address of the authenticated creator. + * + */ + public Output creator() { + return this.creator; + } /** * One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a * string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see @@ -577,6 +605,20 @@ public Output> conditions() { public Output>> customAudiences() { return Codegen.optional(this.customAudiences); } + /** + * The deletion time. + * + */ + @Export(name="deleteTime", type=String.class, parameters={}) + private Output deleteTime; + + /** + * @return The deletion time. + * + */ + public Output deleteTime() { + return this.deleteTime; + } /** * User-provided description of the Service. This field currently has a 512-character limit. * @@ -605,6 +647,20 @@ public Output> description() { public Output etag() { return this.etag; } + /** + * For a deleted resource, the time after which it will be permamently deleted. + * + */ + @Export(name="expireTime", type=String.class, parameters={}) + private Output expireTime; + + /** + * @return For a deleted resource, the time after which it will be permamently deleted. + * + */ + public Output expireTime() { + return this.expireTime; + } /** * A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. * @@ -667,6 +723,20 @@ public Output ingress() { public Output>> labels() { return Codegen.optional(this.labels); } + /** + * Email address of the last authenticated modifier. + * + */ + @Export(name="lastModifier", type=String.class, parameters={}) + private Output lastModifier; + + /** + * @return Email address of the last authenticated modifier. + * + */ + public Output lastModifier() { + return this.lastModifier; + } /** * Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. * @@ -871,6 +941,20 @@ public Output> traffics() { public Output uid() { return this.uid; } + /** + * The last-modified time. + * + */ + @Export(name="updateTime", type=String.class, parameters={}) + private Output updateTime; + + /** + * @return The last-modified time. + * + */ + public Output updateTime() { + return this.updateTime; + } /** * (Output) * Displays the target URI. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/JobState.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/JobState.java index a7e8515d51..7bcd08b493 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/JobState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/JobState.java @@ -121,6 +121,55 @@ public Optional>> conditions() { return Optional.ofNullable(this.conditions); } + /** + * (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * Email address of the authenticated creator. + * + */ + @Import(name="creator") + private @Nullable Output creator; + + /** + * @return Email address of the authenticated creator. + * + */ + public Optional> creator() { + return Optional.ofNullable(this.creator); + } + + /** + * The deletion time. + * + */ + @Import(name="deleteTime") + private @Nullable Output deleteTime; + + /** + * @return The deletion time. + * + */ + public Optional> deleteTime() { + return Optional.ofNullable(this.deleteTime); + } + /** * A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. * @@ -151,6 +200,21 @@ public Optional> executionCount() { return Optional.ofNullable(this.executionCount); } + /** + * For a deleted resource, the time after which it will be permamently deleted. + * + */ + @Import(name="expireTime") + private @Nullable Output expireTime; + + /** + * @return For a deleted resource, the time after which it will be permamently deleted. + * + */ + public Optional> expireTime() { + return Optional.ofNullable(this.expireTime); + } + /** * A number that monotonically increases every time the user modifies the desired state. * @@ -201,6 +265,21 @@ public Optional>> labels() { return Optional.ofNullable(this.labels); } + /** + * Email address of the last authenticated modifier. + * + */ + @Import(name="lastModifier") + private @Nullable Output lastModifier; + + /** + * @return Email address of the last authenticated modifier. + * + */ + public Optional> lastModifier() { + return Optional.ofNullable(this.lastModifier); + } + /** * Name of the last created execution. * Structure is documented below. @@ -371,6 +450,21 @@ public Optional> uid() { return Optional.ofNullable(this.uid); } + /** + * The last-modified time. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return The last-modified time. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + private JobState() {} private JobState(JobState $) { @@ -379,10 +473,15 @@ private JobState(JobState $) { this.client = $.client; this.clientVersion = $.clientVersion; this.conditions = $.conditions; + this.createTime = $.createTime; + this.creator = $.creator; + this.deleteTime = $.deleteTime; this.etag = $.etag; this.executionCount = $.executionCount; + this.expireTime = $.expireTime; this.generation = $.generation; this.labels = $.labels; + this.lastModifier = $.lastModifier; this.latestCreatedExecutions = $.latestCreatedExecutions; this.launchStage = $.launchStage; this.location = $.location; @@ -393,6 +492,7 @@ private JobState(JobState $) { this.template = $.template; this.terminalConditions = $.terminalConditions; this.uid = $.uid; + this.updateTime = $.updateTime; } public static Builder builder() { @@ -551,6 +651,73 @@ public Builder conditions(JobConditionArgs... conditions) { return conditions(List.of(conditions)); } + /** + * @param createTime (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param creator Email address of the authenticated creator. + * + * @return builder + * + */ + public Builder creator(@Nullable Output creator) { + $.creator = creator; + return this; + } + + /** + * @param creator Email address of the authenticated creator. + * + * @return builder + * + */ + public Builder creator(String creator) { + return creator(Output.of(creator)); + } + + /** + * @param deleteTime The deletion time. + * + * @return builder + * + */ + public Builder deleteTime(@Nullable Output deleteTime) { + $.deleteTime = deleteTime; + return this; + } + + /** + * @param deleteTime The deletion time. + * + * @return builder + * + */ + public Builder deleteTime(String deleteTime) { + return deleteTime(Output.of(deleteTime)); + } + /** * @param etag A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. * @@ -593,6 +760,27 @@ public Builder executionCount(Integer executionCount) { return executionCount(Output.of(executionCount)); } + /** + * @param expireTime For a deleted resource, the time after which it will be permamently deleted. + * + * @return builder + * + */ + public Builder expireTime(@Nullable Output expireTime) { + $.expireTime = expireTime; + return this; + } + + /** + * @param expireTime For a deleted resource, the time after which it will be permamently deleted. + * + * @return builder + * + */ + public Builder expireTime(String expireTime) { + return expireTime(Output.of(expireTime)); + } + /** * @param generation A number that monotonically increases every time the user modifies the desired state. * @@ -655,6 +843,27 @@ public Builder labels(Map labels) { return labels(Output.of(labels)); } + /** + * @param lastModifier Email address of the last authenticated modifier. + * + * @return builder + * + */ + public Builder lastModifier(@Nullable Output lastModifier) { + $.lastModifier = lastModifier; + return this; + } + + /** + * @param lastModifier Email address of the last authenticated modifier. + * + * @return builder + * + */ + public Builder lastModifier(String lastModifier) { + return lastModifier(Output.of(lastModifier)); + } + /** * @param latestCreatedExecutions Name of the last created execution. * Structure is documented below. @@ -907,6 +1116,27 @@ public Builder uid(String uid) { return uid(Output.of(uid)); } + /** + * @param updateTime The last-modified time. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime The last-modified time. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + public JobState build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceState.java b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceState.java index 8c78179880..c23ff15acf 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/cloudrunv2/inputs/ServiceState.java @@ -121,6 +121,36 @@ public Optional>> conditions() { return Optional.ofNullable(this.conditions); } + /** + * The creation time. + * + */ + @Import(name="createTime") + private @Nullable Output createTime; + + /** + * @return The creation time. + * + */ + public Optional> createTime() { + return Optional.ofNullable(this.createTime); + } + + /** + * Email address of the authenticated creator. + * + */ + @Import(name="creator") + private @Nullable Output creator; + + /** + * @return Email address of the authenticated creator. + * + */ + public Optional> creator() { + return Optional.ofNullable(this.creator); + } + /** * One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a * string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see @@ -140,6 +170,21 @@ public Optional>> customAudiences() { return Optional.ofNullable(this.customAudiences); } + /** + * The deletion time. + * + */ + @Import(name="deleteTime") + private @Nullable Output deleteTime; + + /** + * @return The deletion time. + * + */ + public Optional> deleteTime() { + return Optional.ofNullable(this.deleteTime); + } + /** * User-provided description of the Service. This field currently has a 512-character limit. * @@ -170,6 +215,21 @@ public Optional> etag() { return Optional.ofNullable(this.etag); } + /** + * For a deleted resource, the time after which it will be permamently deleted. + * + */ + @Import(name="expireTime") + private @Nullable Output expireTime; + + /** + * @return For a deleted resource, the time after which it will be permamently deleted. + * + */ + public Optional> expireTime() { + return Optional.ofNullable(this.expireTime); + } + /** * A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. * @@ -235,6 +295,21 @@ public Optional>> labels() { return Optional.ofNullable(this.labels); } + /** + * Email address of the last authenticated modifier. + * + */ + @Import(name="lastModifier") + private @Nullable Output lastModifier; + + /** + * @return Email address of the last authenticated modifier. + * + */ + public Optional> lastModifier() { + return Optional.ofNullable(this.lastModifier); + } + /** * Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. * @@ -452,6 +527,21 @@ public Optional> uid() { return Optional.ofNullable(this.uid); } + /** + * The last-modified time. + * + */ + @Import(name="updateTime") + private @Nullable Output updateTime; + + /** + * @return The last-modified time. + * + */ + public Optional> updateTime() { + return Optional.ofNullable(this.updateTime); + } + /** * (Output) * Displays the target URI. @@ -477,12 +567,17 @@ private ServiceState(ServiceState $) { this.client = $.client; this.clientVersion = $.clientVersion; this.conditions = $.conditions; + this.createTime = $.createTime; + this.creator = $.creator; this.customAudiences = $.customAudiences; + this.deleteTime = $.deleteTime; this.description = $.description; this.etag = $.etag; + this.expireTime = $.expireTime; this.generation = $.generation; this.ingress = $.ingress; this.labels = $.labels; + this.lastModifier = $.lastModifier; this.latestCreatedRevision = $.latestCreatedRevision; this.latestReadyRevision = $.latestReadyRevision; this.launchStage = $.launchStage; @@ -496,6 +591,7 @@ private ServiceState(ServiceState $) { this.trafficStatuses = $.trafficStatuses; this.traffics = $.traffics; this.uid = $.uid; + this.updateTime = $.updateTime; this.uri = $.uri; } @@ -655,6 +751,48 @@ public Builder conditions(ServiceConditionArgs... conditions) { return conditions(List.of(conditions)); } + /** + * @param createTime The creation time. + * + * @return builder + * + */ + public Builder createTime(@Nullable Output createTime) { + $.createTime = createTime; + return this; + } + + /** + * @param createTime The creation time. + * + * @return builder + * + */ + public Builder createTime(String createTime) { + return createTime(Output.of(createTime)); + } + + /** + * @param creator Email address of the authenticated creator. + * + * @return builder + * + */ + public Builder creator(@Nullable Output creator) { + $.creator = creator; + return this; + } + + /** + * @param creator Email address of the authenticated creator. + * + * @return builder + * + */ + public Builder creator(String creator) { + return creator(Output.of(creator)); + } + /** * @param customAudiences One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a * string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see @@ -692,6 +830,27 @@ public Builder customAudiences(String... customAudiences) { return customAudiences(List.of(customAudiences)); } + /** + * @param deleteTime The deletion time. + * + * @return builder + * + */ + public Builder deleteTime(@Nullable Output deleteTime) { + $.deleteTime = deleteTime; + return this; + } + + /** + * @param deleteTime The deletion time. + * + * @return builder + * + */ + public Builder deleteTime(String deleteTime) { + return deleteTime(Output.of(deleteTime)); + } + /** * @param description User-provided description of the Service. This field currently has a 512-character limit. * @@ -734,6 +893,27 @@ public Builder etag(String etag) { return etag(Output.of(etag)); } + /** + * @param expireTime For a deleted resource, the time after which it will be permamently deleted. + * + * @return builder + * + */ + public Builder expireTime(@Nullable Output expireTime) { + $.expireTime = expireTime; + return this; + } + + /** + * @param expireTime For a deleted resource, the time after which it will be permamently deleted. + * + * @return builder + * + */ + public Builder expireTime(String expireTime) { + return expireTime(Output.of(expireTime)); + } + /** * @param generation A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. * @@ -817,6 +997,27 @@ public Builder labels(Map labels) { return labels(Output.of(labels)); } + /** + * @param lastModifier Email address of the last authenticated modifier. + * + * @return builder + * + */ + public Builder lastModifier(@Nullable Output lastModifier) { + $.lastModifier = lastModifier; + return this; + } + + /** + * @param lastModifier Email address of the last authenticated modifier. + * + * @return builder + * + */ + public Builder lastModifier(String lastModifier) { + return lastModifier(Output.of(lastModifier)); + } + /** * @param latestCreatedRevision Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. * @@ -1145,6 +1346,27 @@ public Builder uid(String uid) { return uid(Output.of(uid)); } + /** + * @param updateTime The last-modified time. + * + * @return builder + * + */ + public Builder updateTime(@Nullable Output updateTime) { + $.updateTime = updateTime; + return this; + } + + /** + * @param updateTime The last-modified time. + * + * @return builder + * + */ + public Builder updateTime(String updateTime) { + return updateTime(Output.of(updateTime)); + } + /** * @param uri (Output) * Displays the target URI. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.java index d8023d59da..fcc15809ce 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/inputs/EnvironmentConfigPrivateEnvironmentConfigArgs.java @@ -37,6 +37,13 @@ public Optional> cloudSqlIpv4CidrBlock() { return Optional.ofNullable(this.cloudSqlIpv4CidrBlock); } + @Import(name="connectionType") + private @Nullable Output connectionType; + + public Optional> connectionType() { + return Optional.ofNullable(this.connectionType); + } + @Import(name="enablePrivateEndpoint") private @Nullable Output enablePrivateEndpoint; @@ -71,6 +78,7 @@ private EnvironmentConfigPrivateEnvironmentConfigArgs(EnvironmentConfigPrivateEn this.cloudComposerConnectionSubnetwork = $.cloudComposerConnectionSubnetwork; this.cloudComposerNetworkIpv4CidrBlock = $.cloudComposerNetworkIpv4CidrBlock; this.cloudSqlIpv4CidrBlock = $.cloudSqlIpv4CidrBlock; + this.connectionType = $.connectionType; this.enablePrivateEndpoint = $.enablePrivateEndpoint; this.enablePrivatelyUsedPublicIps = $.enablePrivatelyUsedPublicIps; this.masterIpv4CidrBlock = $.masterIpv4CidrBlock; @@ -122,6 +130,15 @@ public Builder cloudSqlIpv4CidrBlock(String cloudSqlIpv4CidrBlock) { return cloudSqlIpv4CidrBlock(Output.of(cloudSqlIpv4CidrBlock)); } + public Builder connectionType(@Nullable Output connectionType) { + $.connectionType = connectionType; + return this; + } + + public Builder connectionType(String connectionType) { + return connectionType(Output.of(connectionType)); + } + public Builder enablePrivateEndpoint(@Nullable Output enablePrivateEndpoint) { $.enablePrivateEndpoint = enablePrivateEndpoint; return this; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigPrivateEnvironmentConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigPrivateEnvironmentConfig.java index 9ade4399dd..8d9f6f6cba 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigPrivateEnvironmentConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/EnvironmentConfigPrivateEnvironmentConfig.java @@ -15,6 +15,7 @@ public final class EnvironmentConfigPrivateEnvironmentConfig { private @Nullable String cloudComposerConnectionSubnetwork; private @Nullable String cloudComposerNetworkIpv4CidrBlock; private @Nullable String cloudSqlIpv4CidrBlock; + private @Nullable String connectionType; private @Nullable Boolean enablePrivateEndpoint; private @Nullable Boolean enablePrivatelyUsedPublicIps; private @Nullable String masterIpv4CidrBlock; @@ -30,6 +31,9 @@ public Optional cloudComposerNetworkIpv4CidrBlock() { public Optional cloudSqlIpv4CidrBlock() { return Optional.ofNullable(this.cloudSqlIpv4CidrBlock); } + public Optional connectionType() { + return Optional.ofNullable(this.connectionType); + } public Optional enablePrivateEndpoint() { return Optional.ofNullable(this.enablePrivateEndpoint); } @@ -55,6 +59,7 @@ public static final class Builder { private @Nullable String cloudComposerConnectionSubnetwork; private @Nullable String cloudComposerNetworkIpv4CidrBlock; private @Nullable String cloudSqlIpv4CidrBlock; + private @Nullable String connectionType; private @Nullable Boolean enablePrivateEndpoint; private @Nullable Boolean enablePrivatelyUsedPublicIps; private @Nullable String masterIpv4CidrBlock; @@ -65,6 +70,7 @@ public Builder(EnvironmentConfigPrivateEnvironmentConfig defaults) { this.cloudComposerConnectionSubnetwork = defaults.cloudComposerConnectionSubnetwork; this.cloudComposerNetworkIpv4CidrBlock = defaults.cloudComposerNetworkIpv4CidrBlock; this.cloudSqlIpv4CidrBlock = defaults.cloudSqlIpv4CidrBlock; + this.connectionType = defaults.connectionType; this.enablePrivateEndpoint = defaults.enablePrivateEndpoint; this.enablePrivatelyUsedPublicIps = defaults.enablePrivatelyUsedPublicIps; this.masterIpv4CidrBlock = defaults.masterIpv4CidrBlock; @@ -87,6 +93,11 @@ public Builder cloudSqlIpv4CidrBlock(@Nullable String cloudSqlIpv4CidrBlock) { return this; } @CustomType.Setter + public Builder connectionType(@Nullable String connectionType) { + this.connectionType = connectionType; + return this; + } + @CustomType.Setter public Builder enablePrivateEndpoint(@Nullable Boolean enablePrivateEndpoint) { this.enablePrivateEndpoint = enablePrivateEndpoint; return this; @@ -111,6 +122,7 @@ public EnvironmentConfigPrivateEnvironmentConfig build() { o.cloudComposerConnectionSubnetwork = cloudComposerConnectionSubnetwork; o.cloudComposerNetworkIpv4CidrBlock = cloudComposerNetworkIpv4CidrBlock; o.cloudSqlIpv4CidrBlock = cloudSqlIpv4CidrBlock; + o.connectionType = connectionType; o.enablePrivateEndpoint = enablePrivateEndpoint; o.enablePrivatelyUsedPublicIps = enablePrivatelyUsedPublicIps; o.masterIpv4CidrBlock = masterIpv4CidrBlock; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigPrivateEnvironmentConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigPrivateEnvironmentConfig.java index e768fe324c..ecc1b2b7ae 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigPrivateEnvironmentConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/composer/outputs/GetEnvironmentConfigPrivateEnvironmentConfig.java @@ -13,6 +13,7 @@ public final class GetEnvironmentConfigPrivateEnvironmentConfig { private String cloudComposerConnectionSubnetwork; private String cloudComposerNetworkIpv4CidrBlock; private String cloudSqlIpv4CidrBlock; + private String connectionType; private Boolean enablePrivateEndpoint; private Boolean enablePrivatelyUsedPublicIps; private String masterIpv4CidrBlock; @@ -28,6 +29,9 @@ public String cloudComposerNetworkIpv4CidrBlock() { public String cloudSqlIpv4CidrBlock() { return this.cloudSqlIpv4CidrBlock; } + public String connectionType() { + return this.connectionType; + } public Boolean enablePrivateEndpoint() { return this.enablePrivateEndpoint; } @@ -53,6 +57,7 @@ public static final class Builder { private String cloudComposerConnectionSubnetwork; private String cloudComposerNetworkIpv4CidrBlock; private String cloudSqlIpv4CidrBlock; + private String connectionType; private Boolean enablePrivateEndpoint; private Boolean enablePrivatelyUsedPublicIps; private String masterIpv4CidrBlock; @@ -63,6 +68,7 @@ public Builder(GetEnvironmentConfigPrivateEnvironmentConfig defaults) { this.cloudComposerConnectionSubnetwork = defaults.cloudComposerConnectionSubnetwork; this.cloudComposerNetworkIpv4CidrBlock = defaults.cloudComposerNetworkIpv4CidrBlock; this.cloudSqlIpv4CidrBlock = defaults.cloudSqlIpv4CidrBlock; + this.connectionType = defaults.connectionType; this.enablePrivateEndpoint = defaults.enablePrivateEndpoint; this.enablePrivatelyUsedPublicIps = defaults.enablePrivatelyUsedPublicIps; this.masterIpv4CidrBlock = defaults.masterIpv4CidrBlock; @@ -85,6 +91,11 @@ public Builder cloudSqlIpv4CidrBlock(String cloudSqlIpv4CidrBlock) { return this; } @CustomType.Setter + public Builder connectionType(String connectionType) { + this.connectionType = Objects.requireNonNull(connectionType); + return this; + } + @CustomType.Setter public Builder enablePrivateEndpoint(Boolean enablePrivateEndpoint) { this.enablePrivateEndpoint = Objects.requireNonNull(enablePrivateEndpoint); return this; @@ -109,6 +120,7 @@ public GetEnvironmentConfigPrivateEnvironmentConfig build() { o.cloudComposerConnectionSubnetwork = cloudComposerConnectionSubnetwork; o.cloudComposerNetworkIpv4CidrBlock = cloudComposerNetworkIpv4CidrBlock; o.cloudSqlIpv4CidrBlock = cloudSqlIpv4CidrBlock; + o.connectionType = connectionType; o.enablePrivateEndpoint = enablePrivateEndpoint; o.enablePrivatelyUsedPublicIps = enablePrivatelyUsedPublicIps; o.masterIpv4CidrBlock = masterIpv4CidrBlock; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/ForwardingRule.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/ForwardingRule.java index 3b79313cdb..c9341e5a0c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/ForwardingRule.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/ForwardingRule.java @@ -92,7 +92,7 @@ * var proxySubnet = new Subnetwork("proxySubnet", SubnetworkArgs.builder() * .ipCidrRange("10.0.0.0/24") * .region("europe-west1") - * .purpose("INTERNAL_HTTPS_LOAD_BALANCER") + * .purpose("REGIONAL_MANAGED_PROXY") * .role("ACTIVE") * .network(ilbNetwork.id()) * .build(), CustomResourceOptions.builder() @@ -970,7 +970,7 @@ * .ipCidrRange("10.129.0.0/26") * .region("us-central1") * .network(defaultNetwork.id()) - * .purpose("INTERNAL_HTTPS_LOAD_BALANCER") + * .purpose("REGIONAL_MANAGED_PROXY") * .role("ACTIVE") * .build(), CustomResourceOptions.builder() * .provider(google_beta) diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/NetworkEdgeSecurityService.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/NetworkEdgeSecurityService.java index ae177de8d1..8e63bc510b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/NetworkEdgeSecurityService.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/NetworkEdgeSecurityService.java @@ -40,7 +40,7 @@ * * public static void stack(Context ctx) { * var default_ = new NetworkEdgeSecurityService("default", NetworkEdgeSecurityServiceArgs.builder() - * .region("asia-southeast1") + * .region("us-east1") * .description("My basic resource") * .build(), CustomResourceOptions.builder() * .provider(google_beta) diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java index 3b2845937f..9211437ded 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionNetworkEndpointGroup.java @@ -188,7 +188,7 @@ * * var appengineNegBucketObject = new BucketObject("appengineNegBucketObject", BucketObjectArgs.builder() * .bucket(appengineNegBucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var appengineNegFlexibleAppVersion = new FlexibleAppVersion("appengineNegFlexibleAppVersion", FlexibleAppVersionArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicy.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicy.java index 7117e456c8..ba1ef8bc49 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicy.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicy.java @@ -11,7 +11,9 @@ import com.pulumi.gcp.compute.RegionSecurityPolicyArgs; import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyState; import com.pulumi.gcp.compute.outputs.RegionSecurityPolicyDdosProtectionConfig; +import com.pulumi.gcp.compute.outputs.RegionSecurityPolicyUserDefinedField; import java.lang.String; +import java.util.List; import java.util.Optional; import javax.annotation.Nullable; @@ -87,6 +89,55 @@ * } * } * ``` + * ### Region Security Policy With User Defined Fields + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.compute.RegionSecurityPolicy; + * import com.pulumi.gcp.compute.RegionSecurityPolicyArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var region_sec_policy_user_defined_fields = new RegionSecurityPolicy("region-sec-policy-user-defined-fields", RegionSecurityPolicyArgs.builder() + * .description("with user defined fields") + * .type("CLOUD_ARMOR_NETWORK") + * .userDefinedFields( + * RegionSecurityPolicyUserDefinedFieldArgs.builder() + * .name("SIG1_AT_0") + * .base("UDP") + * .offset(8) + * .size(2) + * .mask("0x8F00") + * .build(), + * RegionSecurityPolicyUserDefinedFieldArgs.builder() + * .name("SIG2_AT_8") + * .base("UDP") + * .offset(16) + * .size(4) + * .mask("0xFFFFFFFF") + * .build()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * } + * } + * ``` * * ## Import * @@ -275,6 +326,26 @@ public Output selfLinkWithPolicyId() { public Output> type() { return Codegen.optional(this.type); } + /** + * Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + */ + @Export(name="userDefinedFields", type=List.class, parameters={RegionSecurityPolicyUserDefinedField.class}) + private Output> userDefinedFields; + + /** + * @return Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + */ + public Output>> userDefinedFields() { + return Codegen.optional(this.userDefinedFields); + } /** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyArgs.java index 5e40e78e3a..b7cd544ec5 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyArgs.java @@ -6,7 +6,9 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs; import java.lang.String; +import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -128,6 +130,27 @@ public Optional> type() { return Optional.ofNullable(this.type); } + /** + * Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + */ + @Import(name="userDefinedFields") + private @Nullable Output> userDefinedFields; + + /** + * @return Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + */ + public Optional>> userDefinedFields() { + return Optional.ofNullable(this.userDefinedFields); + } + private RegionSecurityPolicyArgs() {} private RegionSecurityPolicyArgs(RegionSecurityPolicyArgs $) { @@ -137,6 +160,7 @@ private RegionSecurityPolicyArgs(RegionSecurityPolicyArgs $) { this.project = $.project; this.region = $.region; this.type = $.type; + this.userDefinedFields = $.userDefinedFields; } public static Builder builder() { @@ -305,6 +329,46 @@ public Builder type(String type) { return type(Output.of(type)); } + /** + * @param userDefinedFields Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(@Nullable Output> userDefinedFields) { + $.userDefinedFields = userDefinedFields; + return this; + } + + /** + * @param userDefinedFields Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(List userDefinedFields) { + return userDefinedFields(Output.of(userDefinedFields)); + } + + /** + * @param userDefinedFields Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(RegionSecurityPolicyUserDefinedFieldArgs... userDefinedFields) { + return userDefinedFields(List.of(userDefinedFields)); + } + public RegionSecurityPolicyArgs build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRule.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRule.java new file mode 100644 index 0000000000..5b353a7c2d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRule.java @@ -0,0 +1,477 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Export; +import com.pulumi.core.annotations.ResourceType; +import com.pulumi.core.internal.Codegen; +import com.pulumi.gcp.Utilities; +import com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleState; +import com.pulumi.gcp.compute.outputs.RegionSecurityPolicyRuleMatch; +import com.pulumi.gcp.compute.outputs.RegionSecurityPolicyRuleNetworkMatch; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Optional; +import javax.annotation.Nullable; + +/** + * ## Example Usage + * ### Region Security Policy Rule Basic + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.compute.RegionSecurityPolicy; + * import com.pulumi.gcp.compute.RegionSecurityPolicyArgs; + * import com.pulumi.gcp.compute.RegionSecurityPolicyRule; + * import com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var default_ = new RegionSecurityPolicy("default", RegionSecurityPolicyArgs.builder() + * .region("us-west2") + * .description("basic region security policy") + * .type("CLOUD_ARMOR") + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var policyRule = new RegionSecurityPolicyRule("policyRule", RegionSecurityPolicyRuleArgs.builder() + * .region("us-west2") + * .securityPolicy(default_.name()) + * .description("new rule") + * .priority(100) + * .match(RegionSecurityPolicyRuleMatchArgs.builder() + * .versionedExpr("SRC_IPS_V1") + * .config(RegionSecurityPolicyRuleMatchConfigArgs.builder() + * .srcIpRanges("10.10.0.0/16") + * .build()) + * .build()) + * .action("allow") + * .preview(true) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * } + * } + * ``` + * ### Region Security Policy Rule Multiple Rules + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.compute.RegionSecurityPolicy; + * import com.pulumi.gcp.compute.RegionSecurityPolicyArgs; + * import com.pulumi.gcp.compute.RegionSecurityPolicyRule; + * import com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var default_ = new RegionSecurityPolicy("default", RegionSecurityPolicyArgs.builder() + * .region("us-west2") + * .description("basic region security policy") + * .type("CLOUD_ARMOR") + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var policyRuleOne = new RegionSecurityPolicyRule("policyRuleOne", RegionSecurityPolicyRuleArgs.builder() + * .region("us-west2") + * .securityPolicy(default_.name()) + * .description("new rule one") + * .priority(100) + * .match(RegionSecurityPolicyRuleMatchArgs.builder() + * .versionedExpr("SRC_IPS_V1") + * .config(RegionSecurityPolicyRuleMatchConfigArgs.builder() + * .srcIpRanges("10.10.0.0/16") + * .build()) + * .build()) + * .action("allow") + * .preview(true) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var policyRuleTwo = new RegionSecurityPolicyRule("policyRuleTwo", RegionSecurityPolicyRuleArgs.builder() + * .region("us-west2") + * .securityPolicy(default_.name()) + * .description("new rule two") + * .priority(101) + * .match(RegionSecurityPolicyRuleMatchArgs.builder() + * .versionedExpr("SRC_IPS_V1") + * .config(RegionSecurityPolicyRuleMatchConfigArgs.builder() + * .srcIpRanges( + * "192.168.0.0/16", + * "10.0.0.0/8") + * .build()) + * .build()) + * .action("allow") + * .preview(true) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * } + * } + * ``` + * ### Region Security Policy Rule With Network Match + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.compute.RegionSecurityPolicy; + * import com.pulumi.gcp.compute.RegionSecurityPolicyArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs; + * import com.pulumi.gcp.compute.NetworkEdgeSecurityService; + * import com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs; + * import com.pulumi.gcp.compute.RegionSecurityPolicyRule; + * import com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs; + * import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var policyddosprotection = new RegionSecurityPolicy("policyddosprotection", RegionSecurityPolicyArgs.builder() + * .region("us-west2") + * .description("policy for activating network DDoS protection for the desired region") + * .type("CLOUD_ARMOR_NETWORK") + * .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder() + * .ddosProtection("ADVANCED_PREVIEW") + * .build()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var edgeSecService = new NetworkEdgeSecurityService("edgeSecService", NetworkEdgeSecurityServiceArgs.builder() + * .region("us-west2") + * .description("linking policy to edge security service") + * .securityPolicy(policyddosprotection.selfLink()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var policynetworkmatch = new RegionSecurityPolicy("policynetworkmatch", RegionSecurityPolicyArgs.builder() + * .region("us-west2") + * .description("region security policy for network match") + * .type("CLOUD_ARMOR_NETWORK") + * .userDefinedFields(RegionSecurityPolicyUserDefinedFieldArgs.builder() + * .name("SIG1_AT_0") + * .base("TCP") + * .offset(8) + * .size(2) + * .mask("0x8F00") + * .build()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .dependsOn(edgeSecService) + * .build()); + * + * var policyRuleNetworkMatch = new RegionSecurityPolicyRule("policyRuleNetworkMatch", RegionSecurityPolicyRuleArgs.builder() + * .region("us-west2") + * .securityPolicy(policynetworkmatch.name()) + * .description("custom rule for network match") + * .priority(100) + * .networkMatch(RegionSecurityPolicyRuleNetworkMatchArgs.builder() + * .srcIpRanges("10.10.0.0/16") + * .userDefinedFields(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.builder() + * .name("SIG1_AT_0") + * .values("0x8F00") + * .build()) + * .build()) + * .action("allow") + * .preview(true) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * } + * } + * ``` + * + * ## Import + * + * RegionSecurityPolicyRule can be imported using any of these accepted formats + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}} + * ``` + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}} + * ``` + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}} + * ``` + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}} + * ``` + * + */ +@ResourceType(type="gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule") +public class RegionSecurityPolicyRule extends com.pulumi.resources.CustomResource { + /** + * The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + */ + @Export(name="action", type=String.class, parameters={}) + private Output action; + + /** + * @return The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + */ + public Output action() { + return this.action; + } + /** + * An optional description of this resource. Provide this property when you create the resource. + * + */ + @Export(name="description", type=String.class, parameters={}) + private Output description; + + /** + * @return An optional description of this resource. Provide this property when you create the resource. + * + */ + public Output> description() { + return Codegen.optional(this.description); + } + /** + * A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + */ + @Export(name="match", type=RegionSecurityPolicyRuleMatch.class, parameters={}) + private Output match; + + /** + * @return A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + */ + public Output> match() { + return Codegen.optional(this.match); + } + /** + * A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + */ + @Export(name="networkMatch", type=RegionSecurityPolicyRuleNetworkMatch.class, parameters={}) + private Output networkMatch; + + /** + * @return A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + */ + public Output> networkMatch() { + return Codegen.optional(this.networkMatch); + } + /** + * If set to true, the specified action is not enforced. + * + */ + @Export(name="preview", type=Boolean.class, parameters={}) + private Output preview; + + /** + * @return If set to true, the specified action is not enforced. + * + */ + public Output> preview() { + return Codegen.optional(this.preview); + } + /** + * An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + */ + @Export(name="priority", type=Integer.class, parameters={}) + private Output priority; + + /** + * @return An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + */ + public Output priority() { + return this.priority; + } + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Export(name="project", type=String.class, parameters={}) + private Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Output project() { + return this.project; + } + /** + * The Region in which the created Region Security Policy rule should reside. + * + */ + @Export(name="region", type=String.class, parameters={}) + private Output region; + + /** + * @return The Region in which the created Region Security Policy rule should reside. + * + */ + public Output region() { + return this.region; + } + /** + * The name of the security policy this rule belongs to. + * + * *** + * + */ + @Export(name="securityPolicy", type=String.class, parameters={}) + private Output securityPolicy; + + /** + * @return The name of the security policy this rule belongs to. + * + * *** + * + */ + public Output securityPolicy() { + return this.securityPolicy; + } + + /** + * + * @param name The _unique_ name of the resulting resource. + */ + public RegionSecurityPolicyRule(String name) { + this(name, RegionSecurityPolicyRuleArgs.Empty); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + */ + public RegionSecurityPolicyRule(String name, RegionSecurityPolicyRuleArgs args) { + this(name, args, null); + } + /** + * + * @param name The _unique_ name of the resulting resource. + * @param args The arguments to use to populate this resource's properties. + * @param options A bag of options that control this resource's behavior. + */ + public RegionSecurityPolicyRule(String name, RegionSecurityPolicyRuleArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", name, args == null ? RegionSecurityPolicyRuleArgs.Empty : args, makeResourceOptions(options, Codegen.empty())); + } + + private RegionSecurityPolicyRule(String name, Output id, @Nullable RegionSecurityPolicyRuleState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + super("gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule", name, state, makeResourceOptions(options, id)); + } + + private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) { + var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder() + .version(Utilities.getVersion()) + .build(); + return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id); + } + + /** + * Get an existing Host resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state + * @param options Optional settings to control the behavior of the CustomResource. + */ + public static RegionSecurityPolicyRule get(String name, Output id, @Nullable RegionSecurityPolicyRuleState state, @Nullable com.pulumi.resources.CustomResourceOptions options) { + return new RegionSecurityPolicyRule(name, id, state, options); + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRuleArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRuleArgs.java new file mode 100644 index 0000000000..7b42347fd1 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/RegionSecurityPolicyRuleArgs.java @@ -0,0 +1,467 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchArgs; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyRuleArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyRuleArgs Empty = new RegionSecurityPolicyRuleArgs(); + + /** + * The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + */ + @Import(name="action", required=true) + private Output action; + + /** + * @return The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + */ + public Output action() { + return this.action; + } + + /** + * An optional description of this resource. Provide this property when you create the resource. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return An optional description of this resource. Provide this property when you create the resource. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + */ + @Import(name="match") + private @Nullable Output match; + + /** + * @return A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + */ + public Optional> match() { + return Optional.ofNullable(this.match); + } + + /** + * A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + */ + @Import(name="networkMatch") + private @Nullable Output networkMatch; + + /** + * @return A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + */ + public Optional> networkMatch() { + return Optional.ofNullable(this.networkMatch); + } + + /** + * If set to true, the specified action is not enforced. + * + */ + @Import(name="preview") + private @Nullable Output preview; + + /** + * @return If set to true, the specified action is not enforced. + * + */ + public Optional> preview() { + return Optional.ofNullable(this.preview); + } + + /** + * An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + */ + @Import(name="priority", required=true) + private Output priority; + + /** + * @return An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + */ + public Output priority() { + return this.priority; + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The Region in which the created Region Security Policy rule should reside. + * + */ + @Import(name="region", required=true) + private Output region; + + /** + * @return The Region in which the created Region Security Policy rule should reside. + * + */ + public Output region() { + return this.region; + } + + /** + * The name of the security policy this rule belongs to. + * + * *** + * + */ + @Import(name="securityPolicy", required=true) + private Output securityPolicy; + + /** + * @return The name of the security policy this rule belongs to. + * + * *** + * + */ + public Output securityPolicy() { + return this.securityPolicy; + } + + private RegionSecurityPolicyRuleArgs() {} + + private RegionSecurityPolicyRuleArgs(RegionSecurityPolicyRuleArgs $) { + this.action = $.action; + this.description = $.description; + this.match = $.match; + this.networkMatch = $.networkMatch; + this.preview = $.preview; + this.priority = $.priority; + this.project = $.project; + this.region = $.region; + this.securityPolicy = $.securityPolicy; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyRuleArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyRuleArgs $; + + public Builder() { + $ = new RegionSecurityPolicyRuleArgs(); + } + + public Builder(RegionSecurityPolicyRuleArgs defaults) { + $ = new RegionSecurityPolicyRuleArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param action The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + * @return builder + * + */ + public Builder action(Output action) { + $.action = action; + return this; + } + + /** + * @param action The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + * @return builder + * + */ + public Builder action(String action) { + return action(Output.of(action)); + } + + /** + * @param description An optional description of this resource. Provide this property when you create the resource. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description An optional description of this resource. Provide this property when you create the resource. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param match A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + * @return builder + * + */ + public Builder match(@Nullable Output match) { + $.match = match; + return this; + } + + /** + * @param match A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + * @return builder + * + */ + public Builder match(RegionSecurityPolicyRuleMatchArgs match) { + return match(Output.of(match)); + } + + /** + * @param networkMatch A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkMatch(@Nullable Output networkMatch) { + $.networkMatch = networkMatch; + return this; + } + + /** + * @param networkMatch A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkMatch(RegionSecurityPolicyRuleNetworkMatchArgs networkMatch) { + return networkMatch(Output.of(networkMatch)); + } + + /** + * @param preview If set to true, the specified action is not enforced. + * + * @return builder + * + */ + public Builder preview(@Nullable Output preview) { + $.preview = preview; + return this; + } + + /** + * @param preview If set to true, the specified action is not enforced. + * + * @return builder + * + */ + public Builder preview(Boolean preview) { + return preview(Output.of(preview)); + } + + /** + * @param priority An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + * @return builder + * + */ + public Builder priority(Output priority) { + $.priority = priority; + return this; + } + + /** + * @param priority An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + * @return builder + * + */ + public Builder priority(Integer priority) { + return priority(Output.of(priority)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param region The Region in which the created Region Security Policy rule should reside. + * + * @return builder + * + */ + public Builder region(Output region) { + $.region = region; + return this; + } + + /** + * @param region The Region in which the created Region Security Policy rule should reside. + * + * @return builder + * + */ + public Builder region(String region) { + return region(Output.of(region)); + } + + /** + * @param securityPolicy The name of the security policy this rule belongs to. + * + * *** + * + * @return builder + * + */ + public Builder securityPolicy(Output securityPolicy) { + $.securityPolicy = securityPolicy; + return this; + } + + /** + * @param securityPolicy The name of the security policy this rule belongs to. + * + * *** + * + * @return builder + * + */ + public Builder securityPolicy(String securityPolicy) { + return securityPolicy(Output.of(securityPolicy)); + } + + public RegionSecurityPolicyRuleArgs build() { + $.action = Objects.requireNonNull($.action, "expected parameter 'action' to be non-null"); + $.priority = Objects.requireNonNull($.priority, "expected parameter 'priority' to be non-null"); + $.region = Objects.requireNonNull($.region, "expected parameter 'region' to be non-null"); + $.securityPolicy = Objects.requireNonNull($.securityPolicy, "expected parameter 'securityPolicy' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/Subnetwork.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/Subnetwork.java index 42beb35282..e158993085 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/Subnetwork.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/Subnetwork.java @@ -169,7 +169,7 @@ * var network_for_l7lb = new Subnetwork("network-for-l7lb", SubnetworkArgs.builder() * .ipCidrRange("10.0.0.0/22") * .region("us-central1") - * .purpose("INTERNAL_HTTPS_LOAD_BALANCER") + * .purpose("REGIONAL_MANAGED_PROXY") * .role("ACTIVE") * .network(custom_test.id()) * .build(), CustomResourceOptions.builder() @@ -417,9 +417,10 @@ public Output ipv6CidrRange() { return this.ipv6CidrRange; } /** - * Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * */ @@ -427,9 +428,10 @@ public Output ipv6CidrRange() { private Output logConfig; /** - * @return Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @return This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * */ @@ -529,26 +531,24 @@ public Output project() { return this.project; } /** - * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * */ @Export(name="purpose", type=String.class, parameters={}) private Output purpose; /** - * @return The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @return The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * */ public Output purpose() { @@ -570,10 +570,10 @@ public Output region() { } /** * The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * */ @@ -582,10 +582,10 @@ public Output region() { /** * @return The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * */ diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/SubnetworkArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/SubnetworkArgs.java index 17216f2e3e..21162e78ca 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/SubnetworkArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/SubnetworkArgs.java @@ -81,9 +81,10 @@ public Optional> ipv6AccessType() { } /** - * Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * */ @@ -91,9 +92,10 @@ public Optional> ipv6AccessType() { private @Nullable Output logConfig; /** - * @return Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @return This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * */ @@ -199,26 +201,24 @@ public Optional> project() { } /** - * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * */ @Import(name="purpose") private @Nullable Output purpose; /** - * @return The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @return The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * */ public Optional> purpose() { @@ -242,10 +242,10 @@ public Optional> region() { /** * The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * */ @@ -254,10 +254,10 @@ public Optional> region() { /** * @return The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * */ @@ -424,9 +424,10 @@ public Builder ipv6AccessType(String ipv6AccessType) { } /** - * @param logConfig Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @param logConfig This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * * @return builder @@ -438,9 +439,10 @@ public Builder logConfig(@Nullable Output logConfig) { } /** - * @param logConfig Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @param logConfig This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * * @return builder @@ -578,13 +580,12 @@ public Builder project(String project) { } /** - * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * * @return builder * @@ -595,13 +596,12 @@ public Builder purpose(@Nullable Output purpose) { } /** - * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * * @return builder * @@ -633,10 +633,10 @@ public Builder region(String region) { /** * @param role The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * * @return builder @@ -649,10 +649,10 @@ public Builder role(@Nullable Output role) { /** * @param role The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * * @return builder diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateDiskArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateDiskArgs.java index d42794355d..497a2ec04b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateDiskArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/InstanceTemplateDiskArgs.java @@ -213,6 +213,13 @@ public Optional> mode() { return Optional.ofNullable(this.mode); } + @Import(name="provisionedIops") + private @Nullable Output provisionedIops; + + public Optional> provisionedIops() { + return Optional.ofNullable(this.provisionedIops); + } + /** * - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -369,6 +376,7 @@ private InstanceTemplateDiskArgs(InstanceTemplateDiskArgs $) { this.interface_ = $.interface_; this.labels = $.labels; this.mode = $.mode; + this.provisionedIops = $.provisionedIops; this.resourcePolicies = $.resourcePolicies; this.source = $.source; this.sourceImage = $.sourceImage; @@ -648,6 +656,15 @@ public Builder mode(String mode) { return mode(Output.of(mode)); } + public Builder provisionedIops(@Nullable Output provisionedIops) { + $.provisionedIops = provisionedIops; + return this; + } + + public Builder provisionedIops(Integer provisionedIops) { + return provisionedIops(Output.of(provisionedIops)); + } + /** * @param resourcePolicies - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateDiskArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateDiskArgs.java index 07cfed1e98..ed9dfcefa6 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateDiskArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionInstanceTemplateDiskArgs.java @@ -213,6 +213,13 @@ public Optional> mode() { return Optional.ofNullable(this.mode); } + @Import(name="provisionedIops") + private @Nullable Output provisionedIops; + + public Optional> provisionedIops() { + return Optional.ofNullable(this.provisionedIops); + } + /** * - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -369,6 +376,7 @@ private RegionInstanceTemplateDiskArgs(RegionInstanceTemplateDiskArgs $) { this.interface_ = $.interface_; this.labels = $.labels; this.mode = $.mode; + this.provisionedIops = $.provisionedIops; this.resourcePolicies = $.resourcePolicies; this.source = $.source; this.sourceImage = $.sourceImage; @@ -648,6 +656,15 @@ public Builder mode(String mode) { return mode(Output.of(mode)); } + public Builder provisionedIops(@Nullable Output provisionedIops) { + $.provisionedIops = provisionedIops; + return this; + } + + public Builder provisionedIops(Integer provisionedIops) { + return provisionedIops(Output.of(provisionedIops)); + } + /** * @param resourcePolicies - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchArgs.java new file mode 100644 index 0000000000..bc25fce1ae --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchArgs.java @@ -0,0 +1,137 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyRuleMatchArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyRuleMatchArgs Empty = new RegionSecurityPolicyRuleMatchArgs(); + + /** + * The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + * + */ + @Import(name="config") + private @Nullable Output config; + + /** + * @return The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + * + */ + public Optional> config() { + return Optional.ofNullable(this.config); + } + + /** + * Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + * + */ + @Import(name="versionedExpr") + private @Nullable Output versionedExpr; + + /** + * @return Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + * + */ + public Optional> versionedExpr() { + return Optional.ofNullable(this.versionedExpr); + } + + private RegionSecurityPolicyRuleMatchArgs() {} + + private RegionSecurityPolicyRuleMatchArgs(RegionSecurityPolicyRuleMatchArgs $) { + this.config = $.config; + this.versionedExpr = $.versionedExpr; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyRuleMatchArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyRuleMatchArgs $; + + public Builder() { + $ = new RegionSecurityPolicyRuleMatchArgs(); + } + + public Builder(RegionSecurityPolicyRuleMatchArgs defaults) { + $ = new RegionSecurityPolicyRuleMatchArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param config The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + * + * @return builder + * + */ + public Builder config(@Nullable Output config) { + $.config = config; + return this; + } + + /** + * @param config The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + * + * @return builder + * + */ + public Builder config(RegionSecurityPolicyRuleMatchConfigArgs config) { + return config(Output.of(config)); + } + + /** + * @param versionedExpr Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + * + * @return builder + * + */ + public Builder versionedExpr(@Nullable Output versionedExpr) { + $.versionedExpr = versionedExpr; + return this; + } + + /** + * @param versionedExpr Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + * + * @return builder + * + */ + public Builder versionedExpr(String versionedExpr) { + return versionedExpr(Output.of(versionedExpr)); + } + + public RegionSecurityPolicyRuleMatchArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchConfigArgs.java new file mode 100644 index 0000000000..0ad5cffd99 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleMatchConfigArgs.java @@ -0,0 +1,94 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyRuleMatchConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyRuleMatchConfigArgs Empty = new RegionSecurityPolicyRuleMatchConfigArgs(); + + /** + * CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + */ + @Import(name="srcIpRanges") + private @Nullable Output> srcIpRanges; + + /** + * @return CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + */ + public Optional>> srcIpRanges() { + return Optional.ofNullable(this.srcIpRanges); + } + + private RegionSecurityPolicyRuleMatchConfigArgs() {} + + private RegionSecurityPolicyRuleMatchConfigArgs(RegionSecurityPolicyRuleMatchConfigArgs $) { + this.srcIpRanges = $.srcIpRanges; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyRuleMatchConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyRuleMatchConfigArgs $; + + public Builder() { + $ = new RegionSecurityPolicyRuleMatchConfigArgs(); + } + + public Builder(RegionSecurityPolicyRuleMatchConfigArgs defaults) { + $ = new RegionSecurityPolicyRuleMatchConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param srcIpRanges CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + * @return builder + * + */ + public Builder srcIpRanges(@Nullable Output> srcIpRanges) { + $.srcIpRanges = srcIpRanges; + return this; + } + + /** + * @param srcIpRanges CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + * @return builder + * + */ + public Builder srcIpRanges(List srcIpRanges) { + return srcIpRanges(Output.of(srcIpRanges)); + } + + /** + * @param srcIpRanges CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + * @return builder + * + */ + public Builder srcIpRanges(String... srcIpRanges) { + return srcIpRanges(List.of(srcIpRanges)); + } + + public RegionSecurityPolicyRuleMatchConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchArgs.java new file mode 100644 index 0000000000..5bb90bad45 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchArgs.java @@ -0,0 +1,430 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyRuleNetworkMatchArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyRuleNetworkMatchArgs Empty = new RegionSecurityPolicyRuleNetworkMatchArgs(); + + /** + * Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + @Import(name="destIpRanges") + private @Nullable Output> destIpRanges; + + /** + * @return Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + public Optional>> destIpRanges() { + return Optional.ofNullable(this.destIpRanges); + } + + /** + * Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + @Import(name="destPorts") + private @Nullable Output> destPorts; + + /** + * @return Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + public Optional>> destPorts() { + return Optional.ofNullable(this.destPorts); + } + + /** + * IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + */ + @Import(name="ipProtocols") + private @Nullable Output> ipProtocols; + + /** + * @return IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + */ + public Optional>> ipProtocols() { + return Optional.ofNullable(this.ipProtocols); + } + + /** + * BGP Autonomous System Number associated with the source IP address. + * + */ + @Import(name="srcAsns") + private @Nullable Output> srcAsns; + + /** + * @return BGP Autonomous System Number associated with the source IP address. + * + */ + public Optional>> srcAsns() { + return Optional.ofNullable(this.srcAsns); + } + + /** + * Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + @Import(name="srcIpRanges") + private @Nullable Output> srcIpRanges; + + /** + * @return Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + public Optional>> srcIpRanges() { + return Optional.ofNullable(this.srcIpRanges); + } + + /** + * Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + @Import(name="srcPorts") + private @Nullable Output> srcPorts; + + /** + * @return Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + public Optional>> srcPorts() { + return Optional.ofNullable(this.srcPorts); + } + + /** + * Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + */ + @Import(name="srcRegionCodes") + private @Nullable Output> srcRegionCodes; + + /** + * @return Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + */ + public Optional>> srcRegionCodes() { + return Optional.ofNullable(this.srcRegionCodes); + } + + /** + * User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + */ + @Import(name="userDefinedFields") + private @Nullable Output> userDefinedFields; + + /** + * @return User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + */ + public Optional>> userDefinedFields() { + return Optional.ofNullable(this.userDefinedFields); + } + + private RegionSecurityPolicyRuleNetworkMatchArgs() {} + + private RegionSecurityPolicyRuleNetworkMatchArgs(RegionSecurityPolicyRuleNetworkMatchArgs $) { + this.destIpRanges = $.destIpRanges; + this.destPorts = $.destPorts; + this.ipProtocols = $.ipProtocols; + this.srcAsns = $.srcAsns; + this.srcIpRanges = $.srcIpRanges; + this.srcPorts = $.srcPorts; + this.srcRegionCodes = $.srcRegionCodes; + this.userDefinedFields = $.userDefinedFields; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyRuleNetworkMatchArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyRuleNetworkMatchArgs $; + + public Builder() { + $ = new RegionSecurityPolicyRuleNetworkMatchArgs(); + } + + public Builder(RegionSecurityPolicyRuleNetworkMatchArgs defaults) { + $ = new RegionSecurityPolicyRuleNetworkMatchArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param destIpRanges Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + * @return builder + * + */ + public Builder destIpRanges(@Nullable Output> destIpRanges) { + $.destIpRanges = destIpRanges; + return this; + } + + /** + * @param destIpRanges Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + * @return builder + * + */ + public Builder destIpRanges(List destIpRanges) { + return destIpRanges(Output.of(destIpRanges)); + } + + /** + * @param destIpRanges Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + * @return builder + * + */ + public Builder destIpRanges(String... destIpRanges) { + return destIpRanges(List.of(destIpRanges)); + } + + /** + * @param destPorts Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + * @return builder + * + */ + public Builder destPorts(@Nullable Output> destPorts) { + $.destPorts = destPorts; + return this; + } + + /** + * @param destPorts Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + * @return builder + * + */ + public Builder destPorts(List destPorts) { + return destPorts(Output.of(destPorts)); + } + + /** + * @param destPorts Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + * @return builder + * + */ + public Builder destPorts(String... destPorts) { + return destPorts(List.of(destPorts)); + } + + /** + * @param ipProtocols IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + * @return builder + * + */ + public Builder ipProtocols(@Nullable Output> ipProtocols) { + $.ipProtocols = ipProtocols; + return this; + } + + /** + * @param ipProtocols IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + * @return builder + * + */ + public Builder ipProtocols(List ipProtocols) { + return ipProtocols(Output.of(ipProtocols)); + } + + /** + * @param ipProtocols IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + * @return builder + * + */ + public Builder ipProtocols(String... ipProtocols) { + return ipProtocols(List.of(ipProtocols)); + } + + /** + * @param srcAsns BGP Autonomous System Number associated with the source IP address. + * + * @return builder + * + */ + public Builder srcAsns(@Nullable Output> srcAsns) { + $.srcAsns = srcAsns; + return this; + } + + /** + * @param srcAsns BGP Autonomous System Number associated with the source IP address. + * + * @return builder + * + */ + public Builder srcAsns(List srcAsns) { + return srcAsns(Output.of(srcAsns)); + } + + /** + * @param srcAsns BGP Autonomous System Number associated with the source IP address. + * + * @return builder + * + */ + public Builder srcAsns(Integer... srcAsns) { + return srcAsns(List.of(srcAsns)); + } + + /** + * @param srcIpRanges Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + * @return builder + * + */ + public Builder srcIpRanges(@Nullable Output> srcIpRanges) { + $.srcIpRanges = srcIpRanges; + return this; + } + + /** + * @param srcIpRanges Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + * @return builder + * + */ + public Builder srcIpRanges(List srcIpRanges) { + return srcIpRanges(Output.of(srcIpRanges)); + } + + /** + * @param srcIpRanges Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + * @return builder + * + */ + public Builder srcIpRanges(String... srcIpRanges) { + return srcIpRanges(List.of(srcIpRanges)); + } + + /** + * @param srcPorts Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + * @return builder + * + */ + public Builder srcPorts(@Nullable Output> srcPorts) { + $.srcPorts = srcPorts; + return this; + } + + /** + * @param srcPorts Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + * @return builder + * + */ + public Builder srcPorts(List srcPorts) { + return srcPorts(Output.of(srcPorts)); + } + + /** + * @param srcPorts Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + * @return builder + * + */ + public Builder srcPorts(String... srcPorts) { + return srcPorts(List.of(srcPorts)); + } + + /** + * @param srcRegionCodes Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + * @return builder + * + */ + public Builder srcRegionCodes(@Nullable Output> srcRegionCodes) { + $.srcRegionCodes = srcRegionCodes; + return this; + } + + /** + * @param srcRegionCodes Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + * @return builder + * + */ + public Builder srcRegionCodes(List srcRegionCodes) { + return srcRegionCodes(Output.of(srcRegionCodes)); + } + + /** + * @param srcRegionCodes Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + * @return builder + * + */ + public Builder srcRegionCodes(String... srcRegionCodes) { + return srcRegionCodes(List.of(srcRegionCodes)); + } + + /** + * @param userDefinedFields User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(@Nullable Output> userDefinedFields) { + $.userDefinedFields = userDefinedFields; + return this; + } + + /** + * @param userDefinedFields User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(List userDefinedFields) { + return userDefinedFields(Output.of(userDefinedFields)); + } + + /** + * @param userDefinedFields User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs... userDefinedFields) { + return userDefinedFields(List.of(userDefinedFields)); + } + + public RegionSecurityPolicyRuleNetworkMatchArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.java new file mode 100644 index 0000000000..b166a18c42 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.java @@ -0,0 +1,131 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs Empty = new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs(); + + /** + * Name of the user-defined field, as given in the definition. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return Name of the user-defined field, as given in the definition. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + */ + @Import(name="values") + private @Nullable Output> values; + + /** + * @return Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + */ + public Optional>> values() { + return Optional.ofNullable(this.values); + } + + private RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs() {} + + private RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs $) { + this.name = $.name; + this.values = $.values; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs $; + + public Builder() { + $ = new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs(); + } + + public Builder(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs defaults) { + $ = new RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param name Name of the user-defined field, as given in the definition. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name Name of the user-defined field, as given in the definition. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param values Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + * @return builder + * + */ + public Builder values(@Nullable Output> values) { + $.values = values; + return this; + } + + /** + * @param values Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + * @return builder + * + */ + public Builder values(List values) { + return values(Output.of(values)); + } + + /** + * @param values Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + * @return builder + * + */ + public Builder values(String... values) { + return values(List.of(values)); + } + + public RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleState.java new file mode 100644 index 0000000000..9200f403dc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyRuleState.java @@ -0,0 +1,463 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchArgs; +import java.lang.Boolean; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyRuleState extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyRuleState Empty = new RegionSecurityPolicyRuleState(); + + /** + * The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + */ + @Import(name="action") + private @Nullable Output action; + + /** + * @return The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + */ + public Optional> action() { + return Optional.ofNullable(this.action); + } + + /** + * An optional description of this resource. Provide this property when you create the resource. + * + */ + @Import(name="description") + private @Nullable Output description; + + /** + * @return An optional description of this resource. Provide this property when you create the resource. + * + */ + public Optional> description() { + return Optional.ofNullable(this.description); + } + + /** + * A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + */ + @Import(name="match") + private @Nullable Output match; + + /** + * @return A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + */ + public Optional> match() { + return Optional.ofNullable(this.match); + } + + /** + * A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + */ + @Import(name="networkMatch") + private @Nullable Output networkMatch; + + /** + * @return A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + */ + public Optional> networkMatch() { + return Optional.ofNullable(this.networkMatch); + } + + /** + * If set to true, the specified action is not enforced. + * + */ + @Import(name="preview") + private @Nullable Output preview; + + /** + * @return If set to true, the specified action is not enforced. + * + */ + public Optional> preview() { + return Optional.ofNullable(this.preview); + } + + /** + * An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + */ + @Import(name="priority") + private @Nullable Output priority; + + /** + * @return An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + */ + public Optional> priority() { + return Optional.ofNullable(this.priority); + } + + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + @Import(name="project") + private @Nullable Output project; + + /** + * @return The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + */ + public Optional> project() { + return Optional.ofNullable(this.project); + } + + /** + * The Region in which the created Region Security Policy rule should reside. + * + */ + @Import(name="region") + private @Nullable Output region; + + /** + * @return The Region in which the created Region Security Policy rule should reside. + * + */ + public Optional> region() { + return Optional.ofNullable(this.region); + } + + /** + * The name of the security policy this rule belongs to. + * + * *** + * + */ + @Import(name="securityPolicy") + private @Nullable Output securityPolicy; + + /** + * @return The name of the security policy this rule belongs to. + * + * *** + * + */ + public Optional> securityPolicy() { + return Optional.ofNullable(this.securityPolicy); + } + + private RegionSecurityPolicyRuleState() {} + + private RegionSecurityPolicyRuleState(RegionSecurityPolicyRuleState $) { + this.action = $.action; + this.description = $.description; + this.match = $.match; + this.networkMatch = $.networkMatch; + this.preview = $.preview; + this.priority = $.priority; + this.project = $.project; + this.region = $.region; + this.securityPolicy = $.securityPolicy; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyRuleState defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyRuleState $; + + public Builder() { + $ = new RegionSecurityPolicyRuleState(); + } + + public Builder(RegionSecurityPolicyRuleState defaults) { + $ = new RegionSecurityPolicyRuleState(Objects.requireNonNull(defaults)); + } + + /** + * @param action The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + * @return builder + * + */ + public Builder action(@Nullable Output action) { + $.action = action; + return this; + } + + /** + * @param action The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + * + * @return builder + * + */ + public Builder action(String action) { + return action(Output.of(action)); + } + + /** + * @param description An optional description of this resource. Provide this property when you create the resource. + * + * @return builder + * + */ + public Builder description(@Nullable Output description) { + $.description = description; + return this; + } + + /** + * @param description An optional description of this resource. Provide this property when you create the resource. + * + * @return builder + * + */ + public Builder description(String description) { + return description(Output.of(description)); + } + + /** + * @param match A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + * @return builder + * + */ + public Builder match(@Nullable Output match) { + $.match = match; + return this; + } + + /** + * @param match A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + * + * @return builder + * + */ + public Builder match(RegionSecurityPolicyRuleMatchArgs match) { + return match(Output.of(match)); + } + + /** + * @param networkMatch A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkMatch(@Nullable Output networkMatch) { + $.networkMatch = networkMatch; + return this; + } + + /** + * @param networkMatch A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + * + * @return builder + * + */ + public Builder networkMatch(RegionSecurityPolicyRuleNetworkMatchArgs networkMatch) { + return networkMatch(Output.of(networkMatch)); + } + + /** + * @param preview If set to true, the specified action is not enforced. + * + * @return builder + * + */ + public Builder preview(@Nullable Output preview) { + $.preview = preview; + return this; + } + + /** + * @param preview If set to true, the specified action is not enforced. + * + * @return builder + * + */ + public Builder preview(Boolean preview) { + return preview(Output.of(preview)); + } + + /** + * @param priority An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + * @return builder + * + */ + public Builder priority(@Nullable Output priority) { + $.priority = priority; + return this; + } + + /** + * @param priority An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + * + * @return builder + * + */ + public Builder priority(Integer priority) { + return priority(Output.of(priority)); + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(@Nullable Output project) { + $.project = project; + return this; + } + + /** + * @param project The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + * + * @return builder + * + */ + public Builder project(String project) { + return project(Output.of(project)); + } + + /** + * @param region The Region in which the created Region Security Policy rule should reside. + * + * @return builder + * + */ + public Builder region(@Nullable Output region) { + $.region = region; + return this; + } + + /** + * @param region The Region in which the created Region Security Policy rule should reside. + * + * @return builder + * + */ + public Builder region(String region) { + return region(Output.of(region)); + } + + /** + * @param securityPolicy The name of the security policy this rule belongs to. + * + * *** + * + * @return builder + * + */ + public Builder securityPolicy(@Nullable Output securityPolicy) { + $.securityPolicy = securityPolicy; + return this; + } + + /** + * @param securityPolicy The name of the security policy this rule belongs to. + * + * *** + * + * @return builder + * + */ + public Builder securityPolicy(String securityPolicy) { + return securityPolicy(Output.of(securityPolicy)); + } + + public RegionSecurityPolicyRuleState build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyState.java index 6573af61ef..7ba55af7ff 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyState.java @@ -6,7 +6,9 @@ import com.pulumi.core.Output; import com.pulumi.core.annotations.Import; import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs; +import com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs; import java.lang.String; +import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -190,6 +192,27 @@ public Optional> type() { return Optional.ofNullable(this.type); } + /** + * Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + */ + @Import(name="userDefinedFields") + private @Nullable Output> userDefinedFields; + + /** + * @return Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + */ + public Optional>> userDefinedFields() { + return Optional.ofNullable(this.userDefinedFields); + } + private RegionSecurityPolicyState() {} private RegionSecurityPolicyState(RegionSecurityPolicyState $) { @@ -203,6 +226,7 @@ private RegionSecurityPolicyState(RegionSecurityPolicyState $) { this.selfLink = $.selfLink; this.selfLinkWithPolicyId = $.selfLinkWithPolicyId; this.type = $.type; + this.userDefinedFields = $.userDefinedFields; } public static Builder builder() { @@ -457,6 +481,46 @@ public Builder type(String type) { return type(Output.of(type)); } + /** + * @param userDefinedFields Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(@Nullable Output> userDefinedFields) { + $.userDefinedFields = userDefinedFields; + return this; + } + + /** + * @param userDefinedFields Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(List userDefinedFields) { + return userDefinedFields(Output.of(userDefinedFields)); + } + + /** + * @param userDefinedFields Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + * + * @return builder + * + */ + public Builder userDefinedFields(RegionSecurityPolicyUserDefinedFieldArgs... userDefinedFields) { + return userDefinedFields(List.of(userDefinedFields)); + } + public RegionSecurityPolicyState build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyUserDefinedFieldArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyUserDefinedFieldArgs.java new file mode 100644 index 0000000000..a1e7c9abb9 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/RegionSecurityPolicyUserDefinedFieldArgs.java @@ -0,0 +1,261 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class RegionSecurityPolicyUserDefinedFieldArgs extends com.pulumi.resources.ResourceArgs { + + public static final RegionSecurityPolicyUserDefinedFieldArgs Empty = new RegionSecurityPolicyUserDefinedFieldArgs(); + + /** + * The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + * + */ + @Import(name="base", required=true) + private Output base; + + /** + * @return The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + * + */ + public Output base() { + return this.base; + } + + /** + * If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + * + */ + @Import(name="mask") + private @Nullable Output mask; + + /** + * @return If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + * + */ + public Optional> mask() { + return Optional.ofNullable(this.mask); + } + + /** + * The name of this field. Must be unique within the policy. + * + */ + @Import(name="name") + private @Nullable Output name; + + /** + * @return The name of this field. Must be unique within the policy. + * + */ + public Optional> name() { + return Optional.ofNullable(this.name); + } + + /** + * Offset of the first byte of the field (in network byte order) relative to 'base'. + * + */ + @Import(name="offset") + private @Nullable Output offset; + + /** + * @return Offset of the first byte of the field (in network byte order) relative to 'base'. + * + */ + public Optional> offset() { + return Optional.ofNullable(this.offset); + } + + /** + * Size of the field in bytes. Valid values: 1-4. + * + */ + @Import(name="size") + private @Nullable Output size; + + /** + * @return Size of the field in bytes. Valid values: 1-4. + * + */ + public Optional> size() { + return Optional.ofNullable(this.size); + } + + private RegionSecurityPolicyUserDefinedFieldArgs() {} + + private RegionSecurityPolicyUserDefinedFieldArgs(RegionSecurityPolicyUserDefinedFieldArgs $) { + this.base = $.base; + this.mask = $.mask; + this.name = $.name; + this.offset = $.offset; + this.size = $.size; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(RegionSecurityPolicyUserDefinedFieldArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private RegionSecurityPolicyUserDefinedFieldArgs $; + + public Builder() { + $ = new RegionSecurityPolicyUserDefinedFieldArgs(); + } + + public Builder(RegionSecurityPolicyUserDefinedFieldArgs defaults) { + $ = new RegionSecurityPolicyUserDefinedFieldArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param base The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + * + * @return builder + * + */ + public Builder base(Output base) { + $.base = base; + return this; + } + + /** + * @param base The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + * + * @return builder + * + */ + public Builder base(String base) { + return base(Output.of(base)); + } + + /** + * @param mask If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + * + * @return builder + * + */ + public Builder mask(@Nullable Output mask) { + $.mask = mask; + return this; + } + + /** + * @param mask If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + * + * @return builder + * + */ + public Builder mask(String mask) { + return mask(Output.of(mask)); + } + + /** + * @param name The name of this field. Must be unique within the policy. + * + * @return builder + * + */ + public Builder name(@Nullable Output name) { + $.name = name; + return this; + } + + /** + * @param name The name of this field. Must be unique within the policy. + * + * @return builder + * + */ + public Builder name(String name) { + return name(Output.of(name)); + } + + /** + * @param offset Offset of the first byte of the field (in network byte order) relative to 'base'. + * + * @return builder + * + */ + public Builder offset(@Nullable Output offset) { + $.offset = offset; + return this; + } + + /** + * @param offset Offset of the first byte of the field (in network byte order) relative to 'base'. + * + * @return builder + * + */ + public Builder offset(Integer offset) { + return offset(Output.of(offset)); + } + + /** + * @param size Size of the field in bytes. Valid values: 1-4. + * + * @return builder + * + */ + public Builder size(@Nullable Output size) { + $.size = size; + return this; + } + + /** + * @param size Size of the field in bytes. Valid values: 1-4. + * + * @return builder + * + */ + public Builder size(Integer size) { + return size(Output.of(size)); + } + + public RegionSecurityPolicyUserDefinedFieldArgs build() { + $.base = Objects.requireNonNull($.base, "expected parameter 'base' to be non-null"); + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SecurityPolicyAdvancedOptionsConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SecurityPolicyAdvancedOptionsConfigArgs.java index bfccb9dc8b..d68cdeaf4b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SecurityPolicyAdvancedOptionsConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SecurityPolicyAdvancedOptionsConfigArgs.java @@ -7,6 +7,7 @@ import com.pulumi.core.annotations.Import; import com.pulumi.gcp.compute.inputs.SecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs; import java.lang.String; +import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -71,12 +72,28 @@ public Optional> logLevel() { return Optional.ofNullable(this.logLevel); } + /** + * ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + */ + @Import(name="userIpRequestHeaders") + private @Nullable Output> userIpRequestHeaders; + + /** + * @return ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + */ + public Optional>> userIpRequestHeaders() { + return Optional.ofNullable(this.userIpRequestHeaders); + } + private SecurityPolicyAdvancedOptionsConfigArgs() {} private SecurityPolicyAdvancedOptionsConfigArgs(SecurityPolicyAdvancedOptionsConfigArgs $) { this.jsonCustomConfig = $.jsonCustomConfig; this.jsonParsing = $.jsonParsing; this.logLevel = $.logLevel; + this.userIpRequestHeaders = $.userIpRequestHeaders; } public static Builder builder() { @@ -170,6 +187,37 @@ public Builder logLevel(String logLevel) { return logLevel(Output.of(logLevel)); } + /** + * @param userIpRequestHeaders ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + * @return builder + * + */ + public Builder userIpRequestHeaders(@Nullable Output> userIpRequestHeaders) { + $.userIpRequestHeaders = userIpRequestHeaders; + return this; + } + + /** + * @param userIpRequestHeaders ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + * @return builder + * + */ + public Builder userIpRequestHeaders(List userIpRequestHeaders) { + return userIpRequestHeaders(Output.of(userIpRequestHeaders)); + } + + /** + * @param userIpRequestHeaders ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + * @return builder + * + */ + public Builder userIpRequestHeaders(String... userIpRequestHeaders) { + return userIpRequestHeaders(List.of(userIpRequestHeaders)); + } + public SecurityPolicyAdvancedOptionsConfigArgs build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SubnetworkState.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SubnetworkState.java index 9193212e00..231b2b724b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SubnetworkState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/inputs/SubnetworkState.java @@ -166,9 +166,10 @@ public Optional> ipv6CidrRange() { } /** - * Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * */ @@ -176,9 +177,10 @@ public Optional> ipv6CidrRange() { private @Nullable Output logConfig; /** - * @return Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @return This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * */ @@ -284,26 +286,24 @@ public Optional> project() { } /** - * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * */ @Import(name="purpose") private @Nullable Output purpose; /** - * @return The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @return The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * */ public Optional> purpose() { @@ -327,10 +327,10 @@ public Optional> region() { /** * The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * */ @@ -339,10 +339,10 @@ public Optional> region() { /** * @return The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * */ @@ -645,9 +645,10 @@ public Builder ipv6CidrRange(String ipv6CidrRange) { } /** - * @param logConfig Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @param logConfig This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * * @return builder @@ -659,9 +660,10 @@ public Builder logConfig(@Nullable Output logConfig) { } /** - * @param logConfig Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * @param logConfig This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. * * @return builder @@ -799,13 +801,12 @@ public Builder project(String project) { } /** - * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * * @return builder * @@ -816,13 +817,12 @@ public Builder purpose(@Nullable Output purpose) { } /** - * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * @param purpose The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * * @return builder * @@ -854,10 +854,10 @@ public Builder region(String region) { /** * @param role The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * * @return builder @@ -870,10 +870,10 @@ public Builder role(@Nullable Output role) { /** * @param role The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. * * @return builder diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateDisk.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateDisk.java index 6bccc675b1..991fab4e1e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateDisk.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetInstanceTemplateDisk.java @@ -79,6 +79,7 @@ public final class GetInstanceTemplateDisk { * */ private String mode; + private Integer provisionedIops; /** * @return (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -195,6 +196,9 @@ public Map labels() { public String mode() { return this.mode; } + public Integer provisionedIops() { + return this.provisionedIops; + } /** * @return (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -260,6 +264,7 @@ public static final class Builder { private String interface_; private Map labels; private String mode; + private Integer provisionedIops; private List resourcePolicies; private String source; private String sourceImage; @@ -280,6 +285,7 @@ public Builder(GetInstanceTemplateDisk defaults) { this.interface_ = defaults.interface_; this.labels = defaults.labels; this.mode = defaults.mode; + this.provisionedIops = defaults.provisionedIops; this.resourcePolicies = defaults.resourcePolicies; this.source = defaults.source; this.sourceImage = defaults.sourceImage; @@ -343,6 +349,11 @@ public Builder mode(String mode) { return this; } @CustomType.Setter + public Builder provisionedIops(Integer provisionedIops) { + this.provisionedIops = Objects.requireNonNull(provisionedIops); + return this; + } + @CustomType.Setter public Builder resourcePolicies(List resourcePolicies) { this.resourcePolicies = Objects.requireNonNull(resourcePolicies); return this; @@ -398,6 +409,7 @@ public GetInstanceTemplateDisk build() { o.interface_ = interface_; o.labels = labels; o.mode = mode; + o.provisionedIops = provisionedIops; o.resourcePolicies = resourcePolicies; o.source = source; o.sourceImage = sourceImage; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateDisk.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateDisk.java index 4de9889b35..e0f111a82c 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateDisk.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/GetRegionInstanceTemplateDisk.java @@ -79,6 +79,7 @@ public final class GetRegionInstanceTemplateDisk { * */ private String mode; + private Integer provisionedIops; /** * @return (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -195,6 +196,9 @@ public Map labels() { public String mode() { return this.mode; } + public Integer provisionedIops() { + return this.provisionedIops; + } /** * @return (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -260,6 +264,7 @@ public static final class Builder { private String interface_; private Map labels; private String mode; + private Integer provisionedIops; private List resourcePolicies; private String source; private String sourceImage; @@ -280,6 +285,7 @@ public Builder(GetRegionInstanceTemplateDisk defaults) { this.interface_ = defaults.interface_; this.labels = defaults.labels; this.mode = defaults.mode; + this.provisionedIops = defaults.provisionedIops; this.resourcePolicies = defaults.resourcePolicies; this.source = defaults.source; this.sourceImage = defaults.sourceImage; @@ -343,6 +349,11 @@ public Builder mode(String mode) { return this; } @CustomType.Setter + public Builder provisionedIops(Integer provisionedIops) { + this.provisionedIops = Objects.requireNonNull(provisionedIops); + return this; + } + @CustomType.Setter public Builder resourcePolicies(List resourcePolicies) { this.resourcePolicies = Objects.requireNonNull(resourcePolicies); return this; @@ -398,6 +409,7 @@ public GetRegionInstanceTemplateDisk build() { o.interface_ = interface_; o.labels = labels; o.mode = mode; + o.provisionedIops = provisionedIops; o.resourcePolicies = resourcePolicies; o.source = source; o.sourceImage = sourceImage; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateDisk.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateDisk.java index 1991d49477..a8f972b0dc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateDisk.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/InstanceTemplateDisk.java @@ -88,6 +88,7 @@ public final class InstanceTemplateDisk { * */ private @Nullable String mode; + private @Nullable Integer provisionedIops; /** * @return - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -235,6 +236,9 @@ public Map labels() { public Optional mode() { return Optional.ofNullable(this.mode); } + public Optional provisionedIops() { + return Optional.ofNullable(this.provisionedIops); + } /** * @return - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -323,6 +327,7 @@ public static final class Builder { private @Nullable String interface_; private @Nullable Map labels; private @Nullable String mode; + private @Nullable Integer provisionedIops; private @Nullable String resourcePolicies; private @Nullable String source; private @Nullable String sourceImage; @@ -343,6 +348,7 @@ public Builder(InstanceTemplateDisk defaults) { this.interface_ = defaults.interface_; this.labels = defaults.labels; this.mode = defaults.mode; + this.provisionedIops = defaults.provisionedIops; this.resourcePolicies = defaults.resourcePolicies; this.source = defaults.source; this.sourceImage = defaults.sourceImage; @@ -403,6 +409,11 @@ public Builder mode(@Nullable String mode) { return this; } @CustomType.Setter + public Builder provisionedIops(@Nullable Integer provisionedIops) { + this.provisionedIops = provisionedIops; + return this; + } + @CustomType.Setter public Builder resourcePolicies(@Nullable String resourcePolicies) { this.resourcePolicies = resourcePolicies; return this; @@ -449,6 +460,7 @@ public InstanceTemplateDisk build() { o.interface_ = interface_; o.labels = labels; o.mode = mode; + o.provisionedIops = provisionedIops; o.resourcePolicies = resourcePolicies; o.source = source; o.sourceImage = sourceImage; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateDisk.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateDisk.java index a73ee294ff..efd6a103fd 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateDisk.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionInstanceTemplateDisk.java @@ -88,6 +88,7 @@ public final class RegionInstanceTemplateDisk { * */ private @Nullable String mode; + private @Nullable Integer provisionedIops; /** * @return - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -235,6 +236,9 @@ public Map labels() { public Optional mode() { return Optional.ofNullable(this.mode); } + public Optional provisionedIops() { + return Optional.ofNullable(this.provisionedIops); + } /** * @return - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. * @@ -323,6 +327,7 @@ public static final class Builder { private @Nullable String interface_; private @Nullable Map labels; private @Nullable String mode; + private @Nullable Integer provisionedIops; private @Nullable String resourcePolicies; private @Nullable String source; private @Nullable String sourceImage; @@ -343,6 +348,7 @@ public Builder(RegionInstanceTemplateDisk defaults) { this.interface_ = defaults.interface_; this.labels = defaults.labels; this.mode = defaults.mode; + this.provisionedIops = defaults.provisionedIops; this.resourcePolicies = defaults.resourcePolicies; this.source = defaults.source; this.sourceImage = defaults.sourceImage; @@ -403,6 +409,11 @@ public Builder mode(@Nullable String mode) { return this; } @CustomType.Setter + public Builder provisionedIops(@Nullable Integer provisionedIops) { + this.provisionedIops = provisionedIops; + return this; + } + @CustomType.Setter public Builder resourcePolicies(@Nullable String resourcePolicies) { this.resourcePolicies = resourcePolicies; return this; @@ -449,6 +460,7 @@ public RegionInstanceTemplateDisk build() { o.interface_ = interface_; o.labels = labels; o.mode = mode; + o.provisionedIops = provisionedIops; o.resourcePolicies = resourcePolicies; o.source = source; o.sourceImage = sourceImage; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatch.java new file mode 100644 index 0000000000..28740b2fdc --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatch.java @@ -0,0 +1,85 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.compute.outputs.RegionSecurityPolicyRuleMatchConfig; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RegionSecurityPolicyRuleMatch { + /** + * @return The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + * + */ + private @Nullable RegionSecurityPolicyRuleMatchConfig config; + /** + * @return Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + * + */ + private @Nullable String versionedExpr; + + private RegionSecurityPolicyRuleMatch() {} + /** + * @return The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + * + */ + public Optional config() { + return Optional.ofNullable(this.config); + } + /** + * @return Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + * + */ + public Optional versionedExpr() { + return Optional.ofNullable(this.versionedExpr); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RegionSecurityPolicyRuleMatch defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable RegionSecurityPolicyRuleMatchConfig config; + private @Nullable String versionedExpr; + public Builder() {} + public Builder(RegionSecurityPolicyRuleMatch defaults) { + Objects.requireNonNull(defaults); + this.config = defaults.config; + this.versionedExpr = defaults.versionedExpr; + } + + @CustomType.Setter + public Builder config(@Nullable RegionSecurityPolicyRuleMatchConfig config) { + this.config = config; + return this; + } + @CustomType.Setter + public Builder versionedExpr(@Nullable String versionedExpr) { + this.versionedExpr = versionedExpr; + return this; + } + public RegionSecurityPolicyRuleMatch build() { + final var o = new RegionSecurityPolicyRuleMatch(); + o.config = config; + o.versionedExpr = versionedExpr; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatchConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatchConfig.java new file mode 100644 index 0000000000..657b3d21e5 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleMatchConfig.java @@ -0,0 +1,59 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class RegionSecurityPolicyRuleMatchConfig { + /** + * @return CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + */ + private @Nullable List srcIpRanges; + + private RegionSecurityPolicyRuleMatchConfig() {} + /** + * @return CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + * + */ + public List srcIpRanges() { + return this.srcIpRanges == null ? List.of() : this.srcIpRanges; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RegionSecurityPolicyRuleMatchConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List srcIpRanges; + public Builder() {} + public Builder(RegionSecurityPolicyRuleMatchConfig defaults) { + Objects.requireNonNull(defaults); + this.srcIpRanges = defaults.srcIpRanges; + } + + @CustomType.Setter + public Builder srcIpRanges(@Nullable List srcIpRanges) { + this.srcIpRanges = srcIpRanges; + return this; + } + public Builder srcIpRanges(String... srcIpRanges) { + return srcIpRanges(List.of(srcIpRanges)); + } + public RegionSecurityPolicyRuleMatchConfig build() { + final var o = new RegionSecurityPolicyRuleMatchConfig(); + o.srcIpRanges = srcIpRanges; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatch.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatch.java new file mode 100644 index 0000000000..a38400c52d --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatch.java @@ -0,0 +1,224 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import com.pulumi.gcp.compute.outputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedField; +import java.lang.Integer; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import javax.annotation.Nullable; + +@CustomType +public final class RegionSecurityPolicyRuleNetworkMatch { + /** + * @return Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + private @Nullable List destIpRanges; + /** + * @return Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + private @Nullable List destPorts; + /** + * @return IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + */ + private @Nullable List ipProtocols; + /** + * @return BGP Autonomous System Number associated with the source IP address. + * + */ + private @Nullable List srcAsns; + /** + * @return Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + private @Nullable List srcIpRanges; + /** + * @return Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + private @Nullable List srcPorts; + /** + * @return Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + */ + private @Nullable List srcRegionCodes; + /** + * @return User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + */ + private @Nullable List userDefinedFields; + + private RegionSecurityPolicyRuleNetworkMatch() {} + /** + * @return Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + public List destIpRanges() { + return this.destIpRanges == null ? List.of() : this.destIpRanges; + } + /** + * @return Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + public List destPorts() { + return this.destPorts == null ? List.of() : this.destPorts; + } + /** + * @return IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + * + */ + public List ipProtocols() { + return this.ipProtocols == null ? List.of() : this.ipProtocols; + } + /** + * @return BGP Autonomous System Number associated with the source IP address. + * + */ + public List srcAsns() { + return this.srcAsns == null ? List.of() : this.srcAsns; + } + /** + * @return Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + * + */ + public List srcIpRanges() { + return this.srcIpRanges == null ? List.of() : this.srcIpRanges; + } + /** + * @return Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + * + */ + public List srcPorts() { + return this.srcPorts == null ? List.of() : this.srcPorts; + } + /** + * @return Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + * + */ + public List srcRegionCodes() { + return this.srcRegionCodes == null ? List.of() : this.srcRegionCodes; + } + /** + * @return User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + * + */ + public List userDefinedFields() { + return this.userDefinedFields == null ? List.of() : this.userDefinedFields; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RegionSecurityPolicyRuleNetworkMatch defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable List destIpRanges; + private @Nullable List destPorts; + private @Nullable List ipProtocols; + private @Nullable List srcAsns; + private @Nullable List srcIpRanges; + private @Nullable List srcPorts; + private @Nullable List srcRegionCodes; + private @Nullable List userDefinedFields; + public Builder() {} + public Builder(RegionSecurityPolicyRuleNetworkMatch defaults) { + Objects.requireNonNull(defaults); + this.destIpRanges = defaults.destIpRanges; + this.destPorts = defaults.destPorts; + this.ipProtocols = defaults.ipProtocols; + this.srcAsns = defaults.srcAsns; + this.srcIpRanges = defaults.srcIpRanges; + this.srcPorts = defaults.srcPorts; + this.srcRegionCodes = defaults.srcRegionCodes; + this.userDefinedFields = defaults.userDefinedFields; + } + + @CustomType.Setter + public Builder destIpRanges(@Nullable List destIpRanges) { + this.destIpRanges = destIpRanges; + return this; + } + public Builder destIpRanges(String... destIpRanges) { + return destIpRanges(List.of(destIpRanges)); + } + @CustomType.Setter + public Builder destPorts(@Nullable List destPorts) { + this.destPorts = destPorts; + return this; + } + public Builder destPorts(String... destPorts) { + return destPorts(List.of(destPorts)); + } + @CustomType.Setter + public Builder ipProtocols(@Nullable List ipProtocols) { + this.ipProtocols = ipProtocols; + return this; + } + public Builder ipProtocols(String... ipProtocols) { + return ipProtocols(List.of(ipProtocols)); + } + @CustomType.Setter + public Builder srcAsns(@Nullable List srcAsns) { + this.srcAsns = srcAsns; + return this; + } + public Builder srcAsns(Integer... srcAsns) { + return srcAsns(List.of(srcAsns)); + } + @CustomType.Setter + public Builder srcIpRanges(@Nullable List srcIpRanges) { + this.srcIpRanges = srcIpRanges; + return this; + } + public Builder srcIpRanges(String... srcIpRanges) { + return srcIpRanges(List.of(srcIpRanges)); + } + @CustomType.Setter + public Builder srcPorts(@Nullable List srcPorts) { + this.srcPorts = srcPorts; + return this; + } + public Builder srcPorts(String... srcPorts) { + return srcPorts(List.of(srcPorts)); + } + @CustomType.Setter + public Builder srcRegionCodes(@Nullable List srcRegionCodes) { + this.srcRegionCodes = srcRegionCodes; + return this; + } + public Builder srcRegionCodes(String... srcRegionCodes) { + return srcRegionCodes(List.of(srcRegionCodes)); + } + @CustomType.Setter + public Builder userDefinedFields(@Nullable List userDefinedFields) { + this.userDefinedFields = userDefinedFields; + return this; + } + public Builder userDefinedFields(RegionSecurityPolicyRuleNetworkMatchUserDefinedField... userDefinedFields) { + return userDefinedFields(List.of(userDefinedFields)); + } + public RegionSecurityPolicyRuleNetworkMatch build() { + final var o = new RegionSecurityPolicyRuleNetworkMatch(); + o.destIpRanges = destIpRanges; + o.destPorts = destPorts; + o.ipProtocols = ipProtocols; + o.srcAsns = srcAsns; + o.srcIpRanges = srcIpRanges; + o.srcPorts = srcPorts; + o.srcRegionCodes = srcRegionCodes; + o.userDefinedFields = userDefinedFields; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.java new file mode 100644 index 0000000000..f63ecd401b --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyRuleNetworkMatchUserDefinedField.java @@ -0,0 +1,80 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.String; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RegionSecurityPolicyRuleNetworkMatchUserDefinedField { + /** + * @return Name of the user-defined field, as given in the definition. + * + */ + private @Nullable String name; + /** + * @return Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + */ + private @Nullable List values; + + private RegionSecurityPolicyRuleNetworkMatchUserDefinedField() {} + /** + * @return Name of the user-defined field, as given in the definition. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + * + */ + public List values() { + return this.values == null ? List.of() : this.values; + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RegionSecurityPolicyRuleNetworkMatchUserDefinedField defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String name; + private @Nullable List values; + public Builder() {} + public Builder(RegionSecurityPolicyRuleNetworkMatchUserDefinedField defaults) { + Objects.requireNonNull(defaults); + this.name = defaults.name; + this.values = defaults.values; + } + + @CustomType.Setter + public Builder name(@Nullable String name) { + this.name = name; + return this; + } + @CustomType.Setter + public Builder values(@Nullable List values) { + this.values = values; + return this; + } + public Builder values(String... values) { + return values(List.of(values)); + } + public RegionSecurityPolicyRuleNetworkMatchUserDefinedField build() { + final var o = new RegionSecurityPolicyRuleNetworkMatchUserDefinedField(); + o.name = name; + o.values = values; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyUserDefinedField.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyUserDefinedField.java new file mode 100644 index 0000000000..b2bda1dc09 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/RegionSecurityPolicyUserDefinedField.java @@ -0,0 +1,151 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.compute.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Integer; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class RegionSecurityPolicyUserDefinedField { + /** + * @return The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + * + */ + private String base; + /** + * @return If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + * + */ + private @Nullable String mask; + /** + * @return The name of this field. Must be unique within the policy. + * + */ + private @Nullable String name; + /** + * @return Offset of the first byte of the field (in network byte order) relative to 'base'. + * + */ + private @Nullable Integer offset; + /** + * @return Size of the field in bytes. Valid values: 1-4. + * + */ + private @Nullable Integer size; + + private RegionSecurityPolicyUserDefinedField() {} + /** + * @return The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + * + */ + public String base() { + return this.base; + } + /** + * @return If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + * + */ + public Optional mask() { + return Optional.ofNullable(this.mask); + } + /** + * @return The name of this field. Must be unique within the policy. + * + */ + public Optional name() { + return Optional.ofNullable(this.name); + } + /** + * @return Offset of the first byte of the field (in network byte order) relative to 'base'. + * + */ + public Optional offset() { + return Optional.ofNullable(this.offset); + } + /** + * @return Size of the field in bytes. Valid values: 1-4. + * + */ + public Optional size() { + return Optional.ofNullable(this.size); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(RegionSecurityPolicyUserDefinedField defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private String base; + private @Nullable String mask; + private @Nullable String name; + private @Nullable Integer offset; + private @Nullable Integer size; + public Builder() {} + public Builder(RegionSecurityPolicyUserDefinedField defaults) { + Objects.requireNonNull(defaults); + this.base = defaults.base; + this.mask = defaults.mask; + this.name = defaults.name; + this.offset = defaults.offset; + this.size = defaults.size; + } + + @CustomType.Setter + public Builder base(String base) { + this.base = Objects.requireNonNull(base); + return this; + } + @CustomType.Setter + public Builder mask(@Nullable String mask) { + this.mask = mask; + return this; + } + @CustomType.Setter + public Builder name(@Nullable String name) { + this.name = name; + return this; + } + @CustomType.Setter + public Builder offset(@Nullable Integer offset) { + this.offset = offset; + return this; + } + @CustomType.Setter + public Builder size(@Nullable Integer size) { + this.size = size; + return this; + } + public RegionSecurityPolicyUserDefinedField build() { + final var o = new RegionSecurityPolicyUserDefinedField(); + o.base = base; + o.mask = mask; + o.name = name; + o.offset = offset; + o.size = size; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/SecurityPolicyAdvancedOptionsConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/SecurityPolicyAdvancedOptionsConfig.java index 1973b6d531..4d330db3b8 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/SecurityPolicyAdvancedOptionsConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/compute/outputs/SecurityPolicyAdvancedOptionsConfig.java @@ -6,6 +6,7 @@ import com.pulumi.core.annotations.CustomType; import com.pulumi.gcp.compute.outputs.SecurityPolicyAdvancedOptionsConfigJsonCustomConfig; import java.lang.String; +import java.util.List; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -32,6 +33,11 @@ public final class SecurityPolicyAdvancedOptionsConfig { * */ private @Nullable String logLevel; + /** + * @return ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + */ + private @Nullable List userIpRequestHeaders; private SecurityPolicyAdvancedOptionsConfig() {} /** @@ -60,6 +66,13 @@ public Optional jsonParsing() { public Optional logLevel() { return Optional.ofNullable(this.logLevel); } + /** + * @return ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + * + */ + public List userIpRequestHeaders() { + return this.userIpRequestHeaders == null ? List.of() : this.userIpRequestHeaders; + } public static Builder builder() { return new Builder(); @@ -73,12 +86,14 @@ public static final class Builder { private @Nullable SecurityPolicyAdvancedOptionsConfigJsonCustomConfig jsonCustomConfig; private @Nullable String jsonParsing; private @Nullable String logLevel; + private @Nullable List userIpRequestHeaders; public Builder() {} public Builder(SecurityPolicyAdvancedOptionsConfig defaults) { Objects.requireNonNull(defaults); this.jsonCustomConfig = defaults.jsonCustomConfig; this.jsonParsing = defaults.jsonParsing; this.logLevel = defaults.logLevel; + this.userIpRequestHeaders = defaults.userIpRequestHeaders; } @CustomType.Setter @@ -96,11 +111,20 @@ public Builder logLevel(@Nullable String logLevel) { this.logLevel = logLevel; return this; } + @CustomType.Setter + public Builder userIpRequestHeaders(@Nullable List userIpRequestHeaders) { + this.userIpRequestHeaders = userIpRequestHeaders; + return this; + } + public Builder userIpRequestHeaders(String... userIpRequestHeaders) { + return userIpRequestHeaders(List.of(userIpRequestHeaders)); + } public SecurityPolicyAdvancedOptionsConfig build() { final var o = new SecurityPolicyAdvancedOptionsConfig(); o.jsonCustomConfig = jsonCustomConfig; o.jsonParsing = jsonParsing; o.logLevel = logLevel; + o.userIpRequestHeaders = userIpRequestHeaders; return o; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/container/AwsCluster.java b/sdk/java/src/main/java/com/pulumi/gcp/container/AwsCluster.java index e640960679..47faefbe5e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/container/AwsCluster.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/container/AwsCluster.java @@ -131,6 +131,226 @@ * } * } * ``` + * ### Basic_enum_aws_cluster + * A basic example of a containeraws cluster with lowercase enums + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.container.ContainerFunctions; + * import com.pulumi.gcp.container.inputs.GetAwsVersionsArgs; + * import com.pulumi.gcp.container.AwsCluster; + * import com.pulumi.gcp.container.AwsClusterArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterFleetArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder() + * .location("us-west1") + * .project("my-project-name") + * .build()); + * + * var primary = new AwsCluster("primary", AwsClusterArgs.builder() + * .annotations(Map.of("label-one", "value-one")) + * .authorization(AwsClusterAuthorizationArgs.builder() + * .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder() + * .username("my@service-account.com") + * .build()) + * .build()) + * .awsRegion("my-aws-region") + * .controlPlane(AwsClusterControlPlaneArgs.builder() + * .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder() + * .roleArn("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform") + * .roleSessionName("my--1p-dev-session") + * .build()) + * .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .iamInstanceProfile("my--1p-dev-controlplane") + * .instanceType("t3.medium") + * .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("gp3") + * .build()) + * .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder() + * .secretArn("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF") + * .secretVersion("12345678-ABCD-EFGH-IJKL-987654321098") + * .build()) + * .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("gp3") + * .build()) + * .securityGroupIds("sg-00000000000000000") + * .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder() + * .ec2KeyPair("my--1p-dev-ssh") + * .build()) + * .subnetIds("subnet-00000000000000000") + * .tags(Map.of("owner", "my@service-account.com")) + * .version(versions.applyValue(getAwsVersionsResult -> getAwsVersionsResult.validVersions()[0])) + * .build()) + * .description("A sample aws cluster") + * .fleet(AwsClusterFleetArgs.builder() + * .project("my-project-number") + * .build()) + * .location("us-west1") + * .networking(AwsClusterNetworkingArgs.builder() + * .podAddressCidrBlocks("10.2.0.0/16") + * .serviceAddressCidrBlocks("10.1.0.0/16") + * .vpcId("vpc-00000000000000000") + * .build()) + * .project("my-project-name") + * .build()); + * + * } + * } + * ``` + * ### Beta_basic_enum_aws_cluster + * A basic example of a containeraws cluster with lowercase enums (beta) + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.container.ContainerFunctions; + * import com.pulumi.gcp.container.inputs.GetAwsVersionsArgs; + * import com.pulumi.gcp.container.AwsCluster; + * import com.pulumi.gcp.container.AwsClusterArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneInstancePlacementArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterFleetArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterLoggingConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterLoggingConfigComponentConfigArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder() + * .project("my-project-name") + * .location("us-west1") + * .build()); + * + * var primary = new AwsCluster("primary", AwsClusterArgs.builder() + * .authorization(AwsClusterAuthorizationArgs.builder() + * .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder() + * .username("my@service-account.com") + * .build()) + * .build()) + * .awsRegion("my-aws-region") + * .controlPlane(AwsClusterControlPlaneArgs.builder() + * .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder() + * .roleArn("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform") + * .roleSessionName("my--1p-dev-session") + * .build()) + * .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .iamInstanceProfile("my--1p-dev-controlplane") + * .subnetIds("subnet-00000000000000000") + * .version(versions.applyValue(getAwsVersionsResult -> getAwsVersionsResult.validVersions()[0])) + * .instanceType("t3.medium") + * .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("gp3") + * .build()) + * .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder() + * .secretArn("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF") + * .secretVersion("12345678-ABCD-EFGH-IJKL-987654321098") + * .build()) + * .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("gp3") + * .build()) + * .securityGroupIds("sg-00000000000000000") + * .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder() + * .ec2KeyPair("my--1p-dev-ssh") + * .build()) + * .tags(Map.of("owner", "my@service-account.com")) + * .instancePlacement(AwsClusterControlPlaneInstancePlacementArgs.builder() + * .tenancy("dedicated") + * .build()) + * .build()) + * .fleet(AwsClusterFleetArgs.builder() + * .project("my-project-number") + * .build()) + * .location("us-west1") + * .networking(AwsClusterNetworkingArgs.builder() + * .podAddressCidrBlocks("10.2.0.0/16") + * .serviceAddressCidrBlocks("10.1.0.0/16") + * .vpcId("vpc-00000000000000000") + * .build()) + * .annotations(Map.of("label-one", "value-one")) + * .description("A sample aws cluster") + * .project("my-project-name") + * .loggingConfig(AwsClusterLoggingConfigArgs.builder() + * .componentConfig(AwsClusterLoggingConfigComponentConfigArgs.builder() + * .enableComponents( + * "system_components", + * "workloads") + * .build()) + * .build()) + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * } + * } + * ``` * * ## Import * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/container/AwsNodePool.java b/sdk/java/src/main/java/com/pulumi/gcp/container/AwsNodePool.java index 2eb3f217d0..d61536221e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/container/AwsNodePool.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/container/AwsNodePool.java @@ -180,6 +180,326 @@ * } * } * ``` + * ### Basic_enum_aws_cluster + * A basic example of a containeraws node pool with lowercase enums + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.container.ContainerFunctions; + * import com.pulumi.gcp.container.inputs.GetAwsVersionsArgs; + * import com.pulumi.gcp.container.AwsCluster; + * import com.pulumi.gcp.container.AwsClusterArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterFleetArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs; + * import com.pulumi.gcp.container.AwsNodePool; + * import com.pulumi.gcp.container.AwsNodePoolArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder() + * .project("my-project-name") + * .location("us-west1") + * .build()); + * + * var primaryAwsCluster = new AwsCluster("primaryAwsCluster", AwsClusterArgs.builder() + * .authorization(AwsClusterAuthorizationArgs.builder() + * .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder() + * .username("my@service-account.com") + * .build()) + * .build()) + * .awsRegion("my-aws-region") + * .controlPlane(AwsClusterControlPlaneArgs.builder() + * .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder() + * .roleArn("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform") + * .roleSessionName("my--1p-dev-session") + * .build()) + * .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .iamInstanceProfile("my--1p-dev-controlplane") + * .subnetIds("subnet-00000000000000000") + * .version(versions.applyValue(getAwsVersionsResult -> getAwsVersionsResult.validVersions()[0])) + * .instanceType("t3.medium") + * .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("GP3") + * .build()) + * .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder() + * .secretArn("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF") + * .secretVersion("12345678-ABCD-EFGH-IJKL-987654321098") + * .build()) + * .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("GP3") + * .build()) + * .securityGroupIds("sg-00000000000000000") + * .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder() + * .ec2KeyPair("my--1p-dev-ssh") + * .build()) + * .tags(Map.of("owner", "my@service-account.com")) + * .build()) + * .fleet(AwsClusterFleetArgs.builder() + * .project("my-project-number") + * .build()) + * .location("us-west1") + * .networking(AwsClusterNetworkingArgs.builder() + * .podAddressCidrBlocks("10.2.0.0/16") + * .serviceAddressCidrBlocks("10.1.0.0/16") + * .vpcId("vpc-00000000000000000") + * .build()) + * .annotations(Map.of("label-one", "value-one")) + * .description("A sample aws cluster") + * .project("my-project-name") + * .build()); + * + * var primaryAwsNodePool = new AwsNodePool("primaryAwsNodePool", AwsNodePoolArgs.builder() + * .autoscaling(AwsNodePoolAutoscalingArgs.builder() + * .maxNodeCount(5) + * .minNodeCount(1) + * .build()) + * .cluster(primaryAwsCluster.name()) + * .config(AwsNodePoolConfigArgs.builder() + * .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .iamInstanceProfile("my--1p-dev-nodepool") + * .instanceType("t3.medium") + * .labels(Map.of("label-one", "value-one")) + * .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("gp3") + * .build()) + * .securityGroupIds("sg-00000000000000000") + * .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder() + * .secretArn("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF") + * .secretVersion("12345678-ABCD-EFGH-IJKL-987654321098") + * .build()) + * .sshConfig(AwsNodePoolConfigSshConfigArgs.builder() + * .ec2KeyPair("my--1p-dev-ssh") + * .build()) + * .tags(Map.of("tag-one", "value-one")) + * .taints(AwsNodePoolConfigTaintArgs.builder() + * .effect("prefer_no_schedule") + * .key("taint-key") + * .value("taint-value") + * .build()) + * .build()) + * .location("us-west1") + * .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder() + * .maxPodsPerNode(110) + * .build()) + * .subnetId("subnet-00000000000000000") + * .version(versions.applyValue(getAwsVersionsResult -> getAwsVersionsResult.validVersions()[0])) + * .annotations(Map.of("label-one", "value-one")) + * .project("my-project-name") + * .build()); + * + * } + * } + * ``` + * ### Beta_basic_enum_aws_cluster + * A basic example of a containeraws node pool with lowercase enums (beta) + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.container.ContainerFunctions; + * import com.pulumi.gcp.container.inputs.GetAwsVersionsArgs; + * import com.pulumi.gcp.container.AwsCluster; + * import com.pulumi.gcp.container.AwsClusterArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterFleetArgs; + * import com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs; + * import com.pulumi.gcp.container.AwsNodePool; + * import com.pulumi.gcp.container.AwsNodePoolArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolConfigInstancePlacementArgs; + * import com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs; + * import com.pulumi.resources.CustomResourceOptions; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder() + * .project("my-project-name") + * .location("us-west1") + * .build()); + * + * var primaryAwsCluster = new AwsCluster("primaryAwsCluster", AwsClusterArgs.builder() + * .authorization(AwsClusterAuthorizationArgs.builder() + * .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder() + * .username("my@service-account.com") + * .build()) + * .build()) + * .awsRegion("my-aws-region") + * .controlPlane(AwsClusterControlPlaneArgs.builder() + * .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder() + * .roleArn("arn:aws:iam::012345678910:role/my--1p-dev-oneplatform") + * .roleSessionName("my--1p-dev-session") + * .build()) + * .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .iamInstanceProfile("my--1p-dev-controlplane") + * .subnetIds("subnet-00000000000000000") + * .version(versions.applyValue(getAwsVersionsResult -> getAwsVersionsResult.validVersions()[0])) + * .instanceType("t3.medium") + * .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("GP3") + * .build()) + * .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder() + * .secretArn("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF") + * .secretVersion("12345678-ABCD-EFGH-IJKL-987654321098") + * .build()) + * .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("GP3") + * .build()) + * .securityGroupIds("sg-00000000000000000") + * .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder() + * .ec2KeyPair("my--1p-dev-ssh") + * .build()) + * .tags(Map.of("owner", "my@service-account.com")) + * .build()) + * .fleet(AwsClusterFleetArgs.builder() + * .project("my-project-number") + * .build()) + * .location("us-west1") + * .networking(AwsClusterNetworkingArgs.builder() + * .podAddressCidrBlocks("10.2.0.0/16") + * .serviceAddressCidrBlocks("10.1.0.0/16") + * .vpcId("vpc-00000000000000000") + * .build()) + * .annotations(Map.of("label-one", "value-one")) + * .description("A sample aws cluster") + * .project("my-project-name") + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * var primaryAwsNodePool = new AwsNodePool("primaryAwsNodePool", AwsNodePoolArgs.builder() + * .autoscaling(AwsNodePoolAutoscalingArgs.builder() + * .maxNodeCount(5) + * .minNodeCount(1) + * .build()) + * .cluster(primaryAwsCluster.name()) + * .config(AwsNodePoolConfigArgs.builder() + * .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder() + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .build()) + * .iamInstanceProfile("my--1p-dev-nodepool") + * .instanceType("t3.medium") + * .labels(Map.of("label-one", "value-one")) + * .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder() + * .iops(3000) + * .kmsKeyArn("arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111") + * .sizeGib(10) + * .volumeType("gp3") + * .build()) + * .securityGroupIds("sg-00000000000000000") + * .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder() + * .secretArn("arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF") + * .secretVersion("12345678-ABCD-EFGH-IJKL-987654321098") + * .build()) + * .sshConfig(AwsNodePoolConfigSshConfigArgs.builder() + * .ec2KeyPair("my--1p-dev-ssh") + * .build()) + * .tags(Map.of("tag-one", "value-one")) + * .taints(AwsNodePoolConfigTaintArgs.builder() + * .effect("prefer_no_schedule") + * .key("taint-key") + * .value("taint-value") + * .build()) + * .instancePlacement(AwsNodePoolConfigInstancePlacementArgs.builder() + * .tenancy("dedicated") + * .build()) + * .imageType("ubuntu") + * .build()) + * .location("us-west1") + * .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder() + * .maxPodsPerNode(110) + * .build()) + * .subnetId("subnet-00000000000000000") + * .version(versions.applyValue(getAwsVersionsResult -> getAwsVersionsResult.validVersions()[0])) + * .annotations(Map.of("label-one", "value-one")) + * .project("my-project-name") + * .build(), CustomResourceOptions.builder() + * .provider(google_beta) + * .build()); + * + * } + * } + * ``` * * ## Import * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/ConnectionProfile.java b/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/ConnectionProfile.java index 239dc48201..1c60196d59 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/ConnectionProfile.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/ConnectionProfile.java @@ -128,11 +128,12 @@ * .databaseVersion("MYSQL_5_7") * .userLabels(Map.of("cloudfoo", "cloudbar")) * .tier("db-n1-standard-1") + * .edition("ENTERPRISE") * .storageAutoResizeLimit("0") * .activationPolicy("ALWAYS") * .ipConfig(ConnectionProfileCloudsqlSettingsIpConfigArgs.builder() * .enableIpv4(true) - * .requireSsl("true") + * .requireSsl(true) * .build()) * .autoStorageIncrease(true) * .dataDiskType("PD_HDD") diff --git a/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/inputs/ConnectionProfileCloudsqlSettingsArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/inputs/ConnectionProfileCloudsqlSettingsArgs.java index 31a644d930..43f917830b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/inputs/ConnectionProfileCloudsqlSettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/inputs/ConnectionProfileCloudsqlSettingsArgs.java @@ -146,6 +146,23 @@ public Optional> databaseVersion() { return Optional.ofNullable(this.databaseVersion); } + /** + * The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + * + */ + @Import(name="edition") + private @Nullable Output edition; + + /** + * @return The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + * + */ + public Optional> edition() { + return Optional.ofNullable(this.edition); + } + /** * The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. * Structure is documented below. @@ -285,6 +302,7 @@ private ConnectionProfileCloudsqlSettingsArgs(ConnectionProfileCloudsqlSettingsA this.dataDiskType = $.dataDiskType; this.databaseFlags = $.databaseFlags; this.databaseVersion = $.databaseVersion; + this.edition = $.edition; this.ipConfig = $.ipConfig; this.rootPassword = $.rootPassword; this.rootPasswordSet = $.rootPasswordSet; @@ -489,6 +507,29 @@ public Builder databaseVersion(String databaseVersion) { return databaseVersion(Output.of(databaseVersion)); } + /** + * @param edition The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + * + * @return builder + * + */ + public Builder edition(@Nullable Output edition) { + $.edition = edition; + return this; + } + + /** + * @param edition The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + * + * @return builder + * + */ + public Builder edition(String edition) { + return edition(Output.of(edition)); + } + /** * @param ipConfig The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. * Structure is documented below. diff --git a/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/outputs/ConnectionProfileCloudsqlSettings.java b/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/outputs/ConnectionProfileCloudsqlSettings.java index 9d3a4ece6e..9fa24cdba9 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/outputs/ConnectionProfileCloudsqlSettings.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/databasemigrationservice/outputs/ConnectionProfileCloudsqlSettings.java @@ -58,6 +58,12 @@ public final class ConnectionProfileCloudsqlSettings { * */ private @Nullable String databaseVersion; + /** + * @return The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + * + */ + private @Nullable String edition; /** * @return The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. * Structure is documented below. @@ -164,6 +170,14 @@ public Map databaseFlags() { public Optional databaseVersion() { return Optional.ofNullable(this.databaseVersion); } + /** + * @return The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + * + */ + public Optional edition() { + return Optional.ofNullable(this.edition); + } /** * @return The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. * Structure is documented below. @@ -242,6 +256,7 @@ public static final class Builder { private @Nullable String dataDiskType; private @Nullable Map databaseFlags; private @Nullable String databaseVersion; + private @Nullable String edition; private @Nullable ConnectionProfileCloudsqlSettingsIpConfig ipConfig; private @Nullable String rootPassword; private @Nullable Boolean rootPasswordSet; @@ -261,6 +276,7 @@ public Builder(ConnectionProfileCloudsqlSettings defaults) { this.dataDiskType = defaults.dataDiskType; this.databaseFlags = defaults.databaseFlags; this.databaseVersion = defaults.databaseVersion; + this.edition = defaults.edition; this.ipConfig = defaults.ipConfig; this.rootPassword = defaults.rootPassword; this.rootPasswordSet = defaults.rootPasswordSet; @@ -312,6 +328,11 @@ public Builder databaseVersion(@Nullable String databaseVersion) { return this; } @CustomType.Setter + public Builder edition(@Nullable String edition) { + this.edition = edition; + return this; + } + @CustomType.Setter public Builder ipConfig(@Nullable ConnectionProfileCloudsqlSettingsIpConfig ipConfig) { this.ipConfig = ipConfig; return this; @@ -361,6 +382,7 @@ public ConnectionProfileCloudsqlSettings build() { o.dataDiskType = dataDiskType; o.databaseFlags = databaseFlags; o.databaseVersion = databaseVersion; + o.edition = edition; o.ipConfig = ipConfig; o.rootPassword = rootPassword; o.rootPasswordSet = rootPasswordSet; diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataloss/PreventionStoredInfoType.java b/sdk/java/src/main/java/com/pulumi/gcp/dataloss/PreventionStoredInfoType.java index 3bd0ef42f8..d4c8c50f39 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dataloss/PreventionStoredInfoType.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dataloss/PreventionStoredInfoType.java @@ -140,7 +140,7 @@ * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/dlp/words.txt")) + * .source(new FileAsset("./test-fixtures/words.txt")) * .build()); * * var large = new PreventionStoredInfoType("large", PreventionStoredInfoTypeArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreService.java b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreService.java index b55e2ecacb..f183d5cad8 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreService.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreService.java @@ -15,6 +15,7 @@ import com.pulumi.gcp.dataproc.outputs.MetastoreServiceMaintenanceWindow; import com.pulumi.gcp.dataproc.outputs.MetastoreServiceMetadataIntegration; import com.pulumi.gcp.dataproc.outputs.MetastoreServiceNetworkConfig; +import com.pulumi.gcp.dataproc.outputs.MetastoreServiceScalingConfig; import com.pulumi.gcp.dataproc.outputs.MetastoreServiceTelemetryConfig; import java.lang.Integer; import java.lang.String; @@ -184,6 +185,84 @@ * } * } * ``` + * ### Dataproc Metastore Service Dpms2 + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.dataproc.MetastoreService; + * import com.pulumi.gcp.dataproc.MetastoreServiceArgs; + * import com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs; + * import com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var dpms2 = new MetastoreService("dpms2", MetastoreServiceArgs.builder() + * .databaseType("SPANNER") + * .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder() + * .version("3.1.2") + * .build()) + * .location("us-central1") + * .scalingConfig(MetastoreServiceScalingConfigArgs.builder() + * .instanceSize("EXTRA_SMALL") + * .build()) + * .serviceId("dpms2") + * .build()); + * + * } + * } + * ``` + * ### Dataproc Metastore Service Dpms2 Scaling Factor + * ```java + * package generated_program; + * + * import com.pulumi.Context; + * import com.pulumi.Pulumi; + * import com.pulumi.core.Output; + * import com.pulumi.gcp.dataproc.MetastoreService; + * import com.pulumi.gcp.dataproc.MetastoreServiceArgs; + * import com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs; + * import com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs; + * import java.util.List; + * import java.util.ArrayList; + * import java.util.Map; + * import java.io.File; + * import java.nio.file.Files; + * import java.nio.file.Paths; + * + * public class App { + * public static void main(String[] args) { + * Pulumi.run(App::stack); + * } + * + * public static void stack(Context ctx) { + * var dpms2ScalingFactor = new MetastoreService("dpms2ScalingFactor", MetastoreServiceArgs.builder() + * .databaseType("SPANNER") + * .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder() + * .version("3.1.2") + * .build()) + * .location("us-central1") + * .scalingConfig(MetastoreServiceScalingConfigArgs.builder() + * .scalingFactor("2") + * .build()) + * .serviceId("dpms2sf") + * .build()); + * + * } + * } + * ``` * * ## Import * @@ -444,6 +523,22 @@ public Output project() { public Output> releaseChannel() { return Codegen.optional(this.releaseChannel); } + /** + * Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + */ + @Export(name="scalingConfig", type=MetastoreServiceScalingConfig.class, parameters={}) + private Output scalingConfig; + + /** + * @return Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + */ + public Output> scalingConfig() { + return Codegen.optional(this.scalingConfig); + } /** * The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreServiceArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreServiceArgs.java index 434f52068e..8c7150ea54 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreServiceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/MetastoreServiceArgs.java @@ -10,6 +10,7 @@ import com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs; import com.pulumi.gcp.dataproc.inputs.MetastoreServiceMetadataIntegrationArgs; import com.pulumi.gcp.dataproc.inputs.MetastoreServiceNetworkConfigArgs; +import com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs; import com.pulumi.gcp.dataproc.inputs.MetastoreServiceTelemetryConfigArgs; import java.lang.Integer; import java.lang.String; @@ -231,6 +232,23 @@ public Optional> releaseChannel() { return Optional.ofNullable(this.releaseChannel); } + /** + * Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + */ + @Import(name="scalingConfig") + private @Nullable Output scalingConfig; + + /** + * @return Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + */ + public Optional> scalingConfig() { + return Optional.ofNullable(this.scalingConfig); + } + /** * The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between @@ -303,6 +321,7 @@ private MetastoreServiceArgs(MetastoreServiceArgs $) { this.port = $.port; this.project = $.project; this.releaseChannel = $.releaseChannel; + this.scalingConfig = $.scalingConfig; this.serviceId = $.serviceId; this.telemetryConfig = $.telemetryConfig; this.tier = $.tier; @@ -606,6 +625,29 @@ public Builder releaseChannel(String releaseChannel) { return releaseChannel(Output.of(releaseChannel)); } + /** + * @param scalingConfig Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + * @return builder + * + */ + public Builder scalingConfig(@Nullable Output scalingConfig) { + $.scalingConfig = scalingConfig; + return this; + } + + /** + * @param scalingConfig Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + * @return builder + * + */ + public Builder scalingConfig(MetastoreServiceScalingConfigArgs scalingConfig) { + return scalingConfig(Output.of(scalingConfig)); + } + /** * @param serviceId The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceScalingConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceScalingConfigArgs.java new file mode 100644 index 0000000000..2f0fc5732e --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceScalingConfigArgs.java @@ -0,0 +1,125 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.dataproc.inputs; + +import com.pulumi.core.Output; +import com.pulumi.core.annotations.Import; +import java.lang.Double; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + + +public final class MetastoreServiceScalingConfigArgs extends com.pulumi.resources.ResourceArgs { + + public static final MetastoreServiceScalingConfigArgs Empty = new MetastoreServiceScalingConfigArgs(); + + /** + * Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + * + */ + @Import(name="instanceSize") + private @Nullable Output instanceSize; + + /** + * @return Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + * + */ + public Optional> instanceSize() { + return Optional.ofNullable(this.instanceSize); + } + + /** + * Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + * + */ + @Import(name="scalingFactor") + private @Nullable Output scalingFactor; + + /** + * @return Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + * + */ + public Optional> scalingFactor() { + return Optional.ofNullable(this.scalingFactor); + } + + private MetastoreServiceScalingConfigArgs() {} + + private MetastoreServiceScalingConfigArgs(MetastoreServiceScalingConfigArgs $) { + this.instanceSize = $.instanceSize; + this.scalingFactor = $.scalingFactor; + } + + public static Builder builder() { + return new Builder(); + } + public static Builder builder(MetastoreServiceScalingConfigArgs defaults) { + return new Builder(defaults); + } + + public static final class Builder { + private MetastoreServiceScalingConfigArgs $; + + public Builder() { + $ = new MetastoreServiceScalingConfigArgs(); + } + + public Builder(MetastoreServiceScalingConfigArgs defaults) { + $ = new MetastoreServiceScalingConfigArgs(Objects.requireNonNull(defaults)); + } + + /** + * @param instanceSize Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + * + * @return builder + * + */ + public Builder instanceSize(@Nullable Output instanceSize) { + $.instanceSize = instanceSize; + return this; + } + + /** + * @param instanceSize Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + * + * @return builder + * + */ + public Builder instanceSize(String instanceSize) { + return instanceSize(Output.of(instanceSize)); + } + + /** + * @param scalingFactor Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + * + * @return builder + * + */ + public Builder scalingFactor(@Nullable Output scalingFactor) { + $.scalingFactor = scalingFactor; + return this; + } + + /** + * @param scalingFactor Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + * + * @return builder + * + */ + public Builder scalingFactor(Double scalingFactor) { + return scalingFactor(Output.of(scalingFactor)); + } + + public MetastoreServiceScalingConfigArgs build() { + return $; + } + } + +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceState.java b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceState.java index 3eb2c8db9b..0c04d8710f 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/inputs/MetastoreServiceState.java @@ -10,6 +10,7 @@ import com.pulumi.gcp.dataproc.inputs.MetastoreServiceMaintenanceWindowArgs; import com.pulumi.gcp.dataproc.inputs.MetastoreServiceMetadataIntegrationArgs; import com.pulumi.gcp.dataproc.inputs.MetastoreServiceNetworkConfigArgs; +import com.pulumi.gcp.dataproc.inputs.MetastoreServiceScalingConfigArgs; import com.pulumi.gcp.dataproc.inputs.MetastoreServiceTelemetryConfigArgs; import java.lang.Integer; import java.lang.String; @@ -278,6 +279,23 @@ public Optional> releaseChannel() { return Optional.ofNullable(this.releaseChannel); } + /** + * Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + */ + @Import(name="scalingConfig") + private @Nullable Output scalingConfig; + + /** + * @return Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + */ + public Optional> scalingConfig() { + return Optional.ofNullable(this.scalingConfig); + } + /** * The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between @@ -398,6 +416,7 @@ private MetastoreServiceState(MetastoreServiceState $) { this.port = $.port; this.project = $.project; this.releaseChannel = $.releaseChannel; + this.scalingConfig = $.scalingConfig; this.serviceId = $.serviceId; this.state = $.state; this.stateMessage = $.stateMessage; @@ -769,6 +788,29 @@ public Builder releaseChannel(String releaseChannel) { return releaseChannel(Output.of(releaseChannel)); } + /** + * @param scalingConfig Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + * @return builder + * + */ + public Builder scalingConfig(@Nullable Output scalingConfig) { + $.scalingConfig = scalingConfig; + return this; + } + + /** + * @param scalingConfig Represents the scaling configuration of a metastore service. + * Structure is documented below. + * + * @return builder + * + */ + public Builder scalingConfig(MetastoreServiceScalingConfigArgs scalingConfig) { + return scalingConfig(Output.of(scalingConfig)); + } + /** * @param serviceId The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dataproc/outputs/MetastoreServiceScalingConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/outputs/MetastoreServiceScalingConfig.java new file mode 100644 index 0000000000..83b43efed2 --- /dev/null +++ b/sdk/java/src/main/java/com/pulumi/gcp/dataproc/outputs/MetastoreServiceScalingConfig.java @@ -0,0 +1,79 @@ +// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +package com.pulumi.gcp.dataproc.outputs; + +import com.pulumi.core.annotations.CustomType; +import java.lang.Double; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; +import javax.annotation.Nullable; + +@CustomType +public final class MetastoreServiceScalingConfig { + /** + * @return Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + * + */ + private @Nullable String instanceSize; + /** + * @return Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + * + */ + private @Nullable Double scalingFactor; + + private MetastoreServiceScalingConfig() {} + /** + * @return Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + * + */ + public Optional instanceSize() { + return Optional.ofNullable(this.instanceSize); + } + /** + * @return Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + * + */ + public Optional scalingFactor() { + return Optional.ofNullable(this.scalingFactor); + } + + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(MetastoreServiceScalingConfig defaults) { + return new Builder(defaults); + } + @CustomType.Builder + public static final class Builder { + private @Nullable String instanceSize; + private @Nullable Double scalingFactor; + public Builder() {} + public Builder(MetastoreServiceScalingConfig defaults) { + Objects.requireNonNull(defaults); + this.instanceSize = defaults.instanceSize; + this.scalingFactor = defaults.scalingFactor; + } + + @CustomType.Setter + public Builder instanceSize(@Nullable String instanceSize) { + this.instanceSize = instanceSize; + return this; + } + @CustomType.Setter + public Builder scalingFactor(@Nullable Double scalingFactor) { + this.scalingFactor = scalingFactor; + return this; + } + public MetastoreServiceScalingConfig build() { + final var o = new MetastoreServiceScalingConfig(); + o.instanceSize = instanceSize; + o.scalingFactor = scalingFactor; + return o; + } + } +} diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZone.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZone.java index cef3c2e088..bd500d5b57 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZone.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZone.java @@ -266,9 +266,6 @@ * .labels(Map.of("foo", "bar")) * .visibility("private") * .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder() - * .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder() - * .networkUrl(network_1.id()) - * .build()) * .gkeClusters(ManagedZonePrivateVisibilityConfigGkeClusterArgs.builder() * .gkeClusterName(cluster_1.id()) * .build()) @@ -639,7 +636,7 @@ public Output> peeringConfig() { } /** * For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * */ @@ -648,7 +645,7 @@ public Output> peeringConfig() { /** * @return For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * */ diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZoneArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZoneArgs.java index 25851532fd..d50bb110bc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZoneArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/ManagedZoneArgs.java @@ -181,7 +181,7 @@ public Optional> peeringConfig() { /** * For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * */ @@ -190,7 +190,7 @@ public Optional> peeringConfig() { /** * @return For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * */ @@ -520,7 +520,7 @@ public Builder peeringConfig(ManagedZonePeeringConfigArgs peeringConfig) { /** * @param privateVisibilityConfig For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * * @return builder @@ -533,7 +533,7 @@ public Builder privateVisibilityConfig(@Nullable Output>> return Optional.ofNullable(this.gkeClusters); } - @Import(name="networks", required=true) - private Output> networks; + @Import(name="networks") + private @Nullable Output> networks; - public Output> networks() { - return this.networks; + public Optional>> networks() { + return Optional.ofNullable(this.networks); } private ManagedZonePrivateVisibilityConfigArgs() {} @@ -100,7 +100,7 @@ public Builder gkeClusters(ManagedZonePrivateVisibilityConfigGkeClusterArgs... g return gkeClusters(List.of(gkeClusters)); } - public Builder networks(Output> networks) { + public Builder networks(@Nullable Output> networks) { $.networks = networks; return this; } @@ -114,7 +114,6 @@ public Builder networks(ManagedZonePrivateVisibilityConfigNetworkArgs... network } public ManagedZonePrivateVisibilityConfigArgs build() { - $.networks = Objects.requireNonNull($.networks, "expected parameter 'networks' to be non-null"); return $; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/ManagedZoneState.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/ManagedZoneState.java index 20b5e12551..db02532744 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/ManagedZoneState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/ManagedZoneState.java @@ -232,7 +232,7 @@ public Optional> peeringConfig() { /** * For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * */ @@ -241,7 +241,7 @@ public Optional> peeringConfig() { /** * @return For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * */ @@ -652,7 +652,7 @@ public Builder peeringConfig(ManagedZonePeeringConfigArgs peeringConfig) { /** * @param privateVisibilityConfig For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. * Structure is documented below. * * @return builder @@ -665,7 +665,7 @@ public Builder privateVisibilityConfig(@Nullable Output ipProtocol() { } /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ @Import(name="loadBalancerType", required=true) private Output loadBalancerType; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public Output loadBalancerType() { @@ -193,7 +193,7 @@ public Builder ipProtocol(String ipProtocol) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * @@ -204,7 +204,7 @@ public Builder loadBalancerType(Output loadBalancerType) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.java index b87dd5f969..1a3b3c5cea 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancerArgs.java @@ -46,14 +46,14 @@ public Output ipProtocol() { } /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ @Import(name="loadBalancerType", required=true) private Output loadBalancerType; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public Output loadBalancerType() { @@ -193,7 +193,7 @@ public Builder ipProtocol(String ipProtocol) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * @@ -204,7 +204,7 @@ public Builder loadBalancerType(Output loadBalancerType) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.java index c055b14048..e8262d2096 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.java @@ -46,14 +46,14 @@ public Output ipProtocol() { } /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ @Import(name="loadBalancerType", required=true) private Output loadBalancerType; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public Output loadBalancerType() { @@ -193,7 +193,7 @@ public Builder ipProtocol(String ipProtocol) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * @@ -204,7 +204,7 @@ public Builder loadBalancerType(Output loadBalancerType) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.java index 2e5aceb26b..fc8a712440 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/inputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancerArgs.java @@ -46,14 +46,14 @@ public Output ipProtocol() { } /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ @Import(name="loadBalancerType", required=true) private Output loadBalancerType; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public Output loadBalancerType() { @@ -193,7 +193,7 @@ public Builder ipProtocol(String ipProtocol) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * @@ -204,7 +204,7 @@ public Builder loadBalancerType(Output loadBalancerType) { } /** - * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @param loadBalancerType The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * * @return builder * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/ManagedZonePrivateVisibilityConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/ManagedZonePrivateVisibilityConfig.java index c3b8c80f55..82b7991d2e 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/ManagedZonePrivateVisibilityConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/ManagedZonePrivateVisibilityConfig.java @@ -18,7 +18,7 @@ public final class ManagedZonePrivateVisibilityConfig { * */ private @Nullable List gkeClusters; - private List networks; + private @Nullable List networks; private ManagedZonePrivateVisibilityConfig() {} /** @@ -30,7 +30,7 @@ public List gkeClusters() { return this.gkeClusters == null ? List.of() : this.gkeClusters; } public List networks() { - return this.networks; + return this.networks == null ? List.of() : this.networks; } public static Builder builder() { @@ -43,7 +43,7 @@ public static Builder builder(ManagedZonePrivateVisibilityConfig defaults) { @CustomType.Builder public static final class Builder { private @Nullable List gkeClusters; - private List networks; + private @Nullable List networks; public Builder() {} public Builder(ManagedZonePrivateVisibilityConfig defaults) { Objects.requireNonNull(defaults); @@ -60,8 +60,8 @@ public Builder gkeClusters(ManagedZonePrivateVisibilityConfigGkeCluster... gkeCl return gkeClusters(List.of(gkeClusters)); } @CustomType.Setter - public Builder networks(List networks) { - this.networks = Objects.requireNonNull(networks); + public Builder networks(@Nullable List networks) { + this.networks = networks; return this; } public Builder networks(ManagedZonePrivateVisibilityConfigNetwork... networks) { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.java index 49b9b8ec77..737a3baf32 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBalancer.java @@ -22,7 +22,7 @@ public final class RecordSetRoutingPolicyGeoHealthCheckedTargetsInternalLoadBala */ private String ipProtocol; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ private String loadBalancerType; @@ -63,7 +63,7 @@ public String ipProtocol() { return this.ipProtocol; } /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public String loadBalancerType() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.java index aa49303ee6..e7780a18e0 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsInternalLoadBalancer.java @@ -22,7 +22,7 @@ public final class RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTarg */ private String ipProtocol; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ private String loadBalancerType; @@ -63,7 +63,7 @@ public String ipProtocol() { return this.ipProtocol; } /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public String loadBalancerType() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.java index 8f2dca4bbb..dafa59dd1a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancer.java @@ -22,7 +22,7 @@ public final class RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalance */ private String ipProtocol; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ private String loadBalancerType; @@ -63,7 +63,7 @@ public String ipProtocol() { return this.ipProtocol; } /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public String loadBalancerType() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.java b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.java index 7ae92fea88..d967ec20bc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/dns/outputs/RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBalancer.java @@ -22,7 +22,7 @@ public final class RecordSetRoutingPolicyWrrHealthCheckedTargetsInternalLoadBala */ private String ipProtocol; /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ private String loadBalancerType; @@ -63,7 +63,7 @@ public String ipProtocol() { return this.ipProtocol; } /** - * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * @return The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] * */ public String loadBalancerType() { diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.java index 5cb12a8c3e..097f56b3cc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterControlPlaneNodeVsphereConfigArgs.java @@ -19,8 +19,6 @@ public final class VMwareClusterControlPlaneNodeVsphereConfigArgs extends com.pu * (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ @Import(name="datastore") private @Nullable Output datastore; @@ -29,17 +27,37 @@ public final class VMwareClusterControlPlaneNodeVsphereConfigArgs extends com.pu * @return (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ public Optional> datastore() { return Optional.ofNullable(this.datastore); } + /** + * (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + @Import(name="storagePolicyName") + private @Nullable Output storagePolicyName; + + /** + * @return (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + public Optional> storagePolicyName() { + return Optional.ofNullable(this.storagePolicyName); + } + private VMwareClusterControlPlaneNodeVsphereConfigArgs() {} private VMwareClusterControlPlaneNodeVsphereConfigArgs(VMwareClusterControlPlaneNodeVsphereConfigArgs $) { this.datastore = $.datastore; + this.storagePolicyName = $.storagePolicyName; } public static Builder builder() { @@ -64,8 +82,6 @@ public Builder(VMwareClusterControlPlaneNodeVsphereConfigArgs defaults) { * @param datastore (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * * @return builder * */ @@ -78,8 +94,6 @@ public Builder datastore(@Nullable Output datastore) { * @param datastore (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * * @return builder * */ @@ -87,6 +101,33 @@ public Builder datastore(String datastore) { return datastore(Output.of(datastore)); } + /** + * @param storagePolicyName (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + * @return builder + * + */ + public Builder storagePolicyName(@Nullable Output storagePolicyName) { + $.storagePolicyName = storagePolicyName; + return this; + } + + /** + * @param storagePolicyName (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + * @return builder + * + */ + public Builder storagePolicyName(String storagePolicyName) { + return storagePolicyName(Output.of(storagePolicyName)); + } + public VMwareClusterControlPlaneNodeVsphereConfigArgs build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterVcenterArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterVcenterArgs.java index 0122d612da..68fe9cc5fc 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterVcenterArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/inputs/VMwareClusterVcenterArgs.java @@ -85,8 +85,6 @@ public Optional> datacenter() { * (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ @Import(name="datastore") private @Nullable Output datastore; @@ -95,8 +93,6 @@ public Optional> datacenter() { * @return (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ public Optional> datastore() { return Optional.ofNullable(this.datastore); @@ -136,6 +132,27 @@ public Optional> resourcePool() { return Optional.ofNullable(this.resourcePool); } + /** + * (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + @Import(name="storagePolicyName") + private @Nullable Output storagePolicyName; + + /** + * @return (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + public Optional> storagePolicyName() { + return Optional.ofNullable(this.storagePolicyName); + } + private VMwareClusterVcenterArgs() {} private VMwareClusterVcenterArgs(VMwareClusterVcenterArgs $) { @@ -146,6 +163,7 @@ private VMwareClusterVcenterArgs(VMwareClusterVcenterArgs $) { this.datastore = $.datastore; this.folder = $.folder; this.resourcePool = $.resourcePool; + this.storagePolicyName = $.storagePolicyName; } public static Builder builder() { @@ -260,8 +278,6 @@ public Builder datacenter(String datacenter) { * @param datastore (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * * @return builder * */ @@ -274,8 +290,6 @@ public Builder datastore(@Nullable Output datastore) { * @param datastore (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * * @return builder * */ @@ -329,6 +343,33 @@ public Builder resourcePool(String resourcePool) { return resourcePool(Output.of(resourcePool)); } + /** + * @param storagePolicyName (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + * @return builder + * + */ + public Builder storagePolicyName(@Nullable Output storagePolicyName) { + $.storagePolicyName = storagePolicyName; + return this; + } + + /** + * @param storagePolicyName (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + * @return builder + * + */ + public Builder storagePolicyName(String storagePolicyName) { + return storagePolicyName(Output.of(storagePolicyName)); + } + public VMwareClusterVcenterArgs build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeVsphereConfig.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeVsphereConfig.java index bfcc0ef947..5ce72a68a4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeVsphereConfig.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterControlPlaneNodeVsphereConfig.java @@ -15,22 +15,36 @@ public final class VMwareClusterControlPlaneNodeVsphereConfig { * @return (Output) * The Vsphere datastore used by the Control Plane Node. * + */ + private @Nullable String datastore; + /** + * @return (Output) + * The Vsphere storage policy used by the control plane Node. + * * *** * */ - private @Nullable String datastore; + private @Nullable String storagePolicyName; private VMwareClusterControlPlaneNodeVsphereConfig() {} /** * @return (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ public Optional datastore() { return Optional.ofNullable(this.datastore); } + /** + * @return (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + public Optional storagePolicyName() { + return Optional.ofNullable(this.storagePolicyName); + } public static Builder builder() { return new Builder(); @@ -42,10 +56,12 @@ public static Builder builder(VMwareClusterControlPlaneNodeVsphereConfig default @CustomType.Builder public static final class Builder { private @Nullable String datastore; + private @Nullable String storagePolicyName; public Builder() {} public Builder(VMwareClusterControlPlaneNodeVsphereConfig defaults) { Objects.requireNonNull(defaults); this.datastore = defaults.datastore; + this.storagePolicyName = defaults.storagePolicyName; } @CustomType.Setter @@ -53,9 +69,15 @@ public Builder datastore(@Nullable String datastore) { this.datastore = datastore; return this; } + @CustomType.Setter + public Builder storagePolicyName(@Nullable String storagePolicyName) { + this.storagePolicyName = storagePolicyName; + return this; + } public VMwareClusterControlPlaneNodeVsphereConfig build() { final var o = new VMwareClusterControlPlaneNodeVsphereConfig(); o.datastore = datastore; + o.storagePolicyName = storagePolicyName; return o; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterVcenter.java b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterVcenter.java index 0f0a620f31..7936b6a2ed 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterVcenter.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/gkeonprem/outputs/VMwareClusterVcenter.java @@ -38,8 +38,6 @@ public final class VMwareClusterVcenter { * @return (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ private @Nullable String datastore; /** @@ -54,6 +52,14 @@ public final class VMwareClusterVcenter { * */ private @Nullable String resourcePool; + /** + * @return (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + private @Nullable String storagePolicyName; private VMwareClusterVcenter() {} /** @@ -91,8 +97,6 @@ public Optional datacenter() { * @return (Output) * The Vsphere datastore used by the Control Plane Node. * - * *** - * */ public Optional datastore() { return Optional.ofNullable(this.datastore); @@ -113,6 +117,16 @@ public Optional folder() { public Optional resourcePool() { return Optional.ofNullable(this.resourcePool); } + /** + * @return (Output) + * The Vsphere storage policy used by the control plane Node. + * + * *** + * + */ + public Optional storagePolicyName() { + return Optional.ofNullable(this.storagePolicyName); + } public static Builder builder() { return new Builder(); @@ -130,6 +144,7 @@ public static final class Builder { private @Nullable String datastore; private @Nullable String folder; private @Nullable String resourcePool; + private @Nullable String storagePolicyName; public Builder() {} public Builder(VMwareClusterVcenter defaults) { Objects.requireNonNull(defaults); @@ -140,6 +155,7 @@ public Builder(VMwareClusterVcenter defaults) { this.datastore = defaults.datastore; this.folder = defaults.folder; this.resourcePool = defaults.resourcePool; + this.storagePolicyName = defaults.storagePolicyName; } @CustomType.Setter @@ -177,6 +193,11 @@ public Builder resourcePool(@Nullable String resourcePool) { this.resourcePool = resourcePool; return this; } + @CustomType.Setter + public Builder storagePolicyName(@Nullable String storagePolicyName) { + this.storagePolicyName = storagePolicyName; + return this; + } public VMwareClusterVcenter build() { final var o = new VMwareClusterVcenter(); o.address = address; @@ -186,6 +207,7 @@ public VMwareClusterVcenter build() { o.datastore = datastore; o.folder = folder; o.resourcePool = resourcePool; + o.storagePolicyName = storagePolicyName; return o; } } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStore.java b/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStore.java index fec69dedcd..e554bb8ece 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStore.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStore.java @@ -70,6 +70,7 @@ * .disableReferentialIntegrity(false) * .disableResourceVersioning(false) * .enableHistoryImport(false) + * .defaultSearchHandlingStrict(false) * .notificationConfig(FhirStoreNotificationConfigArgs.builder() * .pubsubTopic(topic.id()) * .build()) @@ -312,6 +313,24 @@ public Output complexDataTypeReferenceParsing() { public Output dataset() { return this.dataset; } + /** + * If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + */ + @Export(name="defaultSearchHandlingStrict", type=Boolean.class, parameters={}) + private Output defaultSearchHandlingStrict; + + /** + * @return If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + */ + public Output> defaultSearchHandlingStrict() { + return Codegen.optional(this.defaultSearchHandlingStrict); + } /** * Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the diff --git a/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStoreArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStoreArgs.java index c15a6549bf..ec5ae6d80d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStoreArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/healthcare/FhirStoreArgs.java @@ -58,6 +58,25 @@ public Output dataset() { return this.dataset; } + /** + * If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + */ + @Import(name="defaultSearchHandlingStrict") + private @Nullable Output defaultSearchHandlingStrict; + + /** + * @return If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + */ + public Optional> defaultSearchHandlingStrict() { + return Optional.ofNullable(this.defaultSearchHandlingStrict); + } + /** * Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the @@ -287,6 +306,7 @@ private FhirStoreArgs() {} private FhirStoreArgs(FhirStoreArgs $) { this.complexDataTypeReferenceParsing = $.complexDataTypeReferenceParsing; this.dataset = $.dataset; + this.defaultSearchHandlingStrict = $.defaultSearchHandlingStrict; this.disableReferentialIntegrity = $.disableReferentialIntegrity; this.disableResourceVersioning = $.disableResourceVersioning; this.enableHistoryImport = $.enableHistoryImport; @@ -367,6 +387,31 @@ public Builder dataset(String dataset) { return dataset(Output.of(dataset)); } + /** + * @param defaultSearchHandlingStrict If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + * @return builder + * + */ + public Builder defaultSearchHandlingStrict(@Nullable Output defaultSearchHandlingStrict) { + $.defaultSearchHandlingStrict = defaultSearchHandlingStrict; + return this; + } + + /** + * @param defaultSearchHandlingStrict If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + * @return builder + * + */ + public Builder defaultSearchHandlingStrict(Boolean defaultSearchHandlingStrict) { + return defaultSearchHandlingStrict(Output.of(defaultSearchHandlingStrict)); + } + /** * @param disableReferentialIntegrity Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the diff --git a/sdk/java/src/main/java/com/pulumi/gcp/healthcare/inputs/FhirStoreState.java b/sdk/java/src/main/java/com/pulumi/gcp/healthcare/inputs/FhirStoreState.java index fdef44c9da..a337563372 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/healthcare/inputs/FhirStoreState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/healthcare/inputs/FhirStoreState.java @@ -58,6 +58,25 @@ public Optional> dataset() { return Optional.ofNullable(this.dataset); } + /** + * If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + */ + @Import(name="defaultSearchHandlingStrict") + private @Nullable Output defaultSearchHandlingStrict; + + /** + * @return If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + */ + public Optional> defaultSearchHandlingStrict() { + return Optional.ofNullable(this.defaultSearchHandlingStrict); + } + /** * Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the @@ -302,6 +321,7 @@ private FhirStoreState() {} private FhirStoreState(FhirStoreState $) { this.complexDataTypeReferenceParsing = $.complexDataTypeReferenceParsing; this.dataset = $.dataset; + this.defaultSearchHandlingStrict = $.defaultSearchHandlingStrict; this.disableReferentialIntegrity = $.disableReferentialIntegrity; this.disableResourceVersioning = $.disableResourceVersioning; this.enableHistoryImport = $.enableHistoryImport; @@ -383,6 +403,31 @@ public Builder dataset(String dataset) { return dataset(Output.of(dataset)); } + /** + * @param defaultSearchHandlingStrict If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + * @return builder + * + */ + public Builder defaultSearchHandlingStrict(@Nullable Output defaultSearchHandlingStrict) { + $.defaultSearchHandlingStrict = defaultSearchHandlingStrict; + return this; + } + + /** + * @param defaultSearchHandlingStrict If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + * + * @return builder + * + */ + public Builder defaultSearchHandlingStrict(Boolean defaultSearchHandlingStrict) { + return defaultSearchHandlingStrict(Output.of(defaultSearchHandlingStrict)); + } + /** * @param disableReferentialIntegrity Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the diff --git a/sdk/java/src/main/java/com/pulumi/gcp/monitoring/MonitoringFunctions.java b/sdk/java/src/main/java/com/pulumi/gcp/monitoring/MonitoringFunctions.java index a8d3fb746d..b63faf90ea 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/monitoring/MonitoringFunctions.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/monitoring/MonitoringFunctions.java @@ -85,7 +85,7 @@ public final class MonitoringFunctions { * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var myapp = new StandardAppVersion("myapp", StandardAppVersionArgs.builder() @@ -174,7 +174,7 @@ public static Output getAppEngineService(GetAppEngine * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var myapp = new StandardAppVersion("myapp", StandardAppVersionArgs.builder() @@ -263,7 +263,7 @@ public static CompletableFuture getAppEngineServicePl * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var myapp = new StandardAppVersion("myapp", StandardAppVersionArgs.builder() @@ -352,7 +352,7 @@ public static Output getAppEngineService(GetAppEngine * * var object = new BucketObject("object", BucketObjectArgs.builder() * .bucket(bucket.name()) - * .source(new FileAsset("./test-fixtures/appengine/hello-world.zip")) + * .source(new FileAsset("./test-fixtures/hello-world.zip")) * .build()); * * var myapp = new StandardAppVersion("myapp", StandardAppVersionArgs.builder() diff --git a/sdk/java/src/main/java/com/pulumi/gcp/networkservices/Gateway.java b/sdk/java/src/main/java/com/pulumi/gcp/networkservices/Gateway.java index 2d6af5a6f1..e40b8f59c4 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/networkservices/Gateway.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/networkservices/Gateway.java @@ -130,8 +130,8 @@ * var defaultCertificate = new Certificate("defaultCertificate", CertificateArgs.builder() * .location("us-central1") * .selfManaged(CertificateSelfManagedArgs.builder() - * .pemCertificate(Files.readString(Paths.get("test-fixtures/certificatemanager/cert.pem"))) - * .pemPrivateKey(Files.readString(Paths.get("test-fixtures/certificatemanager/private-key.pem"))) + * .pemCertificate(Files.readString(Paths.get("test-fixtures/cert.pem"))) + * .pemPrivateKey(Files.readString(Paths.get("test-fixtures/private-key.pem"))) * .build()) * .build()); * @@ -224,8 +224,8 @@ * var defaultCertificate = new Certificate("defaultCertificate", CertificateArgs.builder() * .location("us-south1") * .selfManaged(CertificateSelfManagedArgs.builder() - * .pemCertificate(Files.readString(Paths.get("test-fixtures/certificatemanager/cert.pem"))) - * .pemPrivateKey(Files.readString(Paths.get("test-fixtures/certificatemanager/private-key.pem"))) + * .pemCertificate(Files.readString(Paths.get("test-fixtures/cert.pem"))) + * .pemPrivateKey(Files.readString(Paths.get("test-fixtures/private-key.pem"))) * .build()) * .build()); * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/Secret.java b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/Secret.java index 0d4d50ad85..63d82ea788 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/Secret.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/Secret.java @@ -333,6 +333,32 @@ public Output>> topics() { public Output> ttl() { return Codegen.optional(this.ttl); } + /** + * Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + */ + @Export(name="versionAliases", type=Map.class, parameters={String.class, String.class}) + private Output> versionAliases; + + /** + * @return Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + */ + public Output>> versionAliases() { + return Codegen.optional(this.versionAliases); + } /** * diff --git a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/SecretArgs.java b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/SecretArgs.java index 913dd21e7f..b82145543b 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/SecretArgs.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/SecretArgs.java @@ -201,6 +201,33 @@ public Optional> ttl() { return Optional.ofNullable(this.ttl); } + /** + * Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + */ + @Import(name="versionAliases") + private @Nullable Output> versionAliases; + + /** + * @return Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + */ + public Optional>> versionAliases() { + return Optional.ofNullable(this.versionAliases); + } + private SecretArgs() {} private SecretArgs(SecretArgs $) { @@ -213,6 +240,7 @@ private SecretArgs(SecretArgs $) { this.secretId = $.secretId; this.topics = $.topics; this.ttl = $.ttl; + this.versionAliases = $.versionAliases; } public static Builder builder() { @@ -479,6 +507,39 @@ public Builder ttl(String ttl) { return ttl(Output.of(ttl)); } + /** + * @param versionAliases Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + * @return builder + * + */ + public Builder versionAliases(@Nullable Output> versionAliases) { + $.versionAliases = versionAliases; + return this; + } + + /** + * @param versionAliases Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + * @return builder + * + */ + public Builder versionAliases(Map versionAliases) { + return versionAliases(Output.of(versionAliases)); + } + public SecretArgs build() { $.replication = Objects.requireNonNull($.replication, "expected parameter 'replication' to be non-null"); $.secretId = Objects.requireNonNull($.secretId, "expected parameter 'secretId' to be non-null"); diff --git a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/inputs/SecretState.java b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/inputs/SecretState.java index 5c739ba4e1..a5cd2c5387 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/inputs/SecretState.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/inputs/SecretState.java @@ -233,6 +233,33 @@ public Optional> ttl() { return Optional.ofNullable(this.ttl); } + /** + * Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + */ + @Import(name="versionAliases") + private @Nullable Output> versionAliases; + + /** + * @return Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + */ + public Optional>> versionAliases() { + return Optional.ofNullable(this.versionAliases); + } + private SecretState() {} private SecretState(SecretState $) { @@ -247,6 +274,7 @@ private SecretState(SecretState $) { this.secretId = $.secretId; this.topics = $.topics; this.ttl = $.ttl; + this.versionAliases = $.versionAliases; } public static Builder builder() { @@ -557,6 +585,39 @@ public Builder ttl(String ttl) { return ttl(Output.of(ttl)); } + /** + * @param versionAliases Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + * @return builder + * + */ + public Builder versionAliases(@Nullable Output> versionAliases) { + $.versionAliases = versionAliases; + return this; + } + + /** + * @param versionAliases Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + * + * @return builder + * + */ + public Builder versionAliases(Map versionAliases) { + return versionAliases(Output.of(versionAliases)); + } + public SecretState build() { return $; } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/outputs/GetSecretResult.java b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/outputs/GetSecretResult.java index 010e913e26..80390d2c3d 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/outputs/GetSecretResult.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/secretmanager/outputs/GetSecretResult.java @@ -32,6 +32,7 @@ public final class GetSecretResult { private String secretId; private List topics; private String ttl; + private Map versionAliases; private GetSecretResult() {} public Map annotations() { @@ -74,6 +75,9 @@ public List topics() { public String ttl() { return this.ttl; } + public Map versionAliases() { + return this.versionAliases; + } public static Builder builder() { return new Builder(); @@ -96,6 +100,7 @@ public static final class Builder { private String secretId; private List topics; private String ttl; + private Map versionAliases; public Builder() {} public Builder(GetSecretResult defaults) { Objects.requireNonNull(defaults); @@ -111,6 +116,7 @@ public Builder(GetSecretResult defaults) { this.secretId = defaults.secretId; this.topics = defaults.topics; this.ttl = defaults.ttl; + this.versionAliases = defaults.versionAliases; } @CustomType.Setter @@ -182,6 +188,11 @@ public Builder ttl(String ttl) { this.ttl = Objects.requireNonNull(ttl); return this; } + @CustomType.Setter + public Builder versionAliases(Map versionAliases) { + this.versionAliases = Objects.requireNonNull(versionAliases); + return this; + } public GetSecretResult build() { final var o = new GetSecretResult(); o.annotations = annotations; @@ -196,6 +207,7 @@ public GetSecretResult build() { o.secretId = secretId; o.topics = topics; o.ttl = ttl; + o.versionAliases = versionAliases; return o; } } diff --git a/sdk/nodejs/apigateway/apiConfig.ts b/sdk/nodejs/apigateway/apiConfig.ts index 683c5de025..7df8bbc0f3 100644 --- a/sdk/nodejs/apigateway/apiConfig.ts +++ b/sdk/nodejs/apigateway/apiConfig.ts @@ -32,7 +32,7 @@ import * as utilities from "../utilities"; * openapiDocuments: [{ * document: { * path: "spec.yaml", - * contents: Buffer.from(fs.readFileSync("test-fixtures/apigateway/openapi.yaml"), 'binary').toString('base64'), + * contents: Buffer.from(fs.readFileSync("test-fixtures/openapi.yaml"), 'binary').toString('base64'), * }, * }], * }, { diff --git a/sdk/nodejs/apigateway/gateway.ts b/sdk/nodejs/apigateway/gateway.ts index 18b6a34fe9..ec60786191 100644 --- a/sdk/nodejs/apigateway/gateway.ts +++ b/sdk/nodejs/apigateway/gateway.ts @@ -30,7 +30,7 @@ import * as utilities from "../utilities"; * openapiDocuments: [{ * document: { * path: "spec.yaml", - * contents: Buffer.from(fs.readFileSync("test-fixtures/apigateway/openapi.yaml"), 'binary').toString('base64'), + * contents: Buffer.from(fs.readFileSync("test-fixtures/openapi.yaml"), 'binary').toString('base64'), * }, * }], * }, { diff --git a/sdk/nodejs/appengine/applicationUrlDispatchRules.ts b/sdk/nodejs/appengine/applicationUrlDispatchRules.ts index 9d9418ada6..002d9601cf 100644 --- a/sdk/nodejs/appengine/applicationUrlDispatchRules.ts +++ b/sdk/nodejs/appengine/applicationUrlDispatchRules.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * const bucket = new gcp.storage.Bucket("bucket", {location: "US"}); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const adminV3 = new gcp.appengine.StandardAppVersion("adminV3", { * versionId: "v3", diff --git a/sdk/nodejs/appengine/engineSplitTraffic.ts b/sdk/nodejs/appengine/engineSplitTraffic.ts index a74dac5cca..4263bbe940 100644 --- a/sdk/nodejs/appengine/engineSplitTraffic.ts +++ b/sdk/nodejs/appengine/engineSplitTraffic.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * const bucket = new gcp.storage.Bucket("bucket", {location: "US"}); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const liveappV1 = new gcp.appengine.StandardAppVersion("liveappV1", { * versionId: "v1", diff --git a/sdk/nodejs/appengine/flexibleAppVersion.ts b/sdk/nodejs/appengine/flexibleAppVersion.ts index c6e9c2c665..248b2f1d9f 100644 --- a/sdk/nodejs/appengine/flexibleAppVersion.ts +++ b/sdk/nodejs/appengine/flexibleAppVersion.ts @@ -68,7 +68,7 @@ import * as utilities from "../utilities"; * }); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const myappV1 = new gcp.appengine.FlexibleAppVersion("myappV1", { * versionId: "v1", diff --git a/sdk/nodejs/appengine/serviceNetworkSettings.ts b/sdk/nodejs/appengine/serviceNetworkSettings.ts index bf01d4a512..c44e12ea3d 100644 --- a/sdk/nodejs/appengine/serviceNetworkSettings.ts +++ b/sdk/nodejs/appengine/serviceNetworkSettings.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * const bucket = new gcp.storage.Bucket("bucket", {location: "US"}); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const internalappStandardAppVersion = new gcp.appengine.StandardAppVersion("internalappStandardAppVersion", { * versionId: "v1", diff --git a/sdk/nodejs/appengine/standardAppVersion.ts b/sdk/nodejs/appengine/standardAppVersion.ts index 56b49c1fe7..f8335bc31d 100644 --- a/sdk/nodejs/appengine/standardAppVersion.ts +++ b/sdk/nodejs/appengine/standardAppVersion.ts @@ -42,7 +42,7 @@ import * as utilities from "../utilities"; * const bucket = new gcp.storage.Bucket("bucket", {location: "US"}); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const myappV1 = new gcp.appengine.StandardAppVersion("myappV1", { * versionId: "v1", diff --git a/sdk/nodejs/backupdisasterrecovery/index.ts b/sdk/nodejs/backupdisasterrecovery/index.ts new file mode 100644 index 0000000000..c011e58ef1 --- /dev/null +++ b/sdk/nodejs/backupdisasterrecovery/index.ts @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +// Export members: +export { ManagementServerArgs, ManagementServerState } from "./managementServer"; +export type ManagementServer = import("./managementServer").ManagementServer; +export const ManagementServer: typeof import("./managementServer").ManagementServer = null as any; +utilities.lazyLoad(exports, ["ManagementServer"], () => require("./managementServer")); + + +const _module = { + version: utilities.getVersion(), + construct: (name: string, type: string, urn: string): pulumi.Resource => { + switch (type) { + case "gcp:backupdisasterrecovery/managementServer:ManagementServer": + return new ManagementServer(name, undefined, { urn }) + default: + throw new Error(`unknown resource type ${type}`); + } + }, +}; +pulumi.runtime.registerResourceModule("gcp", "backupdisasterrecovery/managementServer", _module) diff --git a/sdk/nodejs/backupdisasterrecovery/managementServer.ts b/sdk/nodejs/backupdisasterrecovery/managementServer.ts new file mode 100644 index 0000000000..3b7533b94f --- /dev/null +++ b/sdk/nodejs/backupdisasterrecovery/managementServer.ts @@ -0,0 +1,234 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * ### Backup Dr Management Server + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const defaultNetwork = new gcp.compute.Network("defaultNetwork", {}, { + * provider: google_beta, + * }); + * const privateIpAddress = new gcp.compute.GlobalAddress("privateIpAddress", { + * addressType: "INTERNAL", + * purpose: "VPC_PEERING", + * prefixLength: 20, + * network: defaultNetwork.id, + * }, { + * provider: google_beta, + * }); + * const defaultConnection = new gcp.servicenetworking.Connection("defaultConnection", { + * network: defaultNetwork.id, + * service: "servicenetworking.googleapis.com", + * reservedPeeringRanges: [privateIpAddress.name], + * }, { + * provider: google_beta, + * }); + * const ms_console = new gcp.backupdisasterrecovery.ManagementServer("ms-console", { + * location: "us-central1", + * type: "BACKUP_RESTORE", + * networks: [{ + * network: defaultNetwork.id, + * peeringMode: "PRIVATE_SERVICE_ACCESS", + * }], + * }, { + * provider: google_beta, + * dependsOn: [defaultConnection], + * }); + * ``` + * + * ## Import + * + * ManagementServer can be imported using any of these accepted formats + * + * ```sh + * $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}} + * ``` + * + * ```sh + * $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}} + * ``` + */ +export class ManagementServer extends pulumi.CustomResource { + /** + * Get an existing ManagementServer resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: ManagementServerState, opts?: pulumi.CustomResourceOptions): ManagementServer { + return new ManagementServer(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:backupdisasterrecovery/managementServer:ManagementServer'; + + /** + * Returns true if the given object is an instance of ManagementServer. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is ManagementServer { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === ManagementServer.__pulumiType; + } + + /** + * The location for the management server (management console) + */ + public readonly location!: pulumi.Output; + /** + * The management console URI + * Structure is documented below. + */ + public /*out*/ readonly managementUris!: pulumi.Output; + /** + * The name of management server (management console) + */ + public readonly name!: pulumi.Output; + /** + * Network details to create management server (management console). + * Structure is documented below. + */ + public readonly networks!: pulumi.Output; + /** + * The oauth2ClientId of management console. + */ + public /*out*/ readonly oauth2ClientId!: pulumi.Output; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + public readonly project!: pulumi.Output; + /** + * The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + */ + public readonly type!: pulumi.Output; + + /** + * Create a ManagementServer resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: ManagementServerArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: ManagementServerArgs | ManagementServerState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as ManagementServerState | undefined; + resourceInputs["location"] = state ? state.location : undefined; + resourceInputs["managementUris"] = state ? state.managementUris : undefined; + resourceInputs["name"] = state ? state.name : undefined; + resourceInputs["networks"] = state ? state.networks : undefined; + resourceInputs["oauth2ClientId"] = state ? state.oauth2ClientId : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["type"] = state ? state.type : undefined; + } else { + const args = argsOrState as ManagementServerArgs | undefined; + if ((!args || args.location === undefined) && !opts.urn) { + throw new Error("Missing required property 'location'"); + } + if ((!args || args.networks === undefined) && !opts.urn) { + throw new Error("Missing required property 'networks'"); + } + resourceInputs["location"] = args ? args.location : undefined; + resourceInputs["name"] = args ? args.name : undefined; + resourceInputs["networks"] = args ? args.networks : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["type"] = args ? args.type : undefined; + resourceInputs["managementUris"] = undefined /*out*/; + resourceInputs["oauth2ClientId"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(ManagementServer.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering ManagementServer resources. + */ +export interface ManagementServerState { + /** + * The location for the management server (management console) + */ + location?: pulumi.Input; + /** + * The management console URI + * Structure is documented below. + */ + managementUris?: pulumi.Input[]>; + /** + * The name of management server (management console) + */ + name?: pulumi.Input; + /** + * Network details to create management server (management console). + * Structure is documented below. + */ + networks?: pulumi.Input[]>; + /** + * The oauth2ClientId of management console. + */ + oauth2ClientId?: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + */ + type?: pulumi.Input; +} + +/** + * The set of arguments for constructing a ManagementServer resource. + */ +export interface ManagementServerArgs { + /** + * The location for the management server (management console) + */ + location: pulumi.Input; + /** + * The name of management server (management console) + */ + name?: pulumi.Input; + /** + * Network details to create management server (management console). + * Structure is documented below. + */ + networks: pulumi.Input[]>; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * The type of management server (management console). + * Default value is `BACKUP_RESTORE`. + * Possible values are: `BACKUP_RESTORE`. + */ + type?: pulumi.Input; +} diff --git a/sdk/nodejs/bigquery/job.ts b/sdk/nodejs/bigquery/job.ts index 8f82724efe..e6f93e74f7 100644 --- a/sdk/nodejs/bigquery/job.ts +++ b/sdk/nodejs/bigquery/job.ts @@ -142,7 +142,7 @@ import * as utilities from "../utilities"; * uniformBucketLevelAccess: true, * }); * const testBucketObject = new gcp.storage.BucketObject("testBucketObject", { - * source: new pulumi.asset.FileAsset("./test-fixtures/bigquerytable/test.parquet.gzip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/test.parquet.gzip"), * bucket: testBucket.name, * }); * const testDataset = new gcp.bigquery.Dataset("testDataset", { diff --git a/sdk/nodejs/certificatemanager/certificate.ts b/sdk/nodejs/certificatemanager/certificate.ts index e682cd8332..7dec6e2e4e 100644 --- a/sdk/nodejs/certificatemanager/certificate.ts +++ b/sdk/nodejs/certificatemanager/certificate.ts @@ -56,7 +56,7 @@ import * as utilities from "../utilities"; * const caAuthority = new gcp.certificateauthority.Authority("caAuthority", { * location: "us-central1", * pool: pool.name, - * certificateAuthorityId: "my-ca", + * certificateAuthorityId: "ca-authority", * config: { * subjectConfig: { * subject: { @@ -152,8 +152,8 @@ import * as utilities from "../utilities"; * description: "Regional cert", * location: "us-central1", * selfManaged: { - * pemCertificate: fs.readFileSync("test-fixtures/certificatemanager/cert.pem"), - * pemPrivateKey: fs.readFileSync("test-fixtures/certificatemanager/private-key.pem"), + * pemCertificate: fs.readFileSync("test-fixtures/cert.pem"), + * pemPrivateKey: fs.readFileSync("test-fixtures/private-key.pem"), * }, * }); * ``` @@ -241,7 +241,8 @@ export class Certificate extends pulumi.CustomResource { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones */ public readonly scope!: pulumi.Output; /** @@ -332,7 +333,8 @@ export interface CertificateState { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones */ scope?: pulumi.Input; /** @@ -387,7 +389,8 @@ export interface CertificateArgs { * If unsure, choose this option. * EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, * served from non-core Google data centers. - * Currently allowed only for managed certificates. + * ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + * see https://cloud.google.com/compute/docs/regions-zones */ scope?: pulumi.Input; /** diff --git a/sdk/nodejs/certificatemanager/certificateIssuanceConfig.ts b/sdk/nodejs/certificatemanager/certificateIssuanceConfig.ts index adc06f87cf..b939ca3a0a 100644 --- a/sdk/nodejs/certificatemanager/certificateIssuanceConfig.ts +++ b/sdk/nodejs/certificatemanager/certificateIssuanceConfig.ts @@ -29,7 +29,7 @@ import * as utilities from "../utilities"; * const caAuthority = new gcp.certificateauthority.Authority("caAuthority", { * location: "us-central1", * pool: pool.name, - * certificateAuthorityId: "my-ca", + * certificateAuthorityId: "ca-authority", * config: { * subjectConfig: { * subject: { diff --git a/sdk/nodejs/cloudbuild/trigger.ts b/sdk/nodejs/cloudbuild/trigger.ts index 4f61613d6b..94aa526c4b 100644 --- a/sdk/nodejs/cloudbuild/trigger.ts +++ b/sdk/nodejs/cloudbuild/trigger.ts @@ -213,6 +213,28 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Cloudbuild Trigger Manual Bitbucket Server + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const manual_bitbucket_trigger = new gcp.cloudbuild.Trigger("manual-bitbucket-trigger", { + * gitFileSource: { + * bitbucketServerConfig: "projects/myProject/locations/global/bitbucketServerConfigs/configID", + * path: "cloudbuild.yaml", + * repoType: "BITBUCKET_SERVER", + * revision: "refs/heads/main", + * uri: "https://bbs.com/scm/stag/test-repo.git", + * }, + * sourceToBuild: { + * bitbucketServerConfig: "projects/myProject/locations/global/bitbucketServerConfigs/configID", + * ref: "refs/heads/main", + * repoType: "BITBUCKET_SERVER", + * uri: "https://bbs.com/scm/stag/test-repo.git", + * }, + * }); + * ``` * ### Cloudbuild Trigger Repo * * ```typescript diff --git a/sdk/nodejs/cloudrunv2/job.ts b/sdk/nodejs/cloudrunv2/job.ts index 6dc61b0569..42e8a8bfe6 100644 --- a/sdk/nodejs/cloudrunv2/job.ts +++ b/sdk/nodejs/cloudrunv2/job.ts @@ -300,6 +300,20 @@ export class Job extends pulumi.CustomResource { * Structure is documented below. */ public /*out*/ readonly conditions!: pulumi.Output; + /** + * (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * Email address of the authenticated creator. + */ + public /*out*/ readonly creator!: pulumi.Output; + /** + * The deletion time. + */ + public /*out*/ readonly deleteTime!: pulumi.Output; /** * A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. */ @@ -308,6 +322,10 @@ export class Job extends pulumi.CustomResource { * Number of executions created for this job. */ public /*out*/ readonly executionCount!: pulumi.Output; + /** + * For a deleted resource, the time after which it will be permamently deleted. + */ + public /*out*/ readonly expireTime!: pulumi.Output; /** * A number that monotonically increases every time the user modifies the desired state. */ @@ -326,6 +344,10 @@ export class Job extends pulumi.CustomResource { * All system labels in v1 now have a corresponding field in v2 Job. */ public readonly labels!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * Email address of the last authenticated modifier. + */ + public /*out*/ readonly lastModifier!: pulumi.Output; /** * Name of the last created execution. * Structure is documented below. @@ -376,6 +398,10 @@ export class Job extends pulumi.CustomResource { * Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. */ public /*out*/ readonly uid!: pulumi.Output; + /** + * The last-modified time. + */ + public /*out*/ readonly updateTime!: pulumi.Output; /** * Create a Job resource with the given unique name, arguments, and options. @@ -395,10 +421,15 @@ export class Job extends pulumi.CustomResource { resourceInputs["client"] = state ? state.client : undefined; resourceInputs["clientVersion"] = state ? state.clientVersion : undefined; resourceInputs["conditions"] = state ? state.conditions : undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["creator"] = state ? state.creator : undefined; + resourceInputs["deleteTime"] = state ? state.deleteTime : undefined; resourceInputs["etag"] = state ? state.etag : undefined; resourceInputs["executionCount"] = state ? state.executionCount : undefined; + resourceInputs["expireTime"] = state ? state.expireTime : undefined; resourceInputs["generation"] = state ? state.generation : undefined; resourceInputs["labels"] = state ? state.labels : undefined; + resourceInputs["lastModifier"] = state ? state.lastModifier : undefined; resourceInputs["latestCreatedExecutions"] = state ? state.latestCreatedExecutions : undefined; resourceInputs["launchStage"] = state ? state.launchStage : undefined; resourceInputs["location"] = state ? state.location : undefined; @@ -409,6 +440,7 @@ export class Job extends pulumi.CustomResource { resourceInputs["template"] = state ? state.template : undefined; resourceInputs["terminalConditions"] = state ? state.terminalConditions : undefined; resourceInputs["uid"] = state ? state.uid : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; } else { const args = argsOrState as JobArgs | undefined; if ((!args || args.template === undefined) && !opts.urn) { @@ -425,14 +457,20 @@ export class Job extends pulumi.CustomResource { resourceInputs["project"] = args ? args.project : undefined; resourceInputs["template"] = args ? args.template : undefined; resourceInputs["conditions"] = undefined /*out*/; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["creator"] = undefined /*out*/; + resourceInputs["deleteTime"] = undefined /*out*/; resourceInputs["etag"] = undefined /*out*/; resourceInputs["executionCount"] = undefined /*out*/; + resourceInputs["expireTime"] = undefined /*out*/; resourceInputs["generation"] = undefined /*out*/; + resourceInputs["lastModifier"] = undefined /*out*/; resourceInputs["latestCreatedExecutions"] = undefined /*out*/; resourceInputs["observedGeneration"] = undefined /*out*/; resourceInputs["reconciling"] = undefined /*out*/; resourceInputs["terminalConditions"] = undefined /*out*/; resourceInputs["uid"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(Job.__pulumiType, name, resourceInputs, opts); @@ -474,6 +512,20 @@ export interface JobState { * Structure is documented below. */ conditions?: pulumi.Input[]>; + /** + * (Output) + * Creation timestamp of the execution. + * A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + */ + createTime?: pulumi.Input; + /** + * Email address of the authenticated creator. + */ + creator?: pulumi.Input; + /** + * The deletion time. + */ + deleteTime?: pulumi.Input; /** * A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. */ @@ -482,6 +534,10 @@ export interface JobState { * Number of executions created for this job. */ executionCount?: pulumi.Input; + /** + * For a deleted resource, the time after which it will be permamently deleted. + */ + expireTime?: pulumi.Input; /** * A number that monotonically increases every time the user modifies the desired state. */ @@ -500,6 +556,10 @@ export interface JobState { * All system labels in v1 now have a corresponding field in v2 Job. */ labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Email address of the last authenticated modifier. + */ + lastModifier?: pulumi.Input; /** * Name of the last created execution. * Structure is documented below. @@ -550,6 +610,10 @@ export interface JobState { * Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. */ uid?: pulumi.Input; + /** + * The last-modified time. + */ + updateTime?: pulumi.Input; } /** diff --git a/sdk/nodejs/cloudrunv2/service.ts b/sdk/nodejs/cloudrunv2/service.ts index dc49e7e78f..cde9a3687d 100644 --- a/sdk/nodejs/cloudrunv2/service.ts +++ b/sdk/nodejs/cloudrunv2/service.ts @@ -340,12 +340,24 @@ export class Service extends pulumi.CustomResource { * Structure is documented below. */ public /*out*/ readonly conditions!: pulumi.Output; + /** + * The creation time. + */ + public /*out*/ readonly createTime!: pulumi.Output; + /** + * Email address of the authenticated creator. + */ + public /*out*/ readonly creator!: pulumi.Output; /** * One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a * string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see * https://cloud.google.com/run/docs/configuring/custom-audiences. */ public readonly customAudiences!: pulumi.Output; + /** + * The deletion time. + */ + public /*out*/ readonly deleteTime!: pulumi.Output; /** * User-provided description of the Service. This field currently has a 512-character limit. */ @@ -354,6 +366,10 @@ export class Service extends pulumi.CustomResource { * A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. */ public /*out*/ readonly etag!: pulumi.Output; + /** + * For a deleted resource, the time after which it will be permamently deleted. + */ + public /*out*/ readonly expireTime!: pulumi.Output; /** * A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. */ @@ -376,6 +392,10 @@ export class Service extends pulumi.CustomResource { * All system labels in v1 now have a corresponding field in v2 Service. */ public readonly labels!: pulumi.Output<{[key: string]: string} | undefined>; + /** + * Email address of the last authenticated modifier. + */ + public /*out*/ readonly lastModifier!: pulumi.Output; /** * Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. */ @@ -439,6 +459,10 @@ export class Service extends pulumi.CustomResource { * Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. */ public /*out*/ readonly uid!: pulumi.Output; + /** + * The last-modified time. + */ + public /*out*/ readonly updateTime!: pulumi.Output; /** * (Output) * Displays the target URI. @@ -463,12 +487,17 @@ export class Service extends pulumi.CustomResource { resourceInputs["client"] = state ? state.client : undefined; resourceInputs["clientVersion"] = state ? state.clientVersion : undefined; resourceInputs["conditions"] = state ? state.conditions : undefined; + resourceInputs["createTime"] = state ? state.createTime : undefined; + resourceInputs["creator"] = state ? state.creator : undefined; resourceInputs["customAudiences"] = state ? state.customAudiences : undefined; + resourceInputs["deleteTime"] = state ? state.deleteTime : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["etag"] = state ? state.etag : undefined; + resourceInputs["expireTime"] = state ? state.expireTime : undefined; resourceInputs["generation"] = state ? state.generation : undefined; resourceInputs["ingress"] = state ? state.ingress : undefined; resourceInputs["labels"] = state ? state.labels : undefined; + resourceInputs["lastModifier"] = state ? state.lastModifier : undefined; resourceInputs["latestCreatedRevision"] = state ? state.latestCreatedRevision : undefined; resourceInputs["latestReadyRevision"] = state ? state.latestReadyRevision : undefined; resourceInputs["launchStage"] = state ? state.launchStage : undefined; @@ -482,6 +511,7 @@ export class Service extends pulumi.CustomResource { resourceInputs["trafficStatuses"] = state ? state.trafficStatuses : undefined; resourceInputs["traffics"] = state ? state.traffics : undefined; resourceInputs["uid"] = state ? state.uid : undefined; + resourceInputs["updateTime"] = state ? state.updateTime : undefined; resourceInputs["uri"] = state ? state.uri : undefined; } else { const args = argsOrState as ServiceArgs | undefined; @@ -503,8 +533,13 @@ export class Service extends pulumi.CustomResource { resourceInputs["template"] = args ? args.template : undefined; resourceInputs["traffics"] = args ? args.traffics : undefined; resourceInputs["conditions"] = undefined /*out*/; + resourceInputs["createTime"] = undefined /*out*/; + resourceInputs["creator"] = undefined /*out*/; + resourceInputs["deleteTime"] = undefined /*out*/; resourceInputs["etag"] = undefined /*out*/; + resourceInputs["expireTime"] = undefined /*out*/; resourceInputs["generation"] = undefined /*out*/; + resourceInputs["lastModifier"] = undefined /*out*/; resourceInputs["latestCreatedRevision"] = undefined /*out*/; resourceInputs["latestReadyRevision"] = undefined /*out*/; resourceInputs["observedGeneration"] = undefined /*out*/; @@ -512,6 +547,7 @@ export class Service extends pulumi.CustomResource { resourceInputs["terminalConditions"] = undefined /*out*/; resourceInputs["trafficStatuses"] = undefined /*out*/; resourceInputs["uid"] = undefined /*out*/; + resourceInputs["updateTime"] = undefined /*out*/; resourceInputs["uri"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); @@ -554,12 +590,24 @@ export interface ServiceState { * Structure is documented below. */ conditions?: pulumi.Input[]>; + /** + * The creation time. + */ + createTime?: pulumi.Input; + /** + * Email address of the authenticated creator. + */ + creator?: pulumi.Input; /** * One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a * string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see * https://cloud.google.com/run/docs/configuring/custom-audiences. */ customAudiences?: pulumi.Input[]>; + /** + * The deletion time. + */ + deleteTime?: pulumi.Input; /** * User-provided description of the Service. This field currently has a 512-character limit. */ @@ -568,6 +616,10 @@ export interface ServiceState { * A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. */ etag?: pulumi.Input; + /** + * For a deleted resource, the time after which it will be permamently deleted. + */ + expireTime?: pulumi.Input; /** * A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. */ @@ -590,6 +642,10 @@ export interface ServiceState { * All system labels in v1 now have a corresponding field in v2 Service. */ labels?: pulumi.Input<{[key: string]: pulumi.Input}>; + /** + * Email address of the last authenticated modifier. + */ + lastModifier?: pulumi.Input; /** * Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. */ @@ -653,6 +709,10 @@ export interface ServiceState { * Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. */ uid?: pulumi.Input; + /** + * The last-modified time. + */ + updateTime?: pulumi.Input; /** * (Output) * Displays the target URI. diff --git a/sdk/nodejs/compute/index.ts b/sdk/nodejs/compute/index.ts index 4c2dbd02b9..2770de65b3 100644 --- a/sdk/nodejs/compute/index.ts +++ b/sdk/nodejs/compute/index.ts @@ -734,6 +734,11 @@ export type RegionSecurityPolicy = import("./regionSecurityPolicy").RegionSecuri export const RegionSecurityPolicy: typeof import("./regionSecurityPolicy").RegionSecurityPolicy = null as any; utilities.lazyLoad(exports, ["RegionSecurityPolicy"], () => require("./regionSecurityPolicy")); +export { RegionSecurityPolicyRuleArgs, RegionSecurityPolicyRuleState } from "./regionSecurityPolicyRule"; +export type RegionSecurityPolicyRule = import("./regionSecurityPolicyRule").RegionSecurityPolicyRule; +export const RegionSecurityPolicyRule: typeof import("./regionSecurityPolicyRule").RegionSecurityPolicyRule = null as any; +utilities.lazyLoad(exports, ["RegionSecurityPolicyRule"], () => require("./regionSecurityPolicyRule")); + export { RegionSslCertificateArgs, RegionSslCertificateState } from "./regionSslCertificate"; export type RegionSslCertificate = import("./regionSslCertificate").RegionSslCertificate; export const RegionSslCertificate: typeof import("./regionSslCertificate").RegionSslCertificate = null as any; @@ -1130,6 +1135,8 @@ const _module = { return new RegionPerInstanceConfig(name, undefined, { urn }) case "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": return new RegionSecurityPolicy(name, undefined, { urn }) + case "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": + return new RegionSecurityPolicyRule(name, undefined, { urn }) case "gcp:compute/regionSslCertificate:RegionSslCertificate": return new RegionSslCertificate(name, undefined, { urn }) case "gcp:compute/regionSslPolicy:RegionSslPolicy": @@ -1309,6 +1316,7 @@ pulumi.runtime.registerResourceModule("gcp", "compute/regionNetworkFirewallPolic pulumi.runtime.registerResourceModule("gcp", "compute/regionNetworkFirewallPolicyRule", _module) pulumi.runtime.registerResourceModule("gcp", "compute/regionPerInstanceConfig", _module) pulumi.runtime.registerResourceModule("gcp", "compute/regionSecurityPolicy", _module) +pulumi.runtime.registerResourceModule("gcp", "compute/regionSecurityPolicyRule", _module) pulumi.runtime.registerResourceModule("gcp", "compute/regionSslCertificate", _module) pulumi.runtime.registerResourceModule("gcp", "compute/regionSslPolicy", _module) pulumi.runtime.registerResourceModule("gcp", "compute/regionTargetHttpProxy", _module) diff --git a/sdk/nodejs/compute/networkEdgeSecurityService.ts b/sdk/nodejs/compute/networkEdgeSecurityService.ts index b54e9fa833..7cd9a04312 100644 --- a/sdk/nodejs/compute/networkEdgeSecurityService.ts +++ b/sdk/nodejs/compute/networkEdgeSecurityService.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * const _default = new gcp.compute.NetworkEdgeSecurityService("default", { - * region: "asia-southeast1", + * region: "us-east1", * description: "My basic resource", * }, { * provider: google_beta, diff --git a/sdk/nodejs/compute/regionNetworkEndpointGroup.ts b/sdk/nodejs/compute/regionNetworkEndpointGroup.ts index 0c3fad4f3e..127dc1f830 100644 --- a/sdk/nodejs/compute/regionNetworkEndpointGroup.ts +++ b/sdk/nodejs/compute/regionNetworkEndpointGroup.ts @@ -84,7 +84,7 @@ import * as utilities from "../utilities"; * const appengineNegBucket = new gcp.storage.Bucket("appengineNegBucket", {location: "US"}); * const appengineNegBucketObject = new gcp.storage.BucketObject("appengineNegBucketObject", { * bucket: appengineNegBucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion("appengineNegFlexibleAppVersion", { * versionId: "v1", diff --git a/sdk/nodejs/compute/regionSecurityPolicy.ts b/sdk/nodejs/compute/regionSecurityPolicy.ts index 134d3e783b..da6b661cdd 100644 --- a/sdk/nodejs/compute/regionSecurityPolicy.ts +++ b/sdk/nodejs/compute/regionSecurityPolicy.ts @@ -37,6 +37,35 @@ import * as utilities from "../utilities"; * provider: google_beta, * }); * ``` + * ### Region Security Policy With User Defined Fields + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const region_sec_policy_user_defined_fields = new gcp.compute.RegionSecurityPolicy("region-sec-policy-user-defined-fields", { + * description: "with user defined fields", + * type: "CLOUD_ARMOR_NETWORK", + * userDefinedFields: [ + * { + * name: "SIG1_AT_0", + * base: "UDP", + * offset: 8, + * size: 2, + * mask: "0x8F00", + * }, + * { + * name: "SIG2_AT_8", + * base: "UDP", + * offset: 16, + * size: 4, + * mask: "0xFFFFFFFF", + * }, + * ], + * }, { + * provider: google_beta, + * }); + * ``` * * ## Import * @@ -139,6 +168,13 @@ export class RegionSecurityPolicy extends pulumi.CustomResource { * Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. */ public readonly type!: pulumi.Output; + /** + * Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + */ + public readonly userDefinedFields!: pulumi.Output; /** * Create a RegionSecurityPolicy resource with the given unique name, arguments, and options. @@ -163,6 +199,7 @@ export class RegionSecurityPolicy extends pulumi.CustomResource { resourceInputs["selfLink"] = state ? state.selfLink : undefined; resourceInputs["selfLinkWithPolicyId"] = state ? state.selfLinkWithPolicyId : undefined; resourceInputs["type"] = state ? state.type : undefined; + resourceInputs["userDefinedFields"] = state ? state.userDefinedFields : undefined; } else { const args = argsOrState as RegionSecurityPolicyArgs | undefined; resourceInputs["ddosProtectionConfig"] = args ? args.ddosProtectionConfig : undefined; @@ -171,6 +208,7 @@ export class RegionSecurityPolicy extends pulumi.CustomResource { resourceInputs["project"] = args ? args.project : undefined; resourceInputs["region"] = args ? args.region : undefined; resourceInputs["type"] = args ? args.type : undefined; + resourceInputs["userDefinedFields"] = args ? args.userDefinedFields : undefined; resourceInputs["fingerprint"] = undefined /*out*/; resourceInputs["policyId"] = undefined /*out*/; resourceInputs["selfLink"] = undefined /*out*/; @@ -238,6 +276,13 @@ export interface RegionSecurityPolicyState { * Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. */ type?: pulumi.Input; + /** + * Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + */ + userDefinedFields?: pulumi.Input[]>; } /** @@ -280,4 +325,11 @@ export interface RegionSecurityPolicyArgs { * Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. */ type?: pulumi.Input; + /** + * Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + * A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + * Rules may then specify matching values for these fields. + * Structure is documented below. + */ + userDefinedFields?: pulumi.Input[]>; } diff --git a/sdk/nodejs/compute/regionSecurityPolicyRule.ts b/sdk/nodejs/compute/regionSecurityPolicyRule.ts new file mode 100644 index 0000000000..c630be6d7b --- /dev/null +++ b/sdk/nodejs/compute/regionSecurityPolicyRule.ts @@ -0,0 +1,430 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as inputs from "../types/input"; +import * as outputs from "../types/output"; +import * as utilities from "../utilities"; + +/** + * ## Example Usage + * ### Region Security Policy Rule Basic + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const _default = new gcp.compute.RegionSecurityPolicy("default", { + * region: "us-west2", + * description: "basic region security policy", + * type: "CLOUD_ARMOR", + * }, { + * provider: google_beta, + * }); + * const policyRule = new gcp.compute.RegionSecurityPolicyRule("policyRule", { + * region: "us-west2", + * securityPolicy: _default.name, + * description: "new rule", + * priority: 100, + * match: { + * versionedExpr: "SRC_IPS_V1", + * config: { + * srcIpRanges: ["10.10.0.0/16"], + * }, + * }, + * action: "allow", + * preview: true, + * }, { + * provider: google_beta, + * }); + * ``` + * ### Region Security Policy Rule Multiple Rules + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const _default = new gcp.compute.RegionSecurityPolicy("default", { + * region: "us-west2", + * description: "basic region security policy", + * type: "CLOUD_ARMOR", + * }, { + * provider: google_beta, + * }); + * const policyRuleOne = new gcp.compute.RegionSecurityPolicyRule("policyRuleOne", { + * region: "us-west2", + * securityPolicy: _default.name, + * description: "new rule one", + * priority: 100, + * match: { + * versionedExpr: "SRC_IPS_V1", + * config: { + * srcIpRanges: ["10.10.0.0/16"], + * }, + * }, + * action: "allow", + * preview: true, + * }, { + * provider: google_beta, + * }); + * const policyRuleTwo = new gcp.compute.RegionSecurityPolicyRule("policyRuleTwo", { + * region: "us-west2", + * securityPolicy: _default.name, + * description: "new rule two", + * priority: 101, + * match: { + * versionedExpr: "SRC_IPS_V1", + * config: { + * srcIpRanges: [ + * "192.168.0.0/16", + * "10.0.0.0/8", + * ], + * }, + * }, + * action: "allow", + * preview: true, + * }, { + * provider: google_beta, + * }); + * ``` + * ### Region Security Policy Rule With Network Match + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * // First activate advanced network DDoS protection for the desired region + * const policyddosprotection = new gcp.compute.RegionSecurityPolicy("policyddosprotection", { + * region: "us-west2", + * description: "policy for activating network DDoS protection for the desired region", + * type: "CLOUD_ARMOR_NETWORK", + * ddosProtectionConfig: { + * ddosProtection: "ADVANCED_PREVIEW", + * }, + * }, { + * provider: google_beta, + * }); + * const edgeSecService = new gcp.compute.NetworkEdgeSecurityService("edgeSecService", { + * region: "us-west2", + * description: "linking policy to edge security service", + * securityPolicy: policyddosprotection.selfLink, + * }, { + * provider: google_beta, + * }); + * // Add the desired policy and custom rule. + * const policynetworkmatch = new gcp.compute.RegionSecurityPolicy("policynetworkmatch", { + * region: "us-west2", + * description: "region security policy for network match", + * type: "CLOUD_ARMOR_NETWORK", + * userDefinedFields: [{ + * name: "SIG1_AT_0", + * base: "TCP", + * offset: 8, + * size: 2, + * mask: "0x8F00", + * }], + * }, { + * provider: google_beta, + * dependsOn: [edgeSecService], + * }); + * const policyRuleNetworkMatch = new gcp.compute.RegionSecurityPolicyRule("policyRuleNetworkMatch", { + * region: "us-west2", + * securityPolicy: policynetworkmatch.name, + * description: "custom rule for network match", + * priority: 100, + * networkMatch: { + * srcIpRanges: ["10.10.0.0/16"], + * userDefinedFields: [{ + * name: "SIG1_AT_0", + * values: ["0x8F00"], + * }], + * }, + * action: "allow", + * preview: true, + * }, { + * provider: google_beta, + * }); + * ``` + * + * ## Import + * + * RegionSecurityPolicyRule can be imported using any of these accepted formats + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}} + * ``` + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}} + * ``` + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}} + * ``` + * + * ```sh + * $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}} + * ``` + */ +export class RegionSecurityPolicyRule extends pulumi.CustomResource { + /** + * Get an existing RegionSecurityPolicyRule resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: RegionSecurityPolicyRuleState, opts?: pulumi.CustomResourceOptions): RegionSecurityPolicyRule { + return new RegionSecurityPolicyRule(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule'; + + /** + * Returns true if the given object is an instance of RegionSecurityPolicyRule. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is RegionSecurityPolicyRule { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === RegionSecurityPolicyRule.__pulumiType; + } + + /** + * The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + */ + public readonly action!: pulumi.Output; + /** + * An optional description of this resource. Provide this property when you create the resource. + */ + public readonly description!: pulumi.Output; + /** + * A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + */ + public readonly match!: pulumi.Output; + /** + * A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + */ + public readonly networkMatch!: pulumi.Output; + /** + * If set to true, the specified action is not enforced. + */ + public readonly preview!: pulumi.Output; + /** + * An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + */ + public readonly priority!: pulumi.Output; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + public readonly project!: pulumi.Output; + /** + * The Region in which the created Region Security Policy rule should reside. + */ + public readonly region!: pulumi.Output; + /** + * The name of the security policy this rule belongs to. + * + * + * - - - + */ + public readonly securityPolicy!: pulumi.Output; + + /** + * Create a RegionSecurityPolicyRule resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: RegionSecurityPolicyRuleArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: RegionSecurityPolicyRuleArgs | RegionSecurityPolicyRuleState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as RegionSecurityPolicyRuleState | undefined; + resourceInputs["action"] = state ? state.action : undefined; + resourceInputs["description"] = state ? state.description : undefined; + resourceInputs["match"] = state ? state.match : undefined; + resourceInputs["networkMatch"] = state ? state.networkMatch : undefined; + resourceInputs["preview"] = state ? state.preview : undefined; + resourceInputs["priority"] = state ? state.priority : undefined; + resourceInputs["project"] = state ? state.project : undefined; + resourceInputs["region"] = state ? state.region : undefined; + resourceInputs["securityPolicy"] = state ? state.securityPolicy : undefined; + } else { + const args = argsOrState as RegionSecurityPolicyRuleArgs | undefined; + if ((!args || args.action === undefined) && !opts.urn) { + throw new Error("Missing required property 'action'"); + } + if ((!args || args.priority === undefined) && !opts.urn) { + throw new Error("Missing required property 'priority'"); + } + if ((!args || args.region === undefined) && !opts.urn) { + throw new Error("Missing required property 'region'"); + } + if ((!args || args.securityPolicy === undefined) && !opts.urn) { + throw new Error("Missing required property 'securityPolicy'"); + } + resourceInputs["action"] = args ? args.action : undefined; + resourceInputs["description"] = args ? args.description : undefined; + resourceInputs["match"] = args ? args.match : undefined; + resourceInputs["networkMatch"] = args ? args.networkMatch : undefined; + resourceInputs["preview"] = args ? args.preview : undefined; + resourceInputs["priority"] = args ? args.priority : undefined; + resourceInputs["project"] = args ? args.project : undefined; + resourceInputs["region"] = args ? args.region : undefined; + resourceInputs["securityPolicy"] = args ? args.securityPolicy : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(RegionSecurityPolicyRule.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering RegionSecurityPolicyRule resources. + */ +export interface RegionSecurityPolicyRuleState { + /** + * The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + */ + action?: pulumi.Input; + /** + * An optional description of this resource. Provide this property when you create the resource. + */ + description?: pulumi.Input; + /** + * A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + */ + match?: pulumi.Input; + /** + * A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + */ + networkMatch?: pulumi.Input; + /** + * If set to true, the specified action is not enforced. + */ + preview?: pulumi.Input; + /** + * An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + */ + priority?: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * The Region in which the created Region Security Policy rule should reside. + */ + region?: pulumi.Input; + /** + * The name of the security policy this rule belongs to. + * + * + * - - - + */ + securityPolicy?: pulumi.Input; +} + +/** + * The set of arguments for constructing a RegionSecurityPolicyRule resource. + */ +export interface RegionSecurityPolicyRuleArgs { + /** + * The Action to perform when the rule is matched. The following are the valid actions: + * * allow: allow access to target. + * * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + */ + action: pulumi.Input; + /** + * An optional description of this resource. Provide this property when you create the resource. + */ + description?: pulumi.Input; + /** + * A match condition that incoming traffic is evaluated against. + * If it evaluates to true, the corresponding 'action' is enforced. + * Structure is documented below. + */ + match?: pulumi.Input; + /** + * A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + * The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + * Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + * Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + * For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + * Example: + * networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4FragmentOffset" values: - "1-0x1fff" + * The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4FragmentOffset" with a value between 1 and 0x1fff inclusive + * Structure is documented below. + */ + networkMatch?: pulumi.Input; + /** + * If set to true, the specified action is not enforced. + */ + preview?: pulumi.Input; + /** + * An integer indicating the priority of a rule in the list. + * The priority must be a positive value between 0 and 2147483647. + * Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + */ + priority: pulumi.Input; + /** + * The ID of the project in which the resource belongs. + * If it is not provided, the provider project is used. + */ + project?: pulumi.Input; + /** + * The Region in which the created Region Security Policy rule should reside. + */ + region: pulumi.Input; + /** + * The name of the security policy this rule belongs to. + * + * + * - - - + */ + securityPolicy: pulumi.Input; +} diff --git a/sdk/nodejs/compute/subnetwork.ts b/sdk/nodejs/compute/subnetwork.ts index e2e9d9b1bd..529ffb99c6 100644 --- a/sdk/nodejs/compute/subnetwork.ts +++ b/sdk/nodejs/compute/subnetwork.ts @@ -85,7 +85,7 @@ import * as utilities from "../utilities"; * const network_for_l7lb = new gcp.compute.Subnetwork("network-for-l7lb", { * ipCidrRange: "10.0.0.0/22", * region: "us-central1", - * purpose: "INTERNAL_HTTPS_LOAD_BALANCER", + * purpose: "REGIONAL_MANAGED_PROXY", * role: "ACTIVE", * network: custom_test.id, * }, { @@ -218,9 +218,10 @@ export class Subnetwork extends pulumi.CustomResource { */ public /*out*/ readonly ipv6CidrRange!: pulumi.Output; /** - * Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. */ public readonly logConfig!: pulumi.Output; @@ -257,13 +258,12 @@ export class Subnetwork extends pulumi.CustomResource { */ public readonly project!: pulumi.Output; /** - * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. */ public readonly purpose!: pulumi.Output; /** @@ -272,10 +272,10 @@ export class Subnetwork extends pulumi.CustomResource { public readonly region!: pulumi.Output; /** * The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. */ public readonly role!: pulumi.Output; @@ -413,9 +413,10 @@ export interface SubnetworkState { */ ipv6CidrRange?: pulumi.Input; /** - * Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. */ logConfig?: pulumi.Input; @@ -452,13 +453,12 @@ export interface SubnetworkState { */ project?: pulumi.Input; /** - * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. */ purpose?: pulumi.Input; /** @@ -467,10 +467,10 @@ export interface SubnetworkState { region?: pulumi.Input; /** * The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. */ role?: pulumi.Input; @@ -519,9 +519,10 @@ export interface SubnetworkArgs { */ ipv6AccessType?: pulumi.Input; /** - * Denotes the logging options for the subnetwork flow logs. If logging is enabled - * logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - * subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + * This field denotes the VPC flow logging options for this subnetwork. If + * logging is enabled, logs are exported to Cloud Logging. Flow logging + * isn't supported if the subnet `purpose` field is set to subnetwork is + * `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. * Structure is documented below. */ logConfig?: pulumi.Input; @@ -558,13 +559,12 @@ export interface SubnetworkArgs { */ project?: pulumi.Input; /** - * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - * A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - * A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + * The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + * A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. * A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. * A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + * Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. * If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - * The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. */ purpose?: pulumi.Input; /** @@ -573,10 +573,10 @@ export interface SubnetworkArgs { region?: pulumi.Input; /** * The role of subnetwork. + * Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. * The value can be set to `ACTIVE` or `BACKUP`. - * An `ACTIVE` subnetwork is one that is currently being used. + * An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. * A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - * Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. * Possible values are: `ACTIVE`, `BACKUP`. */ role?: pulumi.Input; diff --git a/sdk/nodejs/config/vars.ts b/sdk/nodejs/config/vars.ts index 43629d1f2f..502e5b34a1 100644 --- a/sdk/nodejs/config/vars.ts +++ b/sdk/nodejs/config/vars.ts @@ -97,6 +97,14 @@ Object.defineProperty(exports, "assuredWorkloadsCustomEndpoint", { enumerable: true, }); +export declare const backupDrCustomEndpoint: string | undefined; +Object.defineProperty(exports, "backupDrCustomEndpoint", { + get() { + return __config.get("backupDrCustomEndpoint"); + }, + enumerable: true, +}); + export declare const batching: outputs.config.Batching | undefined; Object.defineProperty(exports, "batching", { get() { diff --git a/sdk/nodejs/container/awsCluster.ts b/sdk/nodejs/container/awsCluster.ts index 6fa99c1c02..7fd48da05d 100644 --- a/sdk/nodejs/container/awsCluster.ts +++ b/sdk/nodejs/container/awsCluster.ts @@ -84,6 +84,163 @@ import * as utilities from "../utilities"; * project: "my-project-name", * }); * ``` + * ### Basic_enum_aws_cluster + * A basic example of a containeraws cluster with lowercase enums + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const versions = gcp.container.getAwsVersions({ + * location: "us-west1", + * project: "my-project-name", + * }); + * const primary = new gcp.container.AwsCluster("primary", { + * annotations: { + * "label-one": "value-one", + * }, + * authorization: { + * adminUsers: [{ + * username: "my@service-account.com", + * }], + * }, + * awsRegion: "my-aws-region", + * controlPlane: { + * awsServicesAuthentication: { + * roleArn: "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + * roleSessionName: "my--1p-dev-session", + * }, + * configEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * databaseEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * iamInstanceProfile: "my--1p-dev-controlplane", + * instanceType: "t3.medium", + * mainVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "gp3", + * }, + * proxyConfig: { + * secretArn: "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + * secretVersion: "12345678-ABCD-EFGH-IJKL-987654321098", + * }, + * rootVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "gp3", + * }, + * securityGroupIds: ["sg-00000000000000000"], + * sshConfig: { + * ec2KeyPair: "my--1p-dev-ssh", + * }, + * subnetIds: ["subnet-00000000000000000"], + * tags: { + * owner: "my@service-account.com", + * }, + * version: versions.then(versions => versions.validVersions?.[0]), + * }, + * description: "A sample aws cluster", + * fleet: { + * project: "my-project-number", + * }, + * location: "us-west1", + * networking: { + * podAddressCidrBlocks: ["10.2.0.0/16"], + * serviceAddressCidrBlocks: ["10.1.0.0/16"], + * vpcId: "vpc-00000000000000000", + * }, + * project: "my-project-name", + * }); + * ``` + * ### Beta_basic_enum_aws_cluster + * A basic example of a containeraws cluster with lowercase enums (beta) + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const versions = gcp.container.getAwsVersions({ + * project: "my-project-name", + * location: "us-west1", + * }); + * const primary = new gcp.container.AwsCluster("primary", { + * authorization: { + * adminUsers: [{ + * username: "my@service-account.com", + * }], + * }, + * awsRegion: "my-aws-region", + * controlPlane: { + * awsServicesAuthentication: { + * roleArn: "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + * roleSessionName: "my--1p-dev-session", + * }, + * configEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * databaseEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * iamInstanceProfile: "my--1p-dev-controlplane", + * subnetIds: ["subnet-00000000000000000"], + * version: versions.then(versions => versions.validVersions?.[0]), + * instanceType: "t3.medium", + * mainVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "gp3", + * }, + * proxyConfig: { + * secretArn: "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + * secretVersion: "12345678-ABCD-EFGH-IJKL-987654321098", + * }, + * rootVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "gp3", + * }, + * securityGroupIds: ["sg-00000000000000000"], + * sshConfig: { + * ec2KeyPair: "my--1p-dev-ssh", + * }, + * tags: { + * owner: "my@service-account.com", + * }, + * instancePlacement: { + * tenancy: "dedicated", + * }, + * }, + * fleet: { + * project: "my-project-number", + * }, + * location: "us-west1", + * networking: { + * podAddressCidrBlocks: ["10.2.0.0/16"], + * serviceAddressCidrBlocks: ["10.1.0.0/16"], + * vpcId: "vpc-00000000000000000", + * }, + * annotations: { + * "label-one": "value-one", + * }, + * description: "A sample aws cluster", + * project: "my-project-name", + * loggingConfig: { + * componentConfig: { + * enableComponents: [ + * "system_components", + * "workloads", + * ], + * }, + * }, + * }, { + * provider: google_beta, + * }); + * ``` * * ## Import * diff --git a/sdk/nodejs/container/awsNodePool.ts b/sdk/nodejs/container/awsNodePool.ts index 240e47ce5e..70168f57ab 100644 --- a/sdk/nodejs/container/awsNodePool.ts +++ b/sdk/nodejs/container/awsNodePool.ts @@ -133,6 +133,256 @@ import * as utilities from "../utilities"; * project: "my-project-name", * }); * ``` + * ### Basic_enum_aws_cluster + * A basic example of a containeraws node pool with lowercase enums + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const versions = gcp.container.getAwsVersions({ + * project: "my-project-name", + * location: "us-west1", + * }); + * const primaryAwsCluster = new gcp.container.AwsCluster("primaryAwsCluster", { + * authorization: { + * adminUsers: [{ + * username: "my@service-account.com", + * }], + * }, + * awsRegion: "my-aws-region", + * controlPlane: { + * awsServicesAuthentication: { + * roleArn: "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + * roleSessionName: "my--1p-dev-session", + * }, + * configEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * databaseEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * iamInstanceProfile: "my--1p-dev-controlplane", + * subnetIds: ["subnet-00000000000000000"], + * version: versions.then(versions => versions.validVersions?.[0]), + * instanceType: "t3.medium", + * mainVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "GP3", + * }, + * proxyConfig: { + * secretArn: "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + * secretVersion: "12345678-ABCD-EFGH-IJKL-987654321098", + * }, + * rootVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "GP3", + * }, + * securityGroupIds: ["sg-00000000000000000"], + * sshConfig: { + * ec2KeyPair: "my--1p-dev-ssh", + * }, + * tags: { + * owner: "my@service-account.com", + * }, + * }, + * fleet: { + * project: "my-project-number", + * }, + * location: "us-west1", + * networking: { + * podAddressCidrBlocks: ["10.2.0.0/16"], + * serviceAddressCidrBlocks: ["10.1.0.0/16"], + * vpcId: "vpc-00000000000000000", + * }, + * annotations: { + * "label-one": "value-one", + * }, + * description: "A sample aws cluster", + * project: "my-project-name", + * }); + * const primaryAwsNodePool = new gcp.container.AwsNodePool("primaryAwsNodePool", { + * autoscaling: { + * maxNodeCount: 5, + * minNodeCount: 1, + * }, + * cluster: primaryAwsCluster.name, + * config: { + * configEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * iamInstanceProfile: "my--1p-dev-nodepool", + * instanceType: "t3.medium", + * labels: { + * "label-one": "value-one", + * }, + * rootVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "gp3", + * }, + * securityGroupIds: ["sg-00000000000000000"], + * proxyConfig: { + * secretArn: "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + * secretVersion: "12345678-ABCD-EFGH-IJKL-987654321098", + * }, + * sshConfig: { + * ec2KeyPair: "my--1p-dev-ssh", + * }, + * tags: { + * "tag-one": "value-one", + * }, + * taints: [{ + * effect: "prefer_no_schedule", + * key: "taint-key", + * value: "taint-value", + * }], + * }, + * location: "us-west1", + * maxPodsConstraint: { + * maxPodsPerNode: 110, + * }, + * subnetId: "subnet-00000000000000000", + * version: versions.then(versions => versions.validVersions?.[0]), + * annotations: { + * "label-one": "value-one", + * }, + * project: "my-project-name", + * }); + * ``` + * ### Beta_basic_enum_aws_cluster + * A basic example of a containeraws node pool with lowercase enums (beta) + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const versions = gcp.container.getAwsVersions({ + * project: "my-project-name", + * location: "us-west1", + * }); + * const primaryAwsCluster = new gcp.container.AwsCluster("primaryAwsCluster", { + * authorization: { + * adminUsers: [{ + * username: "my@service-account.com", + * }], + * }, + * awsRegion: "my-aws-region", + * controlPlane: { + * awsServicesAuthentication: { + * roleArn: "arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + * roleSessionName: "my--1p-dev-session", + * }, + * configEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * databaseEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * iamInstanceProfile: "my--1p-dev-controlplane", + * subnetIds: ["subnet-00000000000000000"], + * version: versions.then(versions => versions.validVersions?.[0]), + * instanceType: "t3.medium", + * mainVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "GP3", + * }, + * proxyConfig: { + * secretArn: "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + * secretVersion: "12345678-ABCD-EFGH-IJKL-987654321098", + * }, + * rootVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "GP3", + * }, + * securityGroupIds: ["sg-00000000000000000"], + * sshConfig: { + * ec2KeyPair: "my--1p-dev-ssh", + * }, + * tags: { + * owner: "my@service-account.com", + * }, + * }, + * fleet: { + * project: "my-project-number", + * }, + * location: "us-west1", + * networking: { + * podAddressCidrBlocks: ["10.2.0.0/16"], + * serviceAddressCidrBlocks: ["10.1.0.0/16"], + * vpcId: "vpc-00000000000000000", + * }, + * annotations: { + * "label-one": "value-one", + * }, + * description: "A sample aws cluster", + * project: "my-project-name", + * }, { + * provider: google_beta, + * }); + * const primaryAwsNodePool = new gcp.container.AwsNodePool("primaryAwsNodePool", { + * autoscaling: { + * maxNodeCount: 5, + * minNodeCount: 1, + * }, + * cluster: primaryAwsCluster.name, + * config: { + * configEncryption: { + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * }, + * iamInstanceProfile: "my--1p-dev-nodepool", + * instanceType: "t3.medium", + * labels: { + * "label-one": "value-one", + * }, + * rootVolume: { + * iops: 3000, + * kmsKeyArn: "arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + * sizeGib: 10, + * volumeType: "gp3", + * }, + * securityGroupIds: ["sg-00000000000000000"], + * proxyConfig: { + * secretArn: "arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + * secretVersion: "12345678-ABCD-EFGH-IJKL-987654321098", + * }, + * sshConfig: { + * ec2KeyPair: "my--1p-dev-ssh", + * }, + * tags: { + * "tag-one": "value-one", + * }, + * taints: [{ + * effect: "prefer_no_schedule", + * key: "taint-key", + * value: "taint-value", + * }], + * instancePlacement: { + * tenancy: "dedicated", + * }, + * imageType: "ubuntu", + * }, + * location: "us-west1", + * maxPodsConstraint: { + * maxPodsPerNode: 110, + * }, + * subnetId: "subnet-00000000000000000", + * version: versions.then(versions => versions.validVersions?.[0]), + * annotations: { + * "label-one": "value-one", + * }, + * project: "my-project-name", + * }, { + * provider: google_beta, + * }); + * ``` * * ## Import * diff --git a/sdk/nodejs/databasemigrationservice/connectionProfile.ts b/sdk/nodejs/databasemigrationservice/connectionProfile.ts index ae4f16515b..569802b1a4 100644 --- a/sdk/nodejs/databasemigrationservice/connectionProfile.ts +++ b/sdk/nodejs/databasemigrationservice/connectionProfile.ts @@ -83,6 +83,7 @@ import * as utilities from "../utilities"; * cloudfoo: "cloudbar", * }, * tier: "db-n1-standard-1", + * edition: "ENTERPRISE", * storageAutoResizeLimit: "0", * activationPolicy: "ALWAYS", * ipConfig: { diff --git a/sdk/nodejs/dataloss/preventionStoredInfoType.ts b/sdk/nodejs/dataloss/preventionStoredInfoType.ts index 1b8a23fd8f..c12f1af311 100644 --- a/sdk/nodejs/dataloss/preventionStoredInfoType.ts +++ b/sdk/nodejs/dataloss/preventionStoredInfoType.ts @@ -64,7 +64,7 @@ import * as utilities from "../utilities"; * }); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/dlp/words.txt"), + * source: new pulumi.asset.FileAsset("./test-fixtures/words.txt"), * }); * const large = new gcp.dataloss.PreventionStoredInfoType("large", { * parent: "projects/my-project-name", diff --git a/sdk/nodejs/dataproc/metastoreService.ts b/sdk/nodejs/dataproc/metastoreService.ts index 9d1bb0c332..310c9b111d 100644 --- a/sdk/nodejs/dataproc/metastoreService.ts +++ b/sdk/nodejs/dataproc/metastoreService.ts @@ -88,6 +88,42 @@ import * as utilities from "../utilities"; * }, * }); * ``` + * ### Dataproc Metastore Service Dpms2 + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const dpms2 = new gcp.dataproc.MetastoreService("dpms2", { + * databaseType: "SPANNER", + * hiveMetastoreConfig: { + * version: "3.1.2", + * }, + * location: "us-central1", + * scalingConfig: { + * instanceSize: "EXTRA_SMALL", + * }, + * serviceId: "dpms2", + * }); + * ``` + * ### Dataproc Metastore Service Dpms2 Scaling Factor + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as gcp from "@pulumi/gcp"; + * + * const dpms2ScalingFactor = new gcp.dataproc.MetastoreService("dpms2ScalingFactor", { + * databaseType: "SPANNER", + * hiveMetastoreConfig: { + * version: "3.1.2", + * }, + * location: "us-central1", + * scalingConfig: { + * scalingFactor: 2, + * }, + * serviceId: "dpms2sf", + * }); + * ``` * * ## Import * @@ -208,6 +244,11 @@ export class MetastoreService extends pulumi.CustomResource { * Possible values are: `CANARY`, `STABLE`. */ public readonly releaseChannel!: pulumi.Output; + /** + * Represents the scaling configuration of a metastore service. + * Structure is documented below. + */ + public readonly scalingConfig!: pulumi.Output; /** * The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between @@ -268,6 +309,7 @@ export class MetastoreService extends pulumi.CustomResource { resourceInputs["port"] = state ? state.port : undefined; resourceInputs["project"] = state ? state.project : undefined; resourceInputs["releaseChannel"] = state ? state.releaseChannel : undefined; + resourceInputs["scalingConfig"] = state ? state.scalingConfig : undefined; resourceInputs["serviceId"] = state ? state.serviceId : undefined; resourceInputs["state"] = state ? state.state : undefined; resourceInputs["stateMessage"] = state ? state.stateMessage : undefined; @@ -291,6 +333,7 @@ export class MetastoreService extends pulumi.CustomResource { resourceInputs["port"] = args ? args.port : undefined; resourceInputs["project"] = args ? args.project : undefined; resourceInputs["releaseChannel"] = args ? args.releaseChannel : undefined; + resourceInputs["scalingConfig"] = args ? args.scalingConfig : undefined; resourceInputs["serviceId"] = args ? args.serviceId : undefined; resourceInputs["telemetryConfig"] = args ? args.telemetryConfig : undefined; resourceInputs["tier"] = args ? args.tier : undefined; @@ -385,6 +428,11 @@ export interface MetastoreServiceState { * Possible values are: `CANARY`, `STABLE`. */ releaseChannel?: pulumi.Input; + /** + * Represents the scaling configuration of a metastore service. + * Structure is documented below. + */ + scalingConfig?: pulumi.Input; /** * The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between @@ -484,6 +532,11 @@ export interface MetastoreServiceArgs { * Possible values are: `CANARY`, `STABLE`. */ releaseChannel?: pulumi.Input; + /** + * Represents the scaling configuration of a metastore service. + * Structure is documented below. + */ + scalingConfig?: pulumi.Input; /** * The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), * and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between diff --git a/sdk/nodejs/dns/managedZone.ts b/sdk/nodejs/dns/managedZone.ts index 48adadf93d..f521ecbc4e 100644 --- a/sdk/nodejs/dns/managedZone.ts +++ b/sdk/nodejs/dns/managedZone.ts @@ -150,9 +150,6 @@ import * as utilities from "../utilities"; * }, * visibility: "private", * privateVisibilityConfig: { - * networks: [{ - * networkUrl: network_1.id, - * }], * gkeClusters: [{ * gkeClusterName: cluster_1.id, * }], @@ -335,7 +332,7 @@ export class ManagedZone extends pulumi.CustomResource { public readonly peeringConfig!: pulumi.Output; /** * For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. * Structure is documented below. */ public readonly privateVisibilityConfig!: pulumi.Output; @@ -487,7 +484,7 @@ export interface ManagedZoneState { peeringConfig?: pulumi.Input; /** * For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. * Structure is documented below. */ privateVisibilityConfig?: pulumi.Input; @@ -568,7 +565,7 @@ export interface ManagedZoneArgs { peeringConfig?: pulumi.Input; /** * For privately visible zones, the set of Virtual Private Cloud - * resources that the zone is visible from. + * resources that the zone is visible from. At least one of `gkeClusters` or `networks` must be specified. * Structure is documented below. */ privateVisibilityConfig?: pulumi.Input; diff --git a/sdk/nodejs/healthcare/fhirStore.ts b/sdk/nodejs/healthcare/fhirStore.ts index 45c20e4bcd..a829e468ad 100644 --- a/sdk/nodejs/healthcare/fhirStore.ts +++ b/sdk/nodejs/healthcare/fhirStore.ts @@ -33,6 +33,7 @@ import * as utilities from "../utilities"; * disableReferentialIntegrity: false, * disableResourceVersioning: false, * enableHistoryImport: false, + * defaultSearchHandlingStrict: false, * notificationConfig: { * pubsubTopic: topic.id, * }, @@ -189,6 +190,12 @@ export class FhirStore extends pulumi.CustomResource { * - - - */ public readonly dataset!: pulumi.Output; + /** + * If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + */ + public readonly defaultSearchHandlingStrict!: pulumi.Output; /** * Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the @@ -286,6 +293,7 @@ export class FhirStore extends pulumi.CustomResource { const state = argsOrState as FhirStoreState | undefined; resourceInputs["complexDataTypeReferenceParsing"] = state ? state.complexDataTypeReferenceParsing : undefined; resourceInputs["dataset"] = state ? state.dataset : undefined; + resourceInputs["defaultSearchHandlingStrict"] = state ? state.defaultSearchHandlingStrict : undefined; resourceInputs["disableReferentialIntegrity"] = state ? state.disableReferentialIntegrity : undefined; resourceInputs["disableResourceVersioning"] = state ? state.disableResourceVersioning : undefined; resourceInputs["enableHistoryImport"] = state ? state.enableHistoryImport : undefined; @@ -304,6 +312,7 @@ export class FhirStore extends pulumi.CustomResource { } resourceInputs["complexDataTypeReferenceParsing"] = args ? args.complexDataTypeReferenceParsing : undefined; resourceInputs["dataset"] = args ? args.dataset : undefined; + resourceInputs["defaultSearchHandlingStrict"] = args ? args.defaultSearchHandlingStrict : undefined; resourceInputs["disableReferentialIntegrity"] = args ? args.disableReferentialIntegrity : undefined; resourceInputs["disableResourceVersioning"] = args ? args.disableResourceVersioning : undefined; resourceInputs["enableHistoryImport"] = args ? args.enableHistoryImport : undefined; @@ -338,6 +347,12 @@ export interface FhirStoreState { * - - - */ dataset?: pulumi.Input; + /** + * If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + */ + defaultSearchHandlingStrict?: pulumi.Input; /** * Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the @@ -438,6 +453,12 @@ export interface FhirStoreArgs { * - - - */ dataset: pulumi.Input; + /** + * If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + * If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + * The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + */ + defaultSearchHandlingStrict?: pulumi.Input; /** * Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store * creation. The default value is false, meaning that the API will enforce referential integrity and fail the diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index f341a580c2..19c94801fc 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -22,6 +22,7 @@ import * as apigee from "./apigee"; import * as appengine from "./appengine"; import * as artifactregistry from "./artifactregistry"; import * as assuredworkloads from "./assuredworkloads"; +import * as backupdisasterrecovery from "./backupdisasterrecovery"; import * as beyondcorp from "./beyondcorp"; import * as bigquery from "./bigquery"; import * as bigqueryanalyticshub from "./bigqueryanalyticshub"; @@ -128,6 +129,7 @@ export { appengine, artifactregistry, assuredworkloads, + backupdisasterrecovery, beyondcorp, bigquery, bigqueryanalyticshub, diff --git a/sdk/nodejs/monitoring/getAppEngineService.ts b/sdk/nodejs/monitoring/getAppEngineService.ts index b551a626ba..595c1d699e 100644 --- a/sdk/nodejs/monitoring/getAppEngineService.ts +++ b/sdk/nodejs/monitoring/getAppEngineService.ts @@ -31,7 +31,7 @@ import * as utilities from "../utilities"; * const bucket = new gcp.storage.Bucket("bucket", {location: "US"}); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const myapp = new gcp.appengine.StandardAppVersion("myapp", { * versionId: "v1", @@ -135,7 +135,7 @@ export interface GetAppEngineServiceResult { * const bucket = new gcp.storage.Bucket("bucket", {location: "US"}); * const object = new gcp.storage.BucketObject("object", { * bucket: bucket.name, - * source: new pulumi.asset.FileAsset("./test-fixtures/appengine/hello-world.zip"), + * source: new pulumi.asset.FileAsset("./test-fixtures/hello-world.zip"), * }); * const myapp = new gcp.appengine.StandardAppVersion("myapp", { * versionId: "v1", diff --git a/sdk/nodejs/networkservices/gateway.ts b/sdk/nodejs/networkservices/gateway.ts index dd981f411b..87ffa9ee42 100644 --- a/sdk/nodejs/networkservices/gateway.ts +++ b/sdk/nodejs/networkservices/gateway.ts @@ -53,8 +53,8 @@ import * as utilities from "../utilities"; * const defaultCertificate = new gcp.certificatemanager.Certificate("defaultCertificate", { * location: "us-central1", * selfManaged: { - * pemCertificate: fs.readFileSync("test-fixtures/certificatemanager/cert.pem"), - * pemPrivateKey: fs.readFileSync("test-fixtures/certificatemanager/private-key.pem"), + * pemCertificate: fs.readFileSync("test-fixtures/cert.pem"), + * pemPrivateKey: fs.readFileSync("test-fixtures/private-key.pem"), * }, * }); * const defaultNetwork = new gcp.compute.Network("defaultNetwork", { @@ -109,8 +109,8 @@ import * as utilities from "../utilities"; * const defaultCertificate = new gcp.certificatemanager.Certificate("defaultCertificate", { * location: "us-south1", * selfManaged: { - * pemCertificate: fs.readFileSync("test-fixtures/certificatemanager/cert.pem"), - * pemPrivateKey: fs.readFileSync("test-fixtures/certificatemanager/private-key.pem"), + * pemCertificate: fs.readFileSync("test-fixtures/cert.pem"), + * pemPrivateKey: fs.readFileSync("test-fixtures/private-key.pem"), * }, * }); * const defaultNetwork = new gcp.compute.Network("defaultNetwork", { diff --git a/sdk/nodejs/provider.ts b/sdk/nodejs/provider.ts index 5b9d6c7ab6..3a2e9ad360 100644 --- a/sdk/nodejs/provider.ts +++ b/sdk/nodejs/provider.ts @@ -38,6 +38,7 @@ export class Provider extends pulumi.ProviderResource { public readonly appEngineCustomEndpoint!: pulumi.Output; public readonly artifactRegistryCustomEndpoint!: pulumi.Output; public readonly assuredWorkloadsCustomEndpoint!: pulumi.Output; + public readonly backupDrCustomEndpoint!: pulumi.Output; public readonly beyondcorpCustomEndpoint!: pulumi.Output; public readonly bigQueryCustomEndpoint!: pulumi.Output; public readonly bigqueryAnalyticsHubCustomEndpoint!: pulumi.Output; @@ -190,6 +191,7 @@ export class Provider extends pulumi.ProviderResource { resourceInputs["appEngineCustomEndpoint"] = args ? args.appEngineCustomEndpoint : undefined; resourceInputs["artifactRegistryCustomEndpoint"] = args ? args.artifactRegistryCustomEndpoint : undefined; resourceInputs["assuredWorkloadsCustomEndpoint"] = args ? args.assuredWorkloadsCustomEndpoint : undefined; + resourceInputs["backupDrCustomEndpoint"] = args ? args.backupDrCustomEndpoint : undefined; resourceInputs["batching"] = pulumi.output(args ? args.batching : undefined).apply(JSON.stringify); resourceInputs["beyondcorpCustomEndpoint"] = args ? args.beyondcorpCustomEndpoint : undefined; resourceInputs["bigQueryCustomEndpoint"] = args ? args.bigQueryCustomEndpoint : undefined; @@ -345,6 +347,7 @@ export interface ProviderArgs { appEngineCustomEndpoint?: pulumi.Input; artifactRegistryCustomEndpoint?: pulumi.Input; assuredWorkloadsCustomEndpoint?: pulumi.Input; + backupDrCustomEndpoint?: pulumi.Input; batching?: pulumi.Input; beyondcorpCustomEndpoint?: pulumi.Input; bigQueryCustomEndpoint?: pulumi.Input; diff --git a/sdk/nodejs/secretmanager/getSecret.ts b/sdk/nodejs/secretmanager/getSecret.ts index 205f286cbb..a9062b08dc 100644 --- a/sdk/nodejs/secretmanager/getSecret.ts +++ b/sdk/nodejs/secretmanager/getSecret.ts @@ -62,6 +62,7 @@ export interface GetSecretResult { readonly secretId: string; readonly topics: outputs.secretmanager.GetSecretTopic[]; readonly ttl: string; + readonly versionAliases: {[key: string]: string}; } /** * Use this data source to get information about a Secret Manager Secret diff --git a/sdk/nodejs/secretmanager/secret.ts b/sdk/nodejs/secretmanager/secret.ts index 11a931f92f..0a806aaf5c 100644 --- a/sdk/nodejs/secretmanager/secret.ts +++ b/sdk/nodejs/secretmanager/secret.ts @@ -175,6 +175,16 @@ export class Secret extends pulumi.CustomResource { * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". */ public readonly ttl!: pulumi.Output; + /** + * Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + */ + public readonly versionAliases!: pulumi.Output<{[key: string]: string} | undefined>; /** * Create a Secret resource with the given unique name, arguments, and options. @@ -200,6 +210,7 @@ export class Secret extends pulumi.CustomResource { resourceInputs["secretId"] = state ? state.secretId : undefined; resourceInputs["topics"] = state ? state.topics : undefined; resourceInputs["ttl"] = state ? state.ttl : undefined; + resourceInputs["versionAliases"] = state ? state.versionAliases : undefined; } else { const args = argsOrState as SecretArgs | undefined; if ((!args || args.replication === undefined) && !opts.urn) { @@ -217,6 +228,7 @@ export class Secret extends pulumi.CustomResource { resourceInputs["secretId"] = args ? args.secretId : undefined; resourceInputs["topics"] = args ? args.topics : undefined; resourceInputs["ttl"] = args ? args.ttl : undefined; + resourceInputs["versionAliases"] = args ? args.versionAliases : undefined; resourceInputs["createTime"] = undefined /*out*/; resourceInputs["name"] = undefined /*out*/; } @@ -297,6 +309,16 @@ export interface SecretState { * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". */ ttl?: pulumi.Input; + /** + * Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + */ + versionAliases?: pulumi.Input<{[key: string]: pulumi.Input}>; } /** @@ -362,4 +384,14 @@ export interface SecretArgs { * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". */ ttl?: pulumi.Input; + /** + * Mapping from version alias to version name. + * A version alias is a string with a maximum length of 63 characters and can contain + * uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + * characters. An alias string must start with a letter and cannot be the string + * 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + * An object containing a list of "key": value pairs. Example: + * { "name": "wrench", "mass": "1.3kg", "count": "3" }. + */ + versionAliases?: pulumi.Input<{[key: string]: pulumi.Input}>; } diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index b2921eab76..26dabfde5c 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -103,6 +103,8 @@ "artifactregistry/repositoryIamPolicy.ts", "assuredworkloads/index.ts", "assuredworkloads/workload.ts", + "backupdisasterrecovery/index.ts", + "backupdisasterrecovery/managementServer.ts", "beyondcorp/appConnection.ts", "beyondcorp/appConnector.ts", "beyondcorp/appGateway.ts", @@ -420,6 +422,7 @@ "compute/regionNetworkFirewallPolicyRule.ts", "compute/regionPerInstanceConfig.ts", "compute/regionSecurityPolicy.ts", + "compute/regionSecurityPolicyRule.ts", "compute/regionSslCertificate.ts", "compute/regionSslPolicy.ts", "compute/regionTargetHttpProxy.ts", diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index c204e1e6c0..e473d44a7c 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -3408,6 +3408,36 @@ export namespace assuredworkloads { } } +export namespace backupdisasterrecovery { + export interface ManagementServerManagementUri { + /** + * (Output) + * The management console api endpoint. + */ + api?: pulumi.Input; + /** + * (Output) + * The management console webUi. + */ + webUi?: pulumi.Input; + } + + export interface ManagementServerNetwork { + /** + * Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + */ + network: pulumi.Input; + /** + * Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * - - - + */ + peeringMode?: pulumi.Input; + } +} + export namespace beyondcorp { export interface AppConnectionApplicationEndpoint { /** @@ -8201,6 +8231,11 @@ export namespace cloudbuild { } export interface TriggerGitFileSource { + /** + * The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + */ + bitbucketServerConfig?: pulumi.Input; /** * The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -8366,6 +8401,11 @@ export namespace cloudbuild { } export interface TriggerSourceToBuild { + /** + * The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + */ + bitbucketServerConfig?: pulumi.Input; /** * The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -11856,6 +11896,7 @@ export namespace composer { cloudComposerConnectionSubnetwork?: pulumi.Input; cloudComposerNetworkIpv4CidrBlock?: pulumi.Input; cloudSqlIpv4CidrBlock?: pulumi.Input; + connectionType?: pulumi.Input; enablePrivateEndpoint?: pulumi.Input; enablePrivatelyUsedPublicIps?: pulumi.Input; masterIpv4CidrBlock?: pulumi.Input; @@ -14959,6 +15000,7 @@ export namespace compute { * read-write mode. */ mode?: pulumi.Input; + provisionedIops?: pulumi.Input; /** * - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. */ @@ -17400,6 +17442,7 @@ export namespace compute { * read-write mode. */ mode?: pulumi.Input; + provisionedIops?: pulumi.Input; /** * - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. */ @@ -18053,6 +18096,105 @@ export namespace compute { ddosProtection: pulumi.Input; } + export interface RegionSecurityPolicyRuleMatch { + /** + * The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + */ + config?: pulumi.Input; + /** + * Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + */ + versionedExpr?: pulumi.Input; + } + + export interface RegionSecurityPolicyRuleMatchConfig { + /** + * CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + */ + srcIpRanges?: pulumi.Input[]>; + } + + export interface RegionSecurityPolicyRuleNetworkMatch { + /** + * Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + */ + destIpRanges?: pulumi.Input[]>; + /** + * Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + */ + destPorts?: pulumi.Input[]>; + /** + * IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + */ + ipProtocols?: pulumi.Input[]>; + /** + * BGP Autonomous System Number associated with the source IP address. + */ + srcAsns?: pulumi.Input[]>; + /** + * Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + */ + srcIpRanges?: pulumi.Input[]>; + /** + * Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + */ + srcPorts?: pulumi.Input[]>; + /** + * Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + */ + srcRegionCodes?: pulumi.Input[]>; + /** + * User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + */ + userDefinedFields?: pulumi.Input[]>; + } + + export interface RegionSecurityPolicyRuleNetworkMatchUserDefinedField { + /** + * Name of the user-defined field, as given in the definition. + */ + name?: pulumi.Input; + /** + * Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + */ + values?: pulumi.Input[]>; + } + + export interface RegionSecurityPolicyUserDefinedField { + /** + * The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + */ + base: pulumi.Input; + /** + * If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + */ + mask?: pulumi.Input; + /** + * The name of this field. Must be unique within the policy. + */ + name?: pulumi.Input; + /** + * Offset of the first byte of the field (in network byte order) relative to 'base'. + */ + offset?: pulumi.Input; + /** + * Size of the field in bytes. Valid values: 1-4. + */ + size?: pulumi.Input; + } + export interface RegionUrlMapDefaultRouteAction { /** * The specification for allowing client side cross-origin requests. Please see @@ -20095,6 +20237,10 @@ export namespace compute { * * VERBOSE - Verbose log level. */ logLevel?: pulumi.Input; + /** + * ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + */ + userIpRequestHeaders?: pulumi.Input[]>; } export interface SecurityPolicyAdvancedOptionsConfigJsonCustomConfig { @@ -26042,6 +26188,11 @@ export namespace databasemigrationservice { * Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion */ databaseVersion?: pulumi.Input; + /** + * The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + */ + edition?: pulumi.Input; /** * The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. * Structure is documented below. @@ -34244,6 +34395,18 @@ export namespace dataproc { subnetwork: pulumi.Input; } + export interface MetastoreServiceScalingConfig { + /** + * Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + */ + instanceSize?: pulumi.Input; + /** + * Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + */ + scalingFactor?: pulumi.Input; + } + export interface MetastoreServiceTelemetryConfig { /** * The output format of the Dataproc Metastore service's logs. @@ -37189,7 +37352,7 @@ export namespace dns { * Structure is documented below. */ gkeClusters?: pulumi.Input[]>; - networks: pulumi.Input[]>; + networks?: pulumi.Input[]>; } export interface ManagedZonePrivateVisibilityConfigGkeCluster { @@ -37318,7 +37481,7 @@ export namespace dns { */ ipProtocol: pulumi.Input; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: pulumi.Input; /** @@ -37393,7 +37556,7 @@ export namespace dns { */ ipProtocol: pulumi.Input; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: pulumi.Input; /** @@ -37432,7 +37595,7 @@ export namespace dns { */ ipProtocol: pulumi.Input; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: pulumi.Input; /** @@ -37487,7 +37650,7 @@ export namespace dns { */ ipProtocol: pulumi.Input; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: pulumi.Input; /** @@ -40352,10 +40515,15 @@ export namespace gkeonprem { /** * (Output) * The Vsphere datastore used by the Control Plane Node. + */ + datastore?: pulumi.Input; + /** + * (Output) + * The Vsphere storage policy used by the control plane Node. * * - - - */ - datastore?: pulumi.Input; + storagePolicyName?: pulumi.Input; } export interface VMwareClusterDataplaneV2 { @@ -40761,8 +40929,6 @@ export namespace gkeonprem { /** * (Output) * The Vsphere datastore used by the Control Plane Node. - * - * - - - */ datastore?: pulumi.Input; /** @@ -40775,6 +40941,13 @@ export namespace gkeonprem { * The name of the vCenter resource pool for the user cluster. */ resourcePool?: pulumi.Input; + /** + * (Output) + * The Vsphere storage policy used by the control plane Node. + * + * - - - + */ + storagePolicyName?: pulumi.Input; } export interface VMwareNodePoolConfig { diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 3961412476..5d03eb8cc3 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -1694,11 +1694,11 @@ export namespace alloydb { * The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it will default to 1 hour. * A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". */ - backupWindow?: string; + backupWindow: string; /** * Whether automated backups are enabled. */ - enabled?: boolean; + enabled: boolean; /** * EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key). * Structure is documented below. @@ -1711,7 +1711,7 @@ export namespace alloydb { /** * The location where the backup will be stored. Currently, the only supported option is to store the backup in the same region as the cluster. */ - location?: string; + location: string; /** * Quantity-based Backup retention policy to retain recent backups. Conflicts with 'time_based_retention', both can't be set together. * Structure is documented below. @@ -3521,6 +3521,37 @@ export namespace assuredworkloads { } +export namespace backupdisasterrecovery { + export interface ManagementServerManagementUri { + /** + * (Output) + * The management console api endpoint. + */ + api: string; + /** + * (Output) + * The management console webUi. + */ + webUi: string; + } + + export interface ManagementServerNetwork { + /** + * Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + */ + network: string; + /** + * Type of Network peeringMode + * Default value is `PRIVATE_SERVICE_ACCESS`. + * Possible values are: `PRIVATE_SERVICE_ACCESS`. + * + * - - - + */ + peeringMode?: string; + } + +} + export namespace beyondcorp { export interface AppConnectionApplicationEndpoint { /** @@ -8128,6 +8159,7 @@ export namespace cloudbuild { } export interface GetTriggerGitFileSource { + bitbucketServerConfig: string; githubEnterpriseConfig: string; path: string; repoType: string; @@ -8182,6 +8214,7 @@ export namespace cloudbuild { } export interface GetTriggerSourceToBuild { + bitbucketServerConfig: string; githubEnterpriseConfig: string; ref: string; repoType: string; @@ -8721,6 +8754,11 @@ export namespace cloudbuild { } export interface TriggerGitFileSource { + /** + * The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + */ + bitbucketServerConfig?: string; /** * The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -8886,6 +8924,11 @@ export namespace cloudbuild { } export interface TriggerSourceToBuild { + /** + * The full resource name of the bitbucket server config. + * Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + */ + bitbucketServerConfig?: string; /** * The full resource name of the github enterprise config. * Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. @@ -12888,6 +12931,7 @@ export namespace composer { cloudComposerConnectionSubnetwork: string; cloudComposerNetworkIpv4CidrBlock: string; cloudSqlIpv4CidrBlock: string; + connectionType: string; enablePrivateEndpoint?: boolean; enablePrivatelyUsedPublicIps: boolean; masterIpv4CidrBlock: string; @@ -13036,6 +13080,7 @@ export namespace composer { cloudComposerConnectionSubnetwork: string; cloudComposerNetworkIpv4CidrBlock: string; cloudSqlIpv4CidrBlock: string; + connectionType: string; enablePrivateEndpoint: boolean; enablePrivatelyUsedPublicIps: boolean; masterIpv4CidrBlock: string; @@ -15336,6 +15381,7 @@ export namespace compute { * read-write mode. */ mode: string; + provisionedIops: number; /** * (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. */ @@ -15705,6 +15751,7 @@ export namespace compute { * read-write mode. */ mode: string; + provisionedIops: number; /** * (Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. */ @@ -17776,6 +17823,7 @@ export namespace compute { * read-write mode. */ mode: string; + provisionedIops: number; /** * - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. */ @@ -20217,6 +20265,7 @@ export namespace compute { * read-write mode. */ mode: string; + provisionedIops: number; /** * - A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported. */ @@ -20870,6 +20919,105 @@ export namespace compute { ddosProtection: string; } + export interface RegionSecurityPolicyRuleMatch { + /** + * The configuration options available when specifying versionedExpr. + * This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + * Structure is documented below. + */ + config?: outputs.compute.RegionSecurityPolicyRuleMatchConfig; + /** + * Preconfigured versioned expression. If this field is specified, config must also be specified. + * Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + * Possible values are: `SRC_IPS_V1`. + */ + versionedExpr?: string; + } + + export interface RegionSecurityPolicyRuleMatchConfig { + /** + * CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + */ + srcIpRanges?: string[]; + } + + export interface RegionSecurityPolicyRuleNetworkMatch { + /** + * Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + */ + destIpRanges?: string[]; + /** + * Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + */ + destPorts?: string[]; + /** + * IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + */ + ipProtocols?: string[]; + /** + * BGP Autonomous System Number associated with the source IP address. + */ + srcAsns?: number[]; + /** + * Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + */ + srcIpRanges?: string[]; + /** + * Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + */ + srcPorts?: string[]; + /** + * Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + */ + srcRegionCodes?: string[]; + /** + * User-defined fields. Each element names a defined field and lists the matching values for that field. + * Structure is documented below. + */ + userDefinedFields?: outputs.compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedField[]; + } + + export interface RegionSecurityPolicyRuleNetworkMatchUserDefinedField { + /** + * Name of the user-defined field, as given in the definition. + */ + name?: string; + /** + * Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + */ + values?: string[]; + } + + export interface RegionSecurityPolicyUserDefinedField { + /** + * The base relative to which 'offset' is measured. Possible values are: + * - IPV4: Points to the beginning of the IPv4 header. + * - IPV6: Points to the beginning of the IPv6 header. + * - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + * Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + */ + base: string; + /** + * If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + * Encoded as a hexadecimal number (starting with "0x"). + * The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + */ + mask?: string; + /** + * The name of this field. Must be unique within the policy. + */ + name?: string; + /** + * Offset of the first byte of the field (in network byte order) relative to 'base'. + */ + offset?: number; + /** + * Size of the field in bytes. Valid values: 1-4. + */ + size?: number; + } + export interface RegionUrlMapDefaultRouteAction { /** * The specification for allowing client side cross-origin requests. Please see @@ -22970,6 +23118,10 @@ export namespace compute { * * VERBOSE - Verbose log level. */ logLevel: string; + /** + * ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + */ + userIpRequestHeaders?: string[]; } export interface SecurityPolicyAdvancedOptionsConfigJsonCustomConfig { @@ -29625,6 +29777,11 @@ export namespace databasemigrationservice { * Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion */ databaseVersion?: string; + /** + * The edition of the given Cloud SQL instance. + * Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + */ + edition?: string; /** * The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. * Structure is documented below. @@ -37833,6 +37990,18 @@ export namespace dataproc { subnetwork: string; } + export interface MetastoreServiceScalingConfig { + /** + * Metastore instance sizes. + * Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + */ + instanceSize?: string; + /** + * Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + */ + scalingFactor?: number; + } + export interface MetastoreServiceTelemetryConfig { /** * The output format of the Dataproc Metastore service's logs. @@ -40887,7 +41056,7 @@ export namespace dns { * Structure is documented below. */ gkeClusters?: outputs.dns.ManagedZonePrivateVisibilityConfigGkeCluster[]; - networks: outputs.dns.ManagedZonePrivateVisibilityConfigNetwork[]; + networks?: outputs.dns.ManagedZonePrivateVisibilityConfigNetwork[]; } export interface ManagedZonePrivateVisibilityConfigGkeCluster { @@ -41016,7 +41185,7 @@ export namespace dns { */ ipProtocol: string; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: string; /** @@ -41091,7 +41260,7 @@ export namespace dns { */ ipProtocol: string; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: string; /** @@ -41130,7 +41299,7 @@ export namespace dns { */ ipProtocol: string; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: string; /** @@ -41185,7 +41354,7 @@ export namespace dns { */ ipProtocol: string; /** - * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + * The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] */ loadBalancerType: string; /** @@ -44104,10 +44273,15 @@ export namespace gkeonprem { /** * (Output) * The Vsphere datastore used by the Control Plane Node. + */ + datastore: string; + /** + * (Output) + * The Vsphere storage policy used by the control plane Node. * * - - - */ - datastore: string; + storagePolicyName: string; } export interface VMwareClusterDataplaneV2 { @@ -44513,8 +44687,6 @@ export namespace gkeonprem { /** * (Output) * The Vsphere datastore used by the Control Plane Node. - * - * - - - */ datastore: string; /** @@ -44527,6 +44699,13 @@ export namespace gkeonprem { * The name of the vCenter resource pool for the user cluster. */ resourcePool: string; + /** + * (Output) + * The Vsphere storage policy used by the control plane Node. + * + * - - - + */ + storagePolicyName: string; } export interface VMwareNodePoolConfig { diff --git a/sdk/python/pulumi_gcp/__init__.py b/sdk/python/pulumi_gcp/__init__.py index 02895c4409..74f159bbfc 100644 --- a/sdk/python/pulumi_gcp/__init__.py +++ b/sdk/python/pulumi_gcp/__init__.py @@ -28,6 +28,8 @@ artifactregistry = __artifactregistry import pulumi_gcp.assuredworkloads as __assuredworkloads assuredworkloads = __assuredworkloads + import pulumi_gcp.backupdisasterrecovery as __backupdisasterrecovery + backupdisasterrecovery = __backupdisasterrecovery import pulumi_gcp.beyondcorp as __beyondcorp beyondcorp = __beyondcorp import pulumi_gcp.bigquery as __bigquery @@ -226,6 +228,7 @@ appengine = _utilities.lazy_import('pulumi_gcp.appengine') artifactregistry = _utilities.lazy_import('pulumi_gcp.artifactregistry') assuredworkloads = _utilities.lazy_import('pulumi_gcp.assuredworkloads') + backupdisasterrecovery = _utilities.lazy_import('pulumi_gcp.backupdisasterrecovery') beyondcorp = _utilities.lazy_import('pulumi_gcp.beyondcorp') bigquery = _utilities.lazy_import('pulumi_gcp.bigquery') bigqueryanalyticshub = _utilities.lazy_import('pulumi_gcp.bigqueryanalyticshub') @@ -868,6 +871,14 @@ "gcp:assuredworkloads/workload:Workload": "Workload" } }, + { + "pkg": "gcp", + "mod": "backupdisasterrecovery/managementServer", + "fqn": "pulumi_gcp.backupdisasterrecovery", + "classes": { + "gcp:backupdisasterrecovery/managementServer:ManagementServer": "ManagementServer" + } + }, { "pkg": "gcp", "mod": "beyondcorp/appConnection", @@ -2556,6 +2567,14 @@ "gcp:compute/regionSecurityPolicy:RegionSecurityPolicy": "RegionSecurityPolicy" } }, + { + "pkg": "gcp", + "mod": "compute/regionSecurityPolicyRule", + "fqn": "pulumi_gcp.compute", + "classes": { + "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": "RegionSecurityPolicyRule" + } + }, { "pkg": "gcp", "mod": "compute/regionSslCertificate", diff --git a/sdk/python/pulumi_gcp/apigateway/api_config.py b/sdk/python/pulumi_gcp/apigateway/api_config.py index a37b69f857..cd375a3588 100644 --- a/sdk/python/pulumi_gcp/apigateway/api_config.py +++ b/sdk/python/pulumi_gcp/apigateway/api_config.py @@ -465,7 +465,7 @@ def __init__(__self__, openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs( document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs( path="spec.yaml", - contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/apigateway/openapi.yaml"), + contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/openapi.yaml"), ), )], opts=pulumi.ResourceOptions(provider=google_beta)) @@ -542,7 +542,7 @@ def __init__(__self__, openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs( document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs( path="spec.yaml", - contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/apigateway/openapi.yaml"), + contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/openapi.yaml"), ), )], opts=pulumi.ResourceOptions(provider=google_beta)) diff --git a/sdk/python/pulumi_gcp/apigateway/gateway.py b/sdk/python/pulumi_gcp/apigateway/gateway.py index 1f8b0bb79e..9055c24116 100644 --- a/sdk/python/pulumi_gcp/apigateway/gateway.py +++ b/sdk/python/pulumi_gcp/apigateway/gateway.py @@ -306,7 +306,7 @@ def __init__(__self__, openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs( document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs( path="spec.yaml", - contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/apigateway/openapi.yaml"), + contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/openapi.yaml"), ), )], opts=pulumi.ResourceOptions(provider=google_beta)) @@ -381,7 +381,7 @@ def __init__(__self__, openapi_documents=[gcp.apigateway.ApiConfigOpenapiDocumentArgs( document=gcp.apigateway.ApiConfigOpenapiDocumentDocumentArgs( path="spec.yaml", - contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/apigateway/openapi.yaml"), + contents=(lambda path: base64.b64encode(open(path).read().encode()).decode())("test-fixtures/openapi.yaml"), ), )], opts=pulumi.ResourceOptions(provider=google_beta)) diff --git a/sdk/python/pulumi_gcp/appengine/application_url_dispatch_rules.py b/sdk/python/pulumi_gcp/appengine/application_url_dispatch_rules.py index f8c1b74b54..c3f94d5086 100644 --- a/sdk/python/pulumi_gcp/appengine/application_url_dispatch_rules.py +++ b/sdk/python/pulumi_gcp/appengine/application_url_dispatch_rules.py @@ -125,7 +125,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) admin_v3 = gcp.appengine.StandardAppVersion("adminV3", version_id="v3", service="admin", @@ -194,7 +194,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) admin_v3 = gcp.appengine.StandardAppVersion("adminV3", version_id="v3", service="admin", diff --git a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py index ee156cc021..5b34bc9682 100644 --- a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py +++ b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py @@ -190,7 +190,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) liveapp_v1 = gcp.appengine.StandardAppVersion("liveappV1", version_id="v1", service="liveapp", @@ -283,7 +283,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) liveapp_v1 = gcp.appengine.StandardAppVersion("liveappV1", version_id="v1", service="liveapp", diff --git a/sdk/python/pulumi_gcp/appengine/flexible_app_version.py b/sdk/python/pulumi_gcp/appengine/flexible_app_version.py index efdb46e7a9..90e10a9290 100644 --- a/sdk/python/pulumi_gcp/appengine/flexible_app_version.py +++ b/sdk/python/pulumi_gcp/appengine/flexible_app_version.py @@ -1180,7 +1180,7 @@ def __init__(__self__, location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) myapp_v1 = gcp.appengine.FlexibleAppVersion("myappV1", version_id="v1", project=gae_api.project, @@ -1356,7 +1356,7 @@ def __init__(__self__, location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) myapp_v1 = gcp.appengine.FlexibleAppVersion("myappV1", version_id="v1", project=gae_api.project, diff --git a/sdk/python/pulumi_gcp/appengine/service_network_settings.py b/sdk/python/pulumi_gcp/appengine/service_network_settings.py index 959f54f319..06ebd377ba 100644 --- a/sdk/python/pulumi_gcp/appengine/service_network_settings.py +++ b/sdk/python/pulumi_gcp/appengine/service_network_settings.py @@ -157,7 +157,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) internalapp_standard_app_version = gcp.appengine.StandardAppVersion("internalappStandardAppVersion", version_id="v1", service="internalapp", @@ -228,7 +228,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) internalapp_standard_app_version = gcp.appengine.StandardAppVersion("internalappStandardAppVersion", version_id="v1", service="internalapp", diff --git a/sdk/python/pulumi_gcp/appengine/standard_app_version.py b/sdk/python/pulumi_gcp/appengine/standard_app_version.py index f1e8d517b4..4cf98909ec 100644 --- a/sdk/python/pulumi_gcp/appengine/standard_app_version.py +++ b/sdk/python/pulumi_gcp/appengine/standard_app_version.py @@ -849,7 +849,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) myapp_v1 = gcp.appengine.StandardAppVersion("myappV1", version_id="v1", service="myapp", @@ -998,7 +998,7 @@ def __init__(__self__, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) myapp_v1 = gcp.appengine.StandardAppVersion("myappV1", version_id="v1", service="myapp", diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/__init__.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/__init__.py new file mode 100644 index 0000000000..2c6eec368c --- /dev/null +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/__init__.py @@ -0,0 +1,10 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +from .. import _utilities +import typing +# Export this package's modules as members: +from .management_server import * +from ._inputs import * +from . import outputs diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/_inputs.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/_inputs.py new file mode 100644 index 0000000000..57b9c5d0c1 --- /dev/null +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/_inputs.py @@ -0,0 +1,105 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities + +__all__ = [ + 'ManagementServerManagementUriArgs', + 'ManagementServerNetworkArgs', +] + +@pulumi.input_type +class ManagementServerManagementUriArgs: + def __init__(__self__, *, + api: Optional[pulumi.Input[str]] = None, + web_ui: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] api: (Output) + The management console api endpoint. + :param pulumi.Input[str] web_ui: (Output) + The management console webUi. + """ + if api is not None: + pulumi.set(__self__, "api", api) + if web_ui is not None: + pulumi.set(__self__, "web_ui", web_ui) + + @property + @pulumi.getter + def api(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The management console api endpoint. + """ + return pulumi.get(self, "api") + + @api.setter + def api(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "api", value) + + @property + @pulumi.getter(name="webUi") + def web_ui(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The management console webUi. + """ + return pulumi.get(self, "web_ui") + + @web_ui.setter + def web_ui(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "web_ui", value) + + +@pulumi.input_type +class ManagementServerNetworkArgs: + def __init__(__self__, *, + network: pulumi.Input[str], + peering_mode: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] network: Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + :param pulumi.Input[str] peering_mode: Type of Network peeringMode + Default value is `PRIVATE_SERVICE_ACCESS`. + Possible values are: `PRIVATE_SERVICE_ACCESS`. + + - - - + """ + pulumi.set(__self__, "network", network) + if peering_mode is not None: + pulumi.set(__self__, "peering_mode", peering_mode) + + @property + @pulumi.getter + def network(self) -> pulumi.Input[str]: + """ + Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + """ + return pulumi.get(self, "network") + + @network.setter + def network(self, value: pulumi.Input[str]): + pulumi.set(self, "network", value) + + @property + @pulumi.getter(name="peeringMode") + def peering_mode(self) -> Optional[pulumi.Input[str]]: + """ + Type of Network peeringMode + Default value is `PRIVATE_SERVICE_ACCESS`. + Possible values are: `PRIVATE_SERVICE_ACCESS`. + + - - - + """ + return pulumi.get(self, "peering_mode") + + @peering_mode.setter + def peering_mode(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "peering_mode", value) + + diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py new file mode 100644 index 0000000000..a07e37f3fc --- /dev/null +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/management_server.py @@ -0,0 +1,513 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['ManagementServerArgs', 'ManagementServer'] + +@pulumi.input_type +class ManagementServerArgs: + def __init__(__self__, *, + location: pulumi.Input[str], + networks: pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]], + name: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a ManagementServer resource. + :param pulumi.Input[str] location: The location for the management server (management console) + :param pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]] networks: Network details to create management server (management console). + Structure is documented below. + :param pulumi.Input[str] name: The name of management server (management console) + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] type: The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + pulumi.set(__self__, "location", location) + pulumi.set(__self__, "networks", networks) + if name is not None: + pulumi.set(__self__, "name", name) + if project is not None: + pulumi.set(__self__, "project", project) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter + def location(self) -> pulumi.Input[str]: + """ + The location for the management server (management console) + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: pulumi.Input[str]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter + def networks(self) -> pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]]: + """ + Network details to create management server (management console). + Structure is documented below. + """ + return pulumi.get(self, "networks") + + @networks.setter + def networks(self, value: pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]]): + pulumi.set(self, "networks", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of management server (management console) + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + +@pulumi.input_type +class _ManagementServerState: + def __init__(__self__, *, + location: Optional[pulumi.Input[str]] = None, + management_uris: Optional[pulumi.Input[Sequence[pulumi.Input['ManagementServerManagementUriArgs']]]] = None, + name: Optional[pulumi.Input[str]] = None, + networks: Optional[pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]]] = None, + oauth2_client_id: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering ManagementServer resources. + :param pulumi.Input[str] location: The location for the management server (management console) + :param pulumi.Input[Sequence[pulumi.Input['ManagementServerManagementUriArgs']]] management_uris: The management console URI + Structure is documented below. + :param pulumi.Input[str] name: The name of management server (management console) + :param pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]] networks: Network details to create management server (management console). + Structure is documented below. + :param pulumi.Input[str] oauth2_client_id: The oauth2ClientId of management console. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] type: The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + if location is not None: + pulumi.set(__self__, "location", location) + if management_uris is not None: + pulumi.set(__self__, "management_uris", management_uris) + if name is not None: + pulumi.set(__self__, "name", name) + if networks is not None: + pulumi.set(__self__, "networks", networks) + if oauth2_client_id is not None: + pulumi.set(__self__, "oauth2_client_id", oauth2_client_id) + if project is not None: + pulumi.set(__self__, "project", project) + if type is not None: + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter + def location(self) -> Optional[pulumi.Input[str]]: + """ + The location for the management server (management console) + """ + return pulumi.get(self, "location") + + @location.setter + def location(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "location", value) + + @property + @pulumi.getter(name="managementUris") + def management_uris(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ManagementServerManagementUriArgs']]]]: + """ + The management console URI + Structure is documented below. + """ + return pulumi.get(self, "management_uris") + + @management_uris.setter + def management_uris(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ManagementServerManagementUriArgs']]]]): + pulumi.set(self, "management_uris", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of management server (management console) + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]]]: + """ + Network details to create management server (management console). + Structure is documented below. + """ + return pulumi.get(self, "networks") + + @networks.setter + def networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ManagementServerNetworkArgs']]]]): + pulumi.set(self, "networks", value) + + @property + @pulumi.getter(name="oauth2ClientId") + def oauth2_client_id(self) -> Optional[pulumi.Input[str]]: + """ + The oauth2ClientId of management console. + """ + return pulumi.get(self, "oauth2_client_id") + + @oauth2_client_id.setter + def oauth2_client_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "oauth2_client_id", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + +class ManagementServer(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + networks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerNetworkArgs']]]]] = None, + project: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + ### Backup Dr Management Server + + ```python + import pulumi + import pulumi_gcp as gcp + + default_network = gcp.compute.Network("defaultNetwork", opts=pulumi.ResourceOptions(provider=google_beta)) + private_ip_address = gcp.compute.GlobalAddress("privateIpAddress", + address_type="INTERNAL", + purpose="VPC_PEERING", + prefix_length=20, + network=default_network.id, + opts=pulumi.ResourceOptions(provider=google_beta)) + default_connection = gcp.servicenetworking.Connection("defaultConnection", + network=default_network.id, + service="servicenetworking.googleapis.com", + reserved_peering_ranges=[private_ip_address.name], + opts=pulumi.ResourceOptions(provider=google_beta)) + ms_console = gcp.backupdisasterrecovery.ManagementServer("ms-console", + location="us-central1", + type="BACKUP_RESTORE", + networks=[gcp.backupdisasterrecovery.ManagementServerNetworkArgs( + network=default_network.id, + peering_mode="PRIVATE_SERVICE_ACCESS", + )], + opts=pulumi.ResourceOptions(provider=google_beta, + depends_on=[default_connection])) + ``` + + ## Import + + ManagementServer can be imported using any of these accepted formats + + ```sh + $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}} + ``` + + ```sh + $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}} + ``` + + ```sh + $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] location: The location for the management server (management console) + :param pulumi.Input[str] name: The name of management server (management console) + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerNetworkArgs']]]] networks: Network details to create management server (management console). + Structure is documented below. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] type: The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: ManagementServerArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + ### Backup Dr Management Server + + ```python + import pulumi + import pulumi_gcp as gcp + + default_network = gcp.compute.Network("defaultNetwork", opts=pulumi.ResourceOptions(provider=google_beta)) + private_ip_address = gcp.compute.GlobalAddress("privateIpAddress", + address_type="INTERNAL", + purpose="VPC_PEERING", + prefix_length=20, + network=default_network.id, + opts=pulumi.ResourceOptions(provider=google_beta)) + default_connection = gcp.servicenetworking.Connection("defaultConnection", + network=default_network.id, + service="servicenetworking.googleapis.com", + reserved_peering_ranges=[private_ip_address.name], + opts=pulumi.ResourceOptions(provider=google_beta)) + ms_console = gcp.backupdisasterrecovery.ManagementServer("ms-console", + location="us-central1", + type="BACKUP_RESTORE", + networks=[gcp.backupdisasterrecovery.ManagementServerNetworkArgs( + network=default_network.id, + peering_mode="PRIVATE_SERVICE_ACCESS", + )], + opts=pulumi.ResourceOptions(provider=google_beta, + depends_on=[default_connection])) + ``` + + ## Import + + ManagementServer can be imported using any of these accepted formats + + ```sh + $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}} + ``` + + ```sh + $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}} + ``` + + ```sh + $ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}} + ``` + + :param str resource_name: The name of the resource. + :param ManagementServerArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(ManagementServerArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + location: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + networks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerNetworkArgs']]]]] = None, + project: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = ManagementServerArgs.__new__(ManagementServerArgs) + + if location is None and not opts.urn: + raise TypeError("Missing required property 'location'") + __props__.__dict__["location"] = location + __props__.__dict__["name"] = name + if networks is None and not opts.urn: + raise TypeError("Missing required property 'networks'") + __props__.__dict__["networks"] = networks + __props__.__dict__["project"] = project + __props__.__dict__["type"] = type + __props__.__dict__["management_uris"] = None + __props__.__dict__["oauth2_client_id"] = None + super(ManagementServer, __self__).__init__( + 'gcp:backupdisasterrecovery/managementServer:ManagementServer', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + location: Optional[pulumi.Input[str]] = None, + management_uris: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerManagementUriArgs']]]]] = None, + name: Optional[pulumi.Input[str]] = None, + networks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerNetworkArgs']]]]] = None, + oauth2_client_id: Optional[pulumi.Input[str]] = None, + project: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None) -> 'ManagementServer': + """ + Get an existing ManagementServer resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] location: The location for the management server (management console) + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerManagementUriArgs']]]] management_uris: The management console URI + Structure is documented below. + :param pulumi.Input[str] name: The name of management server (management console) + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ManagementServerNetworkArgs']]]] networks: Network details to create management server (management console). + Structure is documented below. + :param pulumi.Input[str] oauth2_client_id: The oauth2ClientId of management console. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] type: The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _ManagementServerState.__new__(_ManagementServerState) + + __props__.__dict__["location"] = location + __props__.__dict__["management_uris"] = management_uris + __props__.__dict__["name"] = name + __props__.__dict__["networks"] = networks + __props__.__dict__["oauth2_client_id"] = oauth2_client_id + __props__.__dict__["project"] = project + __props__.__dict__["type"] = type + return ManagementServer(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def location(self) -> pulumi.Output[str]: + """ + The location for the management server (management console) + """ + return pulumi.get(self, "location") + + @property + @pulumi.getter(name="managementUris") + def management_uris(self) -> pulumi.Output[Sequence['outputs.ManagementServerManagementUri']]: + """ + The management console URI + Structure is documented below. + """ + return pulumi.get(self, "management_uris") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + The name of management server (management console) + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def networks(self) -> pulumi.Output[Sequence['outputs.ManagementServerNetwork']]: + """ + Network details to create management server (management console). + Structure is documented below. + """ + return pulumi.get(self, "networks") + + @property + @pulumi.getter(name="oauth2ClientId") + def oauth2_client_id(self) -> pulumi.Output[str]: + """ + The oauth2ClientId of management console. + """ + return pulumi.get(self, "oauth2_client_id") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @property + @pulumi.getter + def type(self) -> pulumi.Output[Optional[str]]: + """ + The type of management server (management console). + Default value is `BACKUP_RESTORE`. + Possible values are: `BACKUP_RESTORE`. + """ + return pulumi.get(self, "type") + diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py new file mode 100644 index 0000000000..1e2ddc0d4a --- /dev/null +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/outputs.py @@ -0,0 +1,123 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities + +__all__ = [ + 'ManagementServerManagementUri', + 'ManagementServerNetwork', +] + +@pulumi.output_type +class ManagementServerManagementUri(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "webUi": + suggest = "web_ui" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ManagementServerManagementUri. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ManagementServerManagementUri.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ManagementServerManagementUri.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + api: Optional[str] = None, + web_ui: Optional[str] = None): + """ + :param str api: (Output) + The management console api endpoint. + :param str web_ui: (Output) + The management console webUi. + """ + if api is not None: + pulumi.set(__self__, "api", api) + if web_ui is not None: + pulumi.set(__self__, "web_ui", web_ui) + + @property + @pulumi.getter + def api(self) -> Optional[str]: + """ + (Output) + The management console api endpoint. + """ + return pulumi.get(self, "api") + + @property + @pulumi.getter(name="webUi") + def web_ui(self) -> Optional[str]: + """ + (Output) + The management console webUi. + """ + return pulumi.get(self, "web_ui") + + +@pulumi.output_type +class ManagementServerNetwork(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "peeringMode": + suggest = "peering_mode" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in ManagementServerNetwork. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + ManagementServerNetwork.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + ManagementServerNetwork.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + network: str, + peering_mode: Optional[str] = None): + """ + :param str network: Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + :param str peering_mode: Type of Network peeringMode + Default value is `PRIVATE_SERVICE_ACCESS`. + Possible values are: `PRIVATE_SERVICE_ACCESS`. + + - - - + """ + pulumi.set(__self__, "network", network) + if peering_mode is not None: + pulumi.set(__self__, "peering_mode", peering_mode) + + @property + @pulumi.getter + def network(self) -> str: + """ + Network with format `projects/{{project_id}}/global/networks/{{network_id}}` + """ + return pulumi.get(self, "network") + + @property + @pulumi.getter(name="peeringMode") + def peering_mode(self) -> Optional[str]: + """ + Type of Network peeringMode + Default value is `PRIVATE_SERVICE_ACCESS`. + Possible values are: `PRIVATE_SERVICE_ACCESS`. + + - - - + """ + return pulumi.get(self, "peering_mode") + + diff --git a/sdk/python/pulumi_gcp/bigquery/job.py b/sdk/python/pulumi_gcp/bigquery/job.py index baf38a7a27..178189bef4 100644 --- a/sdk/python/pulumi_gcp/bigquery/job.py +++ b/sdk/python/pulumi_gcp/bigquery/job.py @@ -513,7 +513,7 @@ def __init__(__self__, location="US", uniform_bucket_level_access=True) test_bucket_object = gcp.storage.BucketObject("testBucketObject", - source=pulumi.FileAsset("./test-fixtures/bigquerytable/test.parquet.gzip"), + source=pulumi.FileAsset("./test-fixtures/test.parquet.gzip"), bucket=test_bucket.name) test_dataset = gcp.bigquery.Dataset("testDataset", dataset_id="job_load_dataset", @@ -772,7 +772,7 @@ def __init__(__self__, location="US", uniform_bucket_level_access=True) test_bucket_object = gcp.storage.BucketObject("testBucketObject", - source=pulumi.FileAsset("./test-fixtures/bigquerytable/test.parquet.gzip"), + source=pulumi.FileAsset("./test-fixtures/test.parquet.gzip"), bucket=test_bucket.name) test_dataset = gcp.bigquery.Dataset("testDataset", dataset_id="job_load_dataset", diff --git a/sdk/python/pulumi_gcp/certificatemanager/certificate.py b/sdk/python/pulumi_gcp/certificatemanager/certificate.py index c4ecabea49..618cc30bf0 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/certificate.py +++ b/sdk/python/pulumi_gcp/certificatemanager/certificate.py @@ -46,7 +46,8 @@ def __init__(__self__, *, If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones :param pulumi.Input['CertificateSelfManagedArgs'] self_managed: Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility. @@ -159,7 +160,8 @@ def scope(self) -> Optional[pulumi.Input[str]]: If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones """ return pulumi.get(self, "scope") @@ -216,7 +218,8 @@ def __init__(__self__, *, If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones :param pulumi.Input['CertificateSelfManagedArgs'] self_managed: Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility. @@ -329,7 +332,8 @@ def scope(self) -> Optional[pulumi.Input[str]]: If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones """ return pulumi.get(self, "scope") @@ -413,7 +417,7 @@ def __init__(__self__, ca_authority = gcp.certificateauthority.Authority("caAuthority", location="us-central1", pool=pool.name, - certificate_authority_id="my-ca", + certificate_authority_id="ca-authority", config=gcp.certificateauthority.AuthorityConfigArgs( subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs( subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs( @@ -501,8 +505,8 @@ def __init__(__self__, description="Regional cert", location="us-central1", self_managed=gcp.certificatemanager.CertificateSelfManagedArgs( - pem_certificate=(lambda path: open(path).read())("test-fixtures/certificatemanager/cert.pem"), - pem_private_key=(lambda path: open(path).read())("test-fixtures/certificatemanager/private-key.pem"), + pem_certificate=(lambda path: open(path).read())("test-fixtures/cert.pem"), + pem_private_key=(lambda path: open(path).read())("test-fixtures/private-key.pem"), )) ``` @@ -544,7 +548,8 @@ def __init__(__self__, If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones :param pulumi.Input[pulumi.InputType['CertificateSelfManagedArgs']] self_managed: Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility. @@ -602,7 +607,7 @@ def __init__(__self__, ca_authority = gcp.certificateauthority.Authority("caAuthority", location="us-central1", pool=pool.name, - certificate_authority_id="my-ca", + certificate_authority_id="ca-authority", config=gcp.certificateauthority.AuthorityConfigArgs( subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs( subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs( @@ -690,8 +695,8 @@ def __init__(__self__, description="Regional cert", location="us-central1", self_managed=gcp.certificatemanager.CertificateSelfManagedArgs( - pem_certificate=(lambda path: open(path).read())("test-fixtures/certificatemanager/cert.pem"), - pem_private_key=(lambda path: open(path).read())("test-fixtures/certificatemanager/private-key.pem"), + pem_certificate=(lambda path: open(path).read())("test-fixtures/cert.pem"), + pem_private_key=(lambda path: open(path).read())("test-fixtures/private-key.pem"), )) ``` @@ -796,7 +801,8 @@ def get(resource_name: str, If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones :param pulumi.Input[pulumi.InputType['CertificateSelfManagedArgs']] self_managed: Certificate data for a SelfManaged Certificate. SelfManaged Certificates are uploaded by the user. Updating such certificates before they expire remains the user's responsibility. @@ -882,7 +888,8 @@ def scope(self) -> pulumi.Output[Optional[str]]: If unsure, choose this option. EDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from non-core Google data centers. - Currently allowed only for managed certificates. + ALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs). + see https://cloud.google.com/compute/docs/regions-zones """ return pulumi.get(self, "scope") diff --git a/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py b/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py index e0818e7edd..40304a7e31 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py +++ b/sdk/python/pulumi_gcp/certificatemanager/certificate_issuance_config.py @@ -426,7 +426,7 @@ def __init__(__self__, ca_authority = gcp.certificateauthority.Authority("caAuthority", location="us-central1", pool=pool.name, - certificate_authority_id="my-ca", + certificate_authority_id="ca-authority", config=gcp.certificateauthority.AuthorityConfigArgs( subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs( subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs( @@ -540,7 +540,7 @@ def __init__(__self__, ca_authority = gcp.certificateauthority.Authority("caAuthority", location="us-central1", pool=pool.name, - certificate_authority_id="my-ca", + certificate_authority_id="ca-authority", config=gcp.certificateauthority.AuthorityConfigArgs( subject_config=gcp.certificateauthority.AuthorityConfigSubjectConfigArgs( subject=gcp.certificateauthority.AuthorityConfigSubjectConfigSubjectArgs( diff --git a/sdk/python/pulumi_gcp/cloudbuild/_inputs.py b/sdk/python/pulumi_gcp/cloudbuild/_inputs.py index 0479a73d8c..dfc4ff2904 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/_inputs.py +++ b/sdk/python/pulumi_gcp/cloudbuild/_inputs.py @@ -1812,6 +1812,7 @@ class TriggerGitFileSourceArgs: def __init__(__self__, *, path: pulumi.Input[str], repo_type: pulumi.Input[str], + bitbucket_server_config: Optional[pulumi.Input[str]] = None, github_enterprise_config: Optional[pulumi.Input[str]] = None, repository: Optional[pulumi.Input[str]] = None, revision: Optional[pulumi.Input[str]] = None, @@ -1821,6 +1822,8 @@ def __init__(__self__, *, :param pulumi.Input[str] repo_type: The type of the repo, since it may not be explicit from the repo field (e.g from a URL). Values can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER Possible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`. + :param pulumi.Input[str] bitbucket_server_config: The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. :param pulumi.Input[str] github_enterprise_config: The full resource name of the github enterprise config. Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. :param pulumi.Input[str] repository: The fully qualified resource name of the Repo API repository. The fully qualified resource name of the Repo API repository. @@ -1833,6 +1836,8 @@ def __init__(__self__, *, """ pulumi.set(__self__, "path", path) pulumi.set(__self__, "repo_type", repo_type) + if bitbucket_server_config is not None: + pulumi.set(__self__, "bitbucket_server_config", bitbucket_server_config) if github_enterprise_config is not None: pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) if repository is not None: @@ -1868,6 +1873,19 @@ def repo_type(self) -> pulumi.Input[str]: def repo_type(self, value: pulumi.Input[str]): pulumi.set(self, "repo_type", value) + @property + @pulumi.getter(name="bitbucketServerConfig") + def bitbucket_server_config(self) -> Optional[pulumi.Input[str]]: + """ + The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + """ + return pulumi.get(self, "bitbucket_server_config") + + @bitbucket_server_config.setter + def bitbucket_server_config(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "bitbucket_server_config", value) + @property @pulumi.getter(name="githubEnterpriseConfig") def github_enterprise_config(self) -> Optional[pulumi.Input[str]]: @@ -2386,6 +2404,7 @@ class TriggerSourceToBuildArgs: def __init__(__self__, *, ref: pulumi.Input[str], repo_type: pulumi.Input[str], + bitbucket_server_config: Optional[pulumi.Input[str]] = None, github_enterprise_config: Optional[pulumi.Input[str]] = None, repository: Optional[pulumi.Input[str]] = None, uri: Optional[pulumi.Input[str]] = None): @@ -2394,6 +2413,8 @@ def __init__(__self__, *, :param pulumi.Input[str] repo_type: The type of the repo, since it may not be explicit from the repo field (e.g from a URL). Values can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER Possible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`. + :param pulumi.Input[str] bitbucket_server_config: The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. :param pulumi.Input[str] github_enterprise_config: The full resource name of the github enterprise config. Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. :param pulumi.Input[str] repository: The qualified resource name of the Repo API repository. @@ -2402,6 +2423,8 @@ def __init__(__self__, *, """ pulumi.set(__self__, "ref", ref) pulumi.set(__self__, "repo_type", repo_type) + if bitbucket_server_config is not None: + pulumi.set(__self__, "bitbucket_server_config", bitbucket_server_config) if github_enterprise_config is not None: pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) if repository is not None: @@ -2435,6 +2458,19 @@ def repo_type(self) -> pulumi.Input[str]: def repo_type(self, value: pulumi.Input[str]): pulumi.set(self, "repo_type", value) + @property + @pulumi.getter(name="bitbucketServerConfig") + def bitbucket_server_config(self) -> Optional[pulumi.Input[str]]: + """ + The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + """ + return pulumi.get(self, "bitbucket_server_config") + + @bitbucket_server_config.setter + def bitbucket_server_config(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "bitbucket_server_config", value) + @property @pulumi.getter(name="githubEnterpriseConfig") def github_enterprise_config(self) -> Optional[pulumi.Input[str]]: diff --git a/sdk/python/pulumi_gcp/cloudbuild/outputs.py b/sdk/python/pulumi_gcp/cloudbuild/outputs.py index 0a55812486..eb1cb81e08 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/outputs.py +++ b/sdk/python/pulumi_gcp/cloudbuild/outputs.py @@ -1819,6 +1819,8 @@ def __key_warning(key: str): suggest = None if key == "repoType": suggest = "repo_type" + elif key == "bitbucketServerConfig": + suggest = "bitbucket_server_config" elif key == "githubEnterpriseConfig": suggest = "github_enterprise_config" @@ -1836,6 +1838,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, path: str, repo_type: str, + bitbucket_server_config: Optional[str] = None, github_enterprise_config: Optional[str] = None, repository: Optional[str] = None, revision: Optional[str] = None, @@ -1845,6 +1848,8 @@ def __init__(__self__, *, :param str repo_type: The type of the repo, since it may not be explicit from the repo field (e.g from a URL). Values can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER Possible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`. + :param str bitbucket_server_config: The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. :param str github_enterprise_config: The full resource name of the github enterprise config. Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. :param str repository: The fully qualified resource name of the Repo API repository. The fully qualified resource name of the Repo API repository. @@ -1857,6 +1862,8 @@ def __init__(__self__, *, """ pulumi.set(__self__, "path", path) pulumi.set(__self__, "repo_type", repo_type) + if bitbucket_server_config is not None: + pulumi.set(__self__, "bitbucket_server_config", bitbucket_server_config) if github_enterprise_config is not None: pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) if repository is not None: @@ -1884,6 +1891,15 @@ def repo_type(self) -> str: """ return pulumi.get(self, "repo_type") + @property + @pulumi.getter(name="bitbucketServerConfig") + def bitbucket_server_config(self) -> Optional[str]: + """ + The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + """ + return pulumi.get(self, "bitbucket_server_config") + @property @pulumi.getter(name="githubEnterpriseConfig") def github_enterprise_config(self) -> Optional[str]: @@ -2417,6 +2433,8 @@ def __key_warning(key: str): suggest = None if key == "repoType": suggest = "repo_type" + elif key == "bitbucketServerConfig": + suggest = "bitbucket_server_config" elif key == "githubEnterpriseConfig": suggest = "github_enterprise_config" @@ -2434,6 +2452,7 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, ref: str, repo_type: str, + bitbucket_server_config: Optional[str] = None, github_enterprise_config: Optional[str] = None, repository: Optional[str] = None, uri: Optional[str] = None): @@ -2442,6 +2461,8 @@ def __init__(__self__, *, :param str repo_type: The type of the repo, since it may not be explicit from the repo field (e.g from a URL). Values can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER Possible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`. + :param str bitbucket_server_config: The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. :param str github_enterprise_config: The full resource name of the github enterprise config. Format: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}. :param str repository: The qualified resource name of the Repo API repository. @@ -2450,6 +2471,8 @@ def __init__(__self__, *, """ pulumi.set(__self__, "ref", ref) pulumi.set(__self__, "repo_type", repo_type) + if bitbucket_server_config is not None: + pulumi.set(__self__, "bitbucket_server_config", bitbucket_server_config) if github_enterprise_config is not None: pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) if repository is not None: @@ -2475,6 +2498,15 @@ def repo_type(self) -> str: """ return pulumi.get(self, "repo_type") + @property + @pulumi.getter(name="bitbucketServerConfig") + def bitbucket_server_config(self) -> Optional[str]: + """ + The full resource name of the bitbucket server config. + Format: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}. + """ + return pulumi.get(self, "bitbucket_server_config") + @property @pulumi.getter(name="githubEnterpriseConfig") def github_enterprise_config(self) -> Optional[str]: @@ -3435,12 +3467,14 @@ def path(self) -> str: @pulumi.output_type class GetTriggerGitFileSourceResult(dict): def __init__(__self__, *, + bitbucket_server_config: str, github_enterprise_config: str, path: str, repo_type: str, repository: str, revision: str, uri: str): + pulumi.set(__self__, "bitbucket_server_config", bitbucket_server_config) pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) pulumi.set(__self__, "path", path) pulumi.set(__self__, "repo_type", repo_type) @@ -3448,6 +3482,11 @@ def __init__(__self__, *, pulumi.set(__self__, "revision", revision) pulumi.set(__self__, "uri", uri) + @property + @pulumi.getter(name="bitbucketServerConfig") + def bitbucket_server_config(self) -> str: + return pulumi.get(self, "bitbucket_server_config") + @property @pulumi.getter(name="githubEnterpriseConfig") def github_enterprise_config(self) -> str: @@ -3685,17 +3724,24 @@ def tag(self) -> str: @pulumi.output_type class GetTriggerSourceToBuildResult(dict): def __init__(__self__, *, + bitbucket_server_config: str, github_enterprise_config: str, ref: str, repo_type: str, repository: str, uri: str): + pulumi.set(__self__, "bitbucket_server_config", bitbucket_server_config) pulumi.set(__self__, "github_enterprise_config", github_enterprise_config) pulumi.set(__self__, "ref", ref) pulumi.set(__self__, "repo_type", repo_type) pulumi.set(__self__, "repository", repository) pulumi.set(__self__, "uri", uri) + @property + @pulumi.getter(name="bitbucketServerConfig") + def bitbucket_server_config(self) -> str: + return pulumi.get(self, "bitbucket_server_config") + @property @pulumi.getter(name="githubEnterpriseConfig") def github_enterprise_config(self) -> str: diff --git a/sdk/python/pulumi_gcp/cloudbuild/trigger.py b/sdk/python/pulumi_gcp/cloudbuild/trigger.py index 33a4e0ed4d..81c3260cba 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/trigger.py +++ b/sdk/python/pulumi_gcp/cloudbuild/trigger.py @@ -1218,6 +1218,27 @@ def __init__(__self__, uri="https://hashicorp/terraform-provider-google-beta", )) ``` + ### Cloudbuild Trigger Manual Bitbucket Server + + ```python + import pulumi + import pulumi_gcp as gcp + + manual_bitbucket_trigger = gcp.cloudbuild.Trigger("manual-bitbucket-trigger", + git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs( + bitbucket_server_config="projects/myProject/locations/global/bitbucketServerConfigs/configID", + path="cloudbuild.yaml", + repo_type="BITBUCKET_SERVER", + revision="refs/heads/main", + uri="https://bbs.com/scm/stag/test-repo.git", + ), + source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs( + bitbucket_server_config="projects/myProject/locations/global/bitbucketServerConfigs/configID", + ref="refs/heads/main", + repo_type="BITBUCKET_SERVER", + uri="https://bbs.com/scm/stag/test-repo.git", + )) + ``` ### Cloudbuild Trigger Repo ```python @@ -1632,6 +1653,27 @@ def __init__(__self__, uri="https://hashicorp/terraform-provider-google-beta", )) ``` + ### Cloudbuild Trigger Manual Bitbucket Server + + ```python + import pulumi + import pulumi_gcp as gcp + + manual_bitbucket_trigger = gcp.cloudbuild.Trigger("manual-bitbucket-trigger", + git_file_source=gcp.cloudbuild.TriggerGitFileSourceArgs( + bitbucket_server_config="projects/myProject/locations/global/bitbucketServerConfigs/configID", + path="cloudbuild.yaml", + repo_type="BITBUCKET_SERVER", + revision="refs/heads/main", + uri="https://bbs.com/scm/stag/test-repo.git", + ), + source_to_build=gcp.cloudbuild.TriggerSourceToBuildArgs( + bitbucket_server_config="projects/myProject/locations/global/bitbucketServerConfigs/configID", + ref="refs/heads/main", + repo_type="BITBUCKET_SERVER", + uri="https://bbs.com/scm/stag/test-repo.git", + )) + ``` ### Cloudbuild Trigger Repo ```python diff --git a/sdk/python/pulumi_gcp/cloudrunv2/job.py b/sdk/python/pulumi_gcp/cloudrunv2/job.py index 17931195e1..9706d9353b 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/job.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/job.py @@ -238,10 +238,15 @@ def __init__(__self__, *, client: Optional[pulumi.Input[str]] = None, client_version: Optional[pulumi.Input[str]] = None, conditions: Optional[pulumi.Input[Sequence[pulumi.Input['JobConditionArgs']]]] = None, + create_time: Optional[pulumi.Input[str]] = None, + creator: Optional[pulumi.Input[str]] = None, + delete_time: Optional[pulumi.Input[str]] = None, etag: Optional[pulumi.Input[str]] = None, execution_count: Optional[pulumi.Input[int]] = None, + expire_time: Optional[pulumi.Input[str]] = None, generation: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + last_modifier: Optional[pulumi.Input[str]] = None, latest_created_executions: Optional[pulumi.Input[Sequence[pulumi.Input['JobLatestCreatedExecutionArgs']]]] = None, launch_stage: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[str]] = None, @@ -251,7 +256,8 @@ def __init__(__self__, *, reconciling: Optional[pulumi.Input[bool]] = None, template: Optional[pulumi.Input['JobTemplateArgs']] = None, terminal_conditions: Optional[pulumi.Input[Sequence[pulumi.Input['JobTerminalConditionArgs']]]] = None, - uid: Optional[pulumi.Input[str]] = None): + uid: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering Job resources. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects. @@ -270,8 +276,14 @@ def __init__(__self__, *, :param pulumi.Input[str] client_version: Arbitrary version identifier for the API client. :param pulumi.Input[Sequence[pulumi.Input['JobConditionArgs']]] conditions: The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run. Structure is documented below. + :param pulumi.Input[str] create_time: (Output) + Creation timestamp of the execution. + A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + :param pulumi.Input[str] creator: Email address of the authenticated creator. + :param pulumi.Input[str] delete_time: The deletion time. :param pulumi.Input[str] etag: A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. :param pulumi.Input[int] execution_count: Number of executions created for this job. + :param pulumi.Input[str] expire_time: For a deleted resource, the time after which it will be permamently deleted. :param pulumi.Input[str] generation: A number that monotonically increases every time the user modifies the desired state. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or @@ -284,6 +296,7 @@ def __init__(__self__, *, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. All system labels in v1 now have a corresponding field in v2 Job. + :param pulumi.Input[str] last_modifier: Email address of the last authenticated modifier. :param pulumi.Input[Sequence[pulumi.Input['JobLatestCreatedExecutionArgs']]] latest_created_executions: Name of the last created execution. Structure is documented below. :param pulumi.Input[str] launch_stage: The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/products#product-launch-stages). Cloud Run supports ALPHA, BETA, and GA. @@ -304,6 +317,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['JobTerminalConditionArgs']]] terminal_conditions: The Condition of this Job, containing its readiness status, and detailed error information in case it did not reach the desired state Structure is documented below. :param pulumi.Input[str] uid: Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. + :param pulumi.Input[str] update_time: The last-modified time. """ if annotations is not None: pulumi.set(__self__, "annotations", annotations) @@ -315,14 +329,24 @@ def __init__(__self__, *, pulumi.set(__self__, "client_version", client_version) if conditions is not None: pulumi.set(__self__, "conditions", conditions) + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if creator is not None: + pulumi.set(__self__, "creator", creator) + if delete_time is not None: + pulumi.set(__self__, "delete_time", delete_time) if etag is not None: pulumi.set(__self__, "etag", etag) if execution_count is not None: pulumi.set(__self__, "execution_count", execution_count) + if expire_time is not None: + pulumi.set(__self__, "expire_time", expire_time) if generation is not None: pulumi.set(__self__, "generation", generation) if labels is not None: pulumi.set(__self__, "labels", labels) + if last_modifier is not None: + pulumi.set(__self__, "last_modifier", last_modifier) if latest_created_executions is not None: pulumi.set(__self__, "latest_created_executions", latest_created_executions) if launch_stage is not None: @@ -343,6 +367,8 @@ def __init__(__self__, *, pulumi.set(__self__, "terminal_conditions", terminal_conditions) if uid is not None: pulumi.set(__self__, "uid", uid) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) @property @pulumi.getter @@ -415,6 +441,44 @@ def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobConditio def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['JobConditionArgs']]]]): pulumi.set(self, "conditions", value) + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + Creation timestamp of the execution. + A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter + def creator(self) -> Optional[pulumi.Input[str]]: + """ + Email address of the authenticated creator. + """ + return pulumi.get(self, "creator") + + @creator.setter + def creator(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "creator", value) + + @property + @pulumi.getter(name="deleteTime") + def delete_time(self) -> Optional[pulumi.Input[str]]: + """ + The deletion time. + """ + return pulumi.get(self, "delete_time") + + @delete_time.setter + def delete_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "delete_time", value) + @property @pulumi.getter def etag(self) -> Optional[pulumi.Input[str]]: @@ -439,6 +503,18 @@ def execution_count(self) -> Optional[pulumi.Input[int]]: def execution_count(self, value: Optional[pulumi.Input[int]]): pulumi.set(self, "execution_count", value) + @property + @pulumi.getter(name="expireTime") + def expire_time(self) -> Optional[pulumi.Input[str]]: + """ + For a deleted resource, the time after which it will be permamently deleted. + """ + return pulumi.get(self, "expire_time") + + @expire_time.setter + def expire_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "expire_time", value) + @property @pulumi.getter def generation(self) -> Optional[pulumi.Input[str]]: @@ -473,6 +549,18 @@ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "labels", value) + @property + @pulumi.getter(name="lastModifier") + def last_modifier(self) -> Optional[pulumi.Input[str]]: + """ + Email address of the last authenticated modifier. + """ + return pulumi.get(self, "last_modifier") + + @last_modifier.setter + def last_modifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_modifier", value) + @property @pulumi.getter(name="latestCreatedExecutions") def latest_created_executions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['JobLatestCreatedExecutionArgs']]]]: @@ -603,6 +691,18 @@ def uid(self) -> Optional[pulumi.Input[str]]: def uid(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "uid", value) + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + The last-modified time. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + class Job(pulumi.CustomResource): @overload @@ -1145,14 +1245,20 @@ def _internal_init(__self__, raise TypeError("Missing required property 'template'") __props__.__dict__["template"] = template __props__.__dict__["conditions"] = None + __props__.__dict__["create_time"] = None + __props__.__dict__["creator"] = None + __props__.__dict__["delete_time"] = None __props__.__dict__["etag"] = None __props__.__dict__["execution_count"] = None + __props__.__dict__["expire_time"] = None __props__.__dict__["generation"] = None + __props__.__dict__["last_modifier"] = None __props__.__dict__["latest_created_executions"] = None __props__.__dict__["observed_generation"] = None __props__.__dict__["reconciling"] = None __props__.__dict__["terminal_conditions"] = None __props__.__dict__["uid"] = None + __props__.__dict__["update_time"] = None super(Job, __self__).__init__( 'gcp:cloudrunv2/job:Job', resource_name, @@ -1168,10 +1274,15 @@ def get(resource_name: str, client: Optional[pulumi.Input[str]] = None, client_version: Optional[pulumi.Input[str]] = None, conditions: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['JobConditionArgs']]]]] = None, + create_time: Optional[pulumi.Input[str]] = None, + creator: Optional[pulumi.Input[str]] = None, + delete_time: Optional[pulumi.Input[str]] = None, etag: Optional[pulumi.Input[str]] = None, execution_count: Optional[pulumi.Input[int]] = None, + expire_time: Optional[pulumi.Input[str]] = None, generation: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + last_modifier: Optional[pulumi.Input[str]] = None, latest_created_executions: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['JobLatestCreatedExecutionArgs']]]]] = None, launch_stage: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[str]] = None, @@ -1181,7 +1292,8 @@ def get(resource_name: str, reconciling: Optional[pulumi.Input[bool]] = None, template: Optional[pulumi.Input[pulumi.InputType['JobTemplateArgs']]] = None, terminal_conditions: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['JobTerminalConditionArgs']]]]] = None, - uid: Optional[pulumi.Input[str]] = None) -> 'Job': + uid: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None) -> 'Job': """ Get an existing Job resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -1205,8 +1317,14 @@ def get(resource_name: str, :param pulumi.Input[str] client_version: Arbitrary version identifier for the API client. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['JobConditionArgs']]]] conditions: The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Job does not reach its desired state. See comments in reconciling for additional information on `reconciliation` process in Cloud Run. Structure is documented below. + :param pulumi.Input[str] create_time: (Output) + Creation timestamp of the execution. + A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + :param pulumi.Input[str] creator: Email address of the authenticated creator. + :param pulumi.Input[str] delete_time: The deletion time. :param pulumi.Input[str] etag: A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. :param pulumi.Input[int] execution_count: Number of executions created for this job. + :param pulumi.Input[str] expire_time: For a deleted resource, the time after which it will be permamently deleted. :param pulumi.Input[str] generation: A number that monotonically increases every time the user modifies the desired state. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or @@ -1219,6 +1337,7 @@ def get(resource_name: str, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. All system labels in v1 now have a corresponding field in v2 Job. + :param pulumi.Input[str] last_modifier: Email address of the last authenticated modifier. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['JobLatestCreatedExecutionArgs']]]] latest_created_executions: Name of the last created execution. Structure is documented below. :param pulumi.Input[str] launch_stage: The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/products#product-launch-stages). Cloud Run supports ALPHA, BETA, and GA. @@ -1239,6 +1358,7 @@ def get(resource_name: str, :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['JobTerminalConditionArgs']]]] terminal_conditions: The Condition of this Job, containing its readiness status, and detailed error information in case it did not reach the desired state Structure is documented below. :param pulumi.Input[str] uid: Server assigned unique identifier for the Execution. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. + :param pulumi.Input[str] update_time: The last-modified time. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -1249,10 +1369,15 @@ def get(resource_name: str, __props__.__dict__["client"] = client __props__.__dict__["client_version"] = client_version __props__.__dict__["conditions"] = conditions + __props__.__dict__["create_time"] = create_time + __props__.__dict__["creator"] = creator + __props__.__dict__["delete_time"] = delete_time __props__.__dict__["etag"] = etag __props__.__dict__["execution_count"] = execution_count + __props__.__dict__["expire_time"] = expire_time __props__.__dict__["generation"] = generation __props__.__dict__["labels"] = labels + __props__.__dict__["last_modifier"] = last_modifier __props__.__dict__["latest_created_executions"] = latest_created_executions __props__.__dict__["launch_stage"] = launch_stage __props__.__dict__["location"] = location @@ -1263,6 +1388,7 @@ def get(resource_name: str, __props__.__dict__["template"] = template __props__.__dict__["terminal_conditions"] = terminal_conditions __props__.__dict__["uid"] = uid + __props__.__dict__["update_time"] = update_time return Job(resource_name, opts=opts, __props__=__props__) @property @@ -1316,6 +1442,32 @@ def conditions(self) -> pulumi.Output[Sequence['outputs.JobCondition']]: """ return pulumi.get(self, "conditions") + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + (Output) + Creation timestamp of the execution. + A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z". + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter + def creator(self) -> pulumi.Output[str]: + """ + Email address of the authenticated creator. + """ + return pulumi.get(self, "creator") + + @property + @pulumi.getter(name="deleteTime") + def delete_time(self) -> pulumi.Output[str]: + """ + The deletion time. + """ + return pulumi.get(self, "delete_time") + @property @pulumi.getter def etag(self) -> pulumi.Output[str]: @@ -1332,6 +1484,14 @@ def execution_count(self) -> pulumi.Output[int]: """ return pulumi.get(self, "execution_count") + @property + @pulumi.getter(name="expireTime") + def expire_time(self) -> pulumi.Output[str]: + """ + For a deleted resource, the time after which it will be permamently deleted. + """ + return pulumi.get(self, "expire_time") + @property @pulumi.getter def generation(self) -> pulumi.Output[str]: @@ -1358,6 +1518,14 @@ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: """ return pulumi.get(self, "labels") + @property + @pulumi.getter(name="lastModifier") + def last_modifier(self) -> pulumi.Output[str]: + """ + Email address of the last authenticated modifier. + """ + return pulumi.get(self, "last_modifier") + @property @pulumi.getter(name="latestCreatedExecutions") def latest_created_executions(self) -> pulumi.Output[Sequence['outputs.JobLatestCreatedExecution']]: @@ -1448,3 +1616,11 @@ def uid(self) -> pulumi.Output[str]: """ return pulumi.get(self, "uid") + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + The last-modified time. + """ + return pulumi.get(self, "update_time") + diff --git a/sdk/python/pulumi_gcp/cloudrunv2/service.py b/sdk/python/pulumi_gcp/cloudrunv2/service.py index 4d6763d7ef..98e606e7b0 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/service.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/service.py @@ -308,12 +308,17 @@ def __init__(__self__, *, client: Optional[pulumi.Input[str]] = None, client_version: Optional[pulumi.Input[str]] = None, conditions: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceConditionArgs']]]] = None, + create_time: Optional[pulumi.Input[str]] = None, + creator: Optional[pulumi.Input[str]] = None, custom_audiences: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + delete_time: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, etag: Optional[pulumi.Input[str]] = None, + expire_time: Optional[pulumi.Input[str]] = None, generation: Optional[pulumi.Input[str]] = None, ingress: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + last_modifier: Optional[pulumi.Input[str]] = None, latest_created_revision: Optional[pulumi.Input[str]] = None, latest_ready_revision: Optional[pulumi.Input[str]] = None, launch_stage: Optional[pulumi.Input[str]] = None, @@ -327,6 +332,7 @@ def __init__(__self__, *, traffic_statuses: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceTrafficStatusArgs']]]] = None, traffics: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceTrafficArgs']]]] = None, uid: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None, uri: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering Service resources. @@ -346,11 +352,15 @@ def __init__(__self__, *, :param pulumi.Input[str] client_version: Arbitrary version identifier for the API client. :param pulumi.Input[Sequence[pulumi.Input['ServiceConditionArgs']]] conditions: The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run. Structure is documented below. + :param pulumi.Input[str] create_time: The creation time. + :param pulumi.Input[str] creator: Email address of the authenticated creator. :param pulumi.Input[Sequence[pulumi.Input[str]]] custom_audiences: One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see https://cloud.google.com/run/docs/configuring/custom-audiences. + :param pulumi.Input[str] delete_time: The deletion time. :param pulumi.Input[str] description: User-provided description of the Service. This field currently has a 512-character limit. :param pulumi.Input[str] etag: A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. + :param pulumi.Input[str] expire_time: For a deleted resource, the time after which it will be permamently deleted. :param pulumi.Input[str] generation: A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. :param pulumi.Input[str] ingress: Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. Possible values are: `INGRESS_TRAFFIC_ALL`, `INGRESS_TRAFFIC_INTERNAL_ONLY`, `INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER`. @@ -364,6 +374,7 @@ def __init__(__self__, *, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. All system labels in v1 now have a corresponding field in v2 Service. + :param pulumi.Input[str] last_modifier: Email address of the last authenticated modifier. :param pulumi.Input[str] latest_created_revision: Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. :param pulumi.Input[str] latest_ready_revision: Name of the latest revision that is serving traffic. See comments in reconciling for additional information on reconciliation process in Cloud Run. :param pulumi.Input[str] launch_stage: The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/products#product-launch-stages). Cloud Run supports ALPHA, BETA, and GA. @@ -388,6 +399,7 @@ def __init__(__self__, *, :param pulumi.Input[Sequence[pulumi.Input['ServiceTrafficArgs']]] traffics: Specifies how to distribute traffic over a collection of Revisions belonging to the Service. If traffic is empty or not provided, defaults to 100% traffic to the latest Ready Revision. Structure is documented below. :param pulumi.Input[str] uid: Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. + :param pulumi.Input[str] update_time: The last-modified time. :param pulumi.Input[str] uri: (Output) Displays the target URI. """ @@ -401,18 +413,28 @@ def __init__(__self__, *, pulumi.set(__self__, "client_version", client_version) if conditions is not None: pulumi.set(__self__, "conditions", conditions) + if create_time is not None: + pulumi.set(__self__, "create_time", create_time) + if creator is not None: + pulumi.set(__self__, "creator", creator) if custom_audiences is not None: pulumi.set(__self__, "custom_audiences", custom_audiences) + if delete_time is not None: + pulumi.set(__self__, "delete_time", delete_time) if description is not None: pulumi.set(__self__, "description", description) if etag is not None: pulumi.set(__self__, "etag", etag) + if expire_time is not None: + pulumi.set(__self__, "expire_time", expire_time) if generation is not None: pulumi.set(__self__, "generation", generation) if ingress is not None: pulumi.set(__self__, "ingress", ingress) if labels is not None: pulumi.set(__self__, "labels", labels) + if last_modifier is not None: + pulumi.set(__self__, "last_modifier", last_modifier) if latest_created_revision is not None: pulumi.set(__self__, "latest_created_revision", latest_created_revision) if latest_ready_revision is not None: @@ -439,6 +461,8 @@ def __init__(__self__, *, pulumi.set(__self__, "traffics", traffics) if uid is not None: pulumi.set(__self__, "uid", uid) + if update_time is not None: + pulumi.set(__self__, "update_time", update_time) if uri is not None: pulumi.set(__self__, "uri", uri) @@ -513,6 +537,30 @@ def conditions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServiceCond def conditions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServiceConditionArgs']]]]): pulumi.set(self, "conditions", value) + @property + @pulumi.getter(name="createTime") + def create_time(self) -> Optional[pulumi.Input[str]]: + """ + The creation time. + """ + return pulumi.get(self, "create_time") + + @create_time.setter + def create_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "create_time", value) + + @property + @pulumi.getter + def creator(self) -> Optional[pulumi.Input[str]]: + """ + Email address of the authenticated creator. + """ + return pulumi.get(self, "creator") + + @creator.setter + def creator(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "creator", value) + @property @pulumi.getter(name="customAudiences") def custom_audiences(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -527,6 +575,18 @@ def custom_audiences(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]] def custom_audiences(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "custom_audiences", value) + @property + @pulumi.getter(name="deleteTime") + def delete_time(self) -> Optional[pulumi.Input[str]]: + """ + The deletion time. + """ + return pulumi.get(self, "delete_time") + + @delete_time.setter + def delete_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "delete_time", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -551,6 +611,18 @@ def etag(self) -> Optional[pulumi.Input[str]]: def etag(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "etag", value) + @property + @pulumi.getter(name="expireTime") + def expire_time(self) -> Optional[pulumi.Input[str]]: + """ + For a deleted resource, the time after which it will be permamently deleted. + """ + return pulumi.get(self, "expire_time") + + @expire_time.setter + def expire_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "expire_time", value) + @property @pulumi.getter def generation(self) -> Optional[pulumi.Input[str]]: @@ -597,6 +669,18 @@ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): pulumi.set(self, "labels", value) + @property + @pulumi.getter(name="lastModifier") + def last_modifier(self) -> Optional[pulumi.Input[str]]: + """ + Email address of the last authenticated modifier. + """ + return pulumi.get(self, "last_modifier") + + @last_modifier.setter + def last_modifier(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "last_modifier", value) + @property @pulumi.getter(name="latestCreatedRevision") def latest_created_revision(self) -> Optional[pulumi.Input[str]]: @@ -764,6 +848,18 @@ def uid(self) -> Optional[pulumi.Input[str]]: def uid(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "uid", value) + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> Optional[pulumi.Input[str]]: + """ + The last-modified time. + """ + return pulumi.get(self, "update_time") + + @update_time.setter + def update_time(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "update_time", value) + @property @pulumi.getter def uri(self) -> Optional[pulumi.Input[str]]: @@ -1414,8 +1510,13 @@ def _internal_init(__self__, __props__.__dict__["template"] = template __props__.__dict__["traffics"] = traffics __props__.__dict__["conditions"] = None + __props__.__dict__["create_time"] = None + __props__.__dict__["creator"] = None + __props__.__dict__["delete_time"] = None __props__.__dict__["etag"] = None + __props__.__dict__["expire_time"] = None __props__.__dict__["generation"] = None + __props__.__dict__["last_modifier"] = None __props__.__dict__["latest_created_revision"] = None __props__.__dict__["latest_ready_revision"] = None __props__.__dict__["observed_generation"] = None @@ -1423,6 +1524,7 @@ def _internal_init(__self__, __props__.__dict__["terminal_conditions"] = None __props__.__dict__["traffic_statuses"] = None __props__.__dict__["uid"] = None + __props__.__dict__["update_time"] = None __props__.__dict__["uri"] = None super(Service, __self__).__init__( 'gcp:cloudrunv2/service:Service', @@ -1439,12 +1541,17 @@ def get(resource_name: str, client: Optional[pulumi.Input[str]] = None, client_version: Optional[pulumi.Input[str]] = None, conditions: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceConditionArgs']]]]] = None, + create_time: Optional[pulumi.Input[str]] = None, + creator: Optional[pulumi.Input[str]] = None, custom_audiences: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + delete_time: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, etag: Optional[pulumi.Input[str]] = None, + expire_time: Optional[pulumi.Input[str]] = None, generation: Optional[pulumi.Input[str]] = None, ingress: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, + last_modifier: Optional[pulumi.Input[str]] = None, latest_created_revision: Optional[pulumi.Input[str]] = None, latest_ready_revision: Optional[pulumi.Input[str]] = None, launch_stage: Optional[pulumi.Input[str]] = None, @@ -1458,6 +1565,7 @@ def get(resource_name: str, traffic_statuses: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceTrafficStatusArgs']]]]] = None, traffics: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceTrafficArgs']]]]] = None, uid: Optional[pulumi.Input[str]] = None, + update_time: Optional[pulumi.Input[str]] = None, uri: Optional[pulumi.Input[str]] = None) -> 'Service': """ Get an existing Service resource's state with the given name, id, and optional extra @@ -1482,11 +1590,15 @@ def get(resource_name: str, :param pulumi.Input[str] client_version: Arbitrary version identifier for the API client. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceConditionArgs']]]] conditions: The Conditions of all other associated sub-resources. They contain additional diagnostics information in case the Service does not reach its Serving state. See comments in reconciling for additional information on reconciliation process in Cloud Run. Structure is documented below. + :param pulumi.Input[str] create_time: The creation time. + :param pulumi.Input[str] creator: Email address of the authenticated creator. :param pulumi.Input[Sequence[pulumi.Input[str]]] custom_audiences: One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. The custom audiences are encoded in the token and used to authenticate requests. For more information, see https://cloud.google.com/run/docs/configuring/custom-audiences. + :param pulumi.Input[str] delete_time: The deletion time. :param pulumi.Input[str] description: User-provided description of the Service. This field currently has a 512-character limit. :param pulumi.Input[str] etag: A system-generated fingerprint for this version of the resource. May be used to detect modification conflict during updates. + :param pulumi.Input[str] expire_time: For a deleted resource, the time after which it will be permamently deleted. :param pulumi.Input[str] generation: A number that monotonically increases every time the user modifies the desired state. Please note that unlike v1, this is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer. :param pulumi.Input[str] ingress: Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. Possible values are: `INGRESS_TRAFFIC_ALL`, `INGRESS_TRAFFIC_INTERNAL_ONLY`, `INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER`. @@ -1500,6 +1612,7 @@ def get(resource_name: str, environment, state, etc. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels. Cloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected. All system labels in v1 now have a corresponding field in v2 Service. + :param pulumi.Input[str] last_modifier: Email address of the last authenticated modifier. :param pulumi.Input[str] latest_created_revision: Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. :param pulumi.Input[str] latest_ready_revision: Name of the latest revision that is serving traffic. See comments in reconciling for additional information on reconciliation process in Cloud Run. :param pulumi.Input[str] launch_stage: The launch stage as defined by [Google Cloud Platform Launch Stages](https://cloud.google.com/products#product-launch-stages). Cloud Run supports ALPHA, BETA, and GA. @@ -1524,6 +1637,7 @@ def get(resource_name: str, :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ServiceTrafficArgs']]]] traffics: Specifies how to distribute traffic over a collection of Revisions belonging to the Service. If traffic is empty or not provided, defaults to 100% traffic to the latest Ready Revision. Structure is documented below. :param pulumi.Input[str] uid: Server assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted. + :param pulumi.Input[str] update_time: The last-modified time. :param pulumi.Input[str] uri: (Output) Displays the target URI. """ @@ -1536,12 +1650,17 @@ def get(resource_name: str, __props__.__dict__["client"] = client __props__.__dict__["client_version"] = client_version __props__.__dict__["conditions"] = conditions + __props__.__dict__["create_time"] = create_time + __props__.__dict__["creator"] = creator __props__.__dict__["custom_audiences"] = custom_audiences + __props__.__dict__["delete_time"] = delete_time __props__.__dict__["description"] = description __props__.__dict__["etag"] = etag + __props__.__dict__["expire_time"] = expire_time __props__.__dict__["generation"] = generation __props__.__dict__["ingress"] = ingress __props__.__dict__["labels"] = labels + __props__.__dict__["last_modifier"] = last_modifier __props__.__dict__["latest_created_revision"] = latest_created_revision __props__.__dict__["latest_ready_revision"] = latest_ready_revision __props__.__dict__["launch_stage"] = launch_stage @@ -1555,6 +1674,7 @@ def get(resource_name: str, __props__.__dict__["traffic_statuses"] = traffic_statuses __props__.__dict__["traffics"] = traffics __props__.__dict__["uid"] = uid + __props__.__dict__["update_time"] = update_time __props__.__dict__["uri"] = uri return Service(resource_name, opts=opts, __props__=__props__) @@ -1609,6 +1729,22 @@ def conditions(self) -> pulumi.Output[Sequence['outputs.ServiceCondition']]: """ return pulumi.get(self, "conditions") + @property + @pulumi.getter(name="createTime") + def create_time(self) -> pulumi.Output[str]: + """ + The creation time. + """ + return pulumi.get(self, "create_time") + + @property + @pulumi.getter + def creator(self) -> pulumi.Output[str]: + """ + Email address of the authenticated creator. + """ + return pulumi.get(self, "creator") + @property @pulumi.getter(name="customAudiences") def custom_audiences(self) -> pulumi.Output[Optional[Sequence[str]]]: @@ -1619,6 +1755,14 @@ def custom_audiences(self) -> pulumi.Output[Optional[Sequence[str]]]: """ return pulumi.get(self, "custom_audiences") + @property + @pulumi.getter(name="deleteTime") + def delete_time(self) -> pulumi.Output[str]: + """ + The deletion time. + """ + return pulumi.get(self, "delete_time") + @property @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: @@ -1635,6 +1779,14 @@ def etag(self) -> pulumi.Output[str]: """ return pulumi.get(self, "etag") + @property + @pulumi.getter(name="expireTime") + def expire_time(self) -> pulumi.Output[str]: + """ + For a deleted resource, the time after which it will be permamently deleted. + """ + return pulumi.get(self, "expire_time") + @property @pulumi.getter def generation(self) -> pulumi.Output[str]: @@ -1669,6 +1821,14 @@ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]: """ return pulumi.get(self, "labels") + @property + @pulumi.getter(name="lastModifier") + def last_modifier(self) -> pulumi.Output[str]: + """ + Email address of the last authenticated modifier. + """ + return pulumi.get(self, "last_modifier") + @property @pulumi.getter(name="latestCreatedRevision") def latest_created_revision(self) -> pulumi.Output[str]: @@ -1784,6 +1944,14 @@ def uid(self) -> pulumi.Output[str]: """ return pulumi.get(self, "uid") + @property + @pulumi.getter(name="updateTime") + def update_time(self) -> pulumi.Output[str]: + """ + The last-modified time. + """ + return pulumi.get(self, "update_time") + @property @pulumi.getter def uri(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/composer/_inputs.py b/sdk/python/pulumi_gcp/composer/_inputs.py index 30710ec0fc..29d30da9d9 100644 --- a/sdk/python/pulumi_gcp/composer/_inputs.py +++ b/sdk/python/pulumi_gcp/composer/_inputs.py @@ -576,6 +576,7 @@ def __init__(__self__, *, cloud_composer_connection_subnetwork: Optional[pulumi.Input[str]] = None, cloud_composer_network_ipv4_cidr_block: Optional[pulumi.Input[str]] = None, cloud_sql_ipv4_cidr_block: Optional[pulumi.Input[str]] = None, + connection_type: Optional[pulumi.Input[str]] = None, enable_private_endpoint: Optional[pulumi.Input[bool]] = None, enable_privately_used_public_ips: Optional[pulumi.Input[bool]] = None, master_ipv4_cidr_block: Optional[pulumi.Input[str]] = None, @@ -586,6 +587,8 @@ def __init__(__self__, *, pulumi.set(__self__, "cloud_composer_network_ipv4_cidr_block", cloud_composer_network_ipv4_cidr_block) if cloud_sql_ipv4_cidr_block is not None: pulumi.set(__self__, "cloud_sql_ipv4_cidr_block", cloud_sql_ipv4_cidr_block) + if connection_type is not None: + pulumi.set(__self__, "connection_type", connection_type) if enable_private_endpoint is not None: pulumi.set(__self__, "enable_private_endpoint", enable_private_endpoint) if enable_privately_used_public_ips is not None: @@ -622,6 +625,15 @@ def cloud_sql_ipv4_cidr_block(self) -> Optional[pulumi.Input[str]]: def cloud_sql_ipv4_cidr_block(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "cloud_sql_ipv4_cidr_block", value) + @property + @pulumi.getter(name="connectionType") + def connection_type(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "connection_type") + + @connection_type.setter + def connection_type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "connection_type", value) + @property @pulumi.getter(name="enablePrivateEndpoint") def enable_private_endpoint(self) -> Optional[pulumi.Input[bool]]: diff --git a/sdk/python/pulumi_gcp/composer/outputs.py b/sdk/python/pulumi_gcp/composer/outputs.py index e024cd2bf8..9b6e9b7ed5 100644 --- a/sdk/python/pulumi_gcp/composer/outputs.py +++ b/sdk/python/pulumi_gcp/composer/outputs.py @@ -628,6 +628,8 @@ def __key_warning(key: str): suggest = "cloud_composer_network_ipv4_cidr_block" elif key == "cloudSqlIpv4CidrBlock": suggest = "cloud_sql_ipv4_cidr_block" + elif key == "connectionType": + suggest = "connection_type" elif key == "enablePrivateEndpoint": suggest = "enable_private_endpoint" elif key == "enablePrivatelyUsedPublicIps": @@ -652,6 +654,7 @@ def __init__(__self__, *, cloud_composer_connection_subnetwork: Optional[str] = None, cloud_composer_network_ipv4_cidr_block: Optional[str] = None, cloud_sql_ipv4_cidr_block: Optional[str] = None, + connection_type: Optional[str] = None, enable_private_endpoint: Optional[bool] = None, enable_privately_used_public_ips: Optional[bool] = None, master_ipv4_cidr_block: Optional[str] = None, @@ -662,6 +665,8 @@ def __init__(__self__, *, pulumi.set(__self__, "cloud_composer_network_ipv4_cidr_block", cloud_composer_network_ipv4_cidr_block) if cloud_sql_ipv4_cidr_block is not None: pulumi.set(__self__, "cloud_sql_ipv4_cidr_block", cloud_sql_ipv4_cidr_block) + if connection_type is not None: + pulumi.set(__self__, "connection_type", connection_type) if enable_private_endpoint is not None: pulumi.set(__self__, "enable_private_endpoint", enable_private_endpoint) if enable_privately_used_public_ips is not None: @@ -686,6 +691,11 @@ def cloud_composer_network_ipv4_cidr_block(self) -> Optional[str]: def cloud_sql_ipv4_cidr_block(self) -> Optional[str]: return pulumi.get(self, "cloud_sql_ipv4_cidr_block") + @property + @pulumi.getter(name="connectionType") + def connection_type(self) -> Optional[str]: + return pulumi.get(self, "connection_type") + @property @pulumi.getter(name="enablePrivateEndpoint") def enable_private_endpoint(self) -> Optional[bool]: @@ -1584,6 +1594,7 @@ def __init__(__self__, *, cloud_composer_connection_subnetwork: str, cloud_composer_network_ipv4_cidr_block: str, cloud_sql_ipv4_cidr_block: str, + connection_type: str, enable_private_endpoint: bool, enable_privately_used_public_ips: bool, master_ipv4_cidr_block: str, @@ -1591,6 +1602,7 @@ def __init__(__self__, *, pulumi.set(__self__, "cloud_composer_connection_subnetwork", cloud_composer_connection_subnetwork) pulumi.set(__self__, "cloud_composer_network_ipv4_cidr_block", cloud_composer_network_ipv4_cidr_block) pulumi.set(__self__, "cloud_sql_ipv4_cidr_block", cloud_sql_ipv4_cidr_block) + pulumi.set(__self__, "connection_type", connection_type) pulumi.set(__self__, "enable_private_endpoint", enable_private_endpoint) pulumi.set(__self__, "enable_privately_used_public_ips", enable_privately_used_public_ips) pulumi.set(__self__, "master_ipv4_cidr_block", master_ipv4_cidr_block) @@ -1611,6 +1623,11 @@ def cloud_composer_network_ipv4_cidr_block(self) -> str: def cloud_sql_ipv4_cidr_block(self) -> str: return pulumi.get(self, "cloud_sql_ipv4_cidr_block") + @property + @pulumi.getter(name="connectionType") + def connection_type(self) -> str: + return pulumi.get(self, "connection_type") + @property @pulumi.getter(name="enablePrivateEndpoint") def enable_private_endpoint(self) -> bool: diff --git a/sdk/python/pulumi_gcp/compute/__init__.py b/sdk/python/pulumi_gcp/compute/__init__.py index 8591782579..b1a8fe2b46 100644 --- a/sdk/python/pulumi_gcp/compute/__init__.py +++ b/sdk/python/pulumi_gcp/compute/__init__.py @@ -151,6 +151,7 @@ from .region_network_firewall_policy_rule import * from .region_per_instance_config import * from .region_security_policy import * +from .region_security_policy_rule import * from .region_ssl_certificate import * from .region_ssl_policy import * from .region_target_http_proxy import * diff --git a/sdk/python/pulumi_gcp/compute/_inputs.py b/sdk/python/pulumi_gcp/compute/_inputs.py index f6c9741f85..c02056c14f 100644 --- a/sdk/python/pulumi_gcp/compute/_inputs.py +++ b/sdk/python/pulumi_gcp/compute/_inputs.py @@ -311,6 +311,11 @@ 'RegionPerInstanceConfigPreservedStateInternalIpArgs', 'RegionPerInstanceConfigPreservedStateInternalIpIpAddressArgs', 'RegionSecurityPolicyDdosProtectionConfigArgs', + 'RegionSecurityPolicyRuleMatchArgs', + 'RegionSecurityPolicyRuleMatchConfigArgs', + 'RegionSecurityPolicyRuleNetworkMatchArgs', + 'RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs', + 'RegionSecurityPolicyUserDefinedFieldArgs', 'RegionUrlMapDefaultRouteActionArgs', 'RegionUrlMapDefaultRouteActionCorsPolicyArgs', 'RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs', @@ -11140,6 +11145,7 @@ def __init__(__self__, *, interface: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, mode: Optional[pulumi.Input[str]] = None, + provisioned_iops: Optional[pulumi.Input[int]] = None, resource_policies: Optional[pulumi.Input[str]] = None, source: Optional[pulumi.Input[str]] = None, source_image: Optional[pulumi.Input[str]] = None, @@ -11226,6 +11232,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if mode is not None: pulumi.set(__self__, "mode", mode) + if provisioned_iops is not None: + pulumi.set(__self__, "provisioned_iops", provisioned_iops) if resource_policies is not None: pulumi.set(__self__, "resource_policies", resource_policies) if source is not None: @@ -11382,6 +11390,15 @@ def mode(self) -> Optional[pulumi.Input[str]]: def mode(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "mode", value) + @property + @pulumi.getter(name="provisionedIops") + def provisioned_iops(self) -> Optional[pulumi.Input[int]]: + return pulumi.get(self, "provisioned_iops") + + @provisioned_iops.setter + def provisioned_iops(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "provisioned_iops", value) + @property @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Optional[pulumi.Input[str]]: @@ -19005,6 +19022,7 @@ def __init__(__self__, *, interface: Optional[pulumi.Input[str]] = None, labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, mode: Optional[pulumi.Input[str]] = None, + provisioned_iops: Optional[pulumi.Input[int]] = None, resource_policies: Optional[pulumi.Input[str]] = None, source: Optional[pulumi.Input[str]] = None, source_image: Optional[pulumi.Input[str]] = None, @@ -19091,6 +19109,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if mode is not None: pulumi.set(__self__, "mode", mode) + if provisioned_iops is not None: + pulumi.set(__self__, "provisioned_iops", provisioned_iops) if resource_policies is not None: pulumi.set(__self__, "resource_policies", resource_policies) if source is not None: @@ -19247,6 +19267,15 @@ def mode(self) -> Optional[pulumi.Input[str]]: def mode(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "mode", value) + @property + @pulumi.getter(name="provisionedIops") + def provisioned_iops(self) -> Optional[pulumi.Input[int]]: + return pulumi.get(self, "provisioned_iops") + + @provisioned_iops.setter + def provisioned_iops(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "provisioned_iops", value) + @property @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Optional[pulumi.Input[str]]: @@ -21412,6 +21441,352 @@ def ddos_protection(self, value: pulumi.Input[str]): pulumi.set(self, "ddos_protection", value) +@pulumi.input_type +class RegionSecurityPolicyRuleMatchArgs: + def __init__(__self__, *, + config: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs']] = None, + versioned_expr: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs'] config: The configuration options available when specifying versionedExpr. + This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + Structure is documented below. + :param pulumi.Input[str] versioned_expr: Preconfigured versioned expression. If this field is specified, config must also be specified. + Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + Possible values are: `SRC_IPS_V1`. + """ + if config is not None: + pulumi.set(__self__, "config", config) + if versioned_expr is not None: + pulumi.set(__self__, "versioned_expr", versioned_expr) + + @property + @pulumi.getter + def config(self) -> Optional[pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs']]: + """ + The configuration options available when specifying versionedExpr. + This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + Structure is documented below. + """ + return pulumi.get(self, "config") + + @config.setter + def config(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs']]): + pulumi.set(self, "config", value) + + @property + @pulumi.getter(name="versionedExpr") + def versioned_expr(self) -> Optional[pulumi.Input[str]]: + """ + Preconfigured versioned expression. If this field is specified, config must also be specified. + Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + Possible values are: `SRC_IPS_V1`. + """ + return pulumi.get(self, "versioned_expr") + + @versioned_expr.setter + def versioned_expr(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "versioned_expr", value) + + +@pulumi.input_type +class RegionSecurityPolicyRuleMatchConfigArgs: + def __init__(__self__, *, + src_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] src_ip_ranges: CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + """ + if src_ip_ranges is not None: + pulumi.set(__self__, "src_ip_ranges", src_ip_ranges) + + @property + @pulumi.getter(name="srcIpRanges") + def src_ip_ranges(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + """ + return pulumi.get(self, "src_ip_ranges") + + @src_ip_ranges.setter + def src_ip_ranges(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "src_ip_ranges", value) + + +@pulumi.input_type +class RegionSecurityPolicyRuleNetworkMatchArgs: + def __init__(__self__, *, + dest_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + dest_ports: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + ip_protocols: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + src_asns: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]] = None, + src_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + src_ports: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + src_region_codes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + user_defined_fields: Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs']]]] = None): + """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] dest_ip_ranges: Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + :param pulumi.Input[Sequence[pulumi.Input[str]]] dest_ports: Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + :param pulumi.Input[Sequence[pulumi.Input[str]]] ip_protocols: IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + :param pulumi.Input[Sequence[pulumi.Input[int]]] src_asns: BGP Autonomous System Number associated with the source IP address. + :param pulumi.Input[Sequence[pulumi.Input[str]]] src_ip_ranges: Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + :param pulumi.Input[Sequence[pulumi.Input[str]]] src_ports: Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + :param pulumi.Input[Sequence[pulumi.Input[str]]] src_region_codes: Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + :param pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs']]] user_defined_fields: User-defined fields. Each element names a defined field and lists the matching values for that field. + Structure is documented below. + """ + if dest_ip_ranges is not None: + pulumi.set(__self__, "dest_ip_ranges", dest_ip_ranges) + if dest_ports is not None: + pulumi.set(__self__, "dest_ports", dest_ports) + if ip_protocols is not None: + pulumi.set(__self__, "ip_protocols", ip_protocols) + if src_asns is not None: + pulumi.set(__self__, "src_asns", src_asns) + if src_ip_ranges is not None: + pulumi.set(__self__, "src_ip_ranges", src_ip_ranges) + if src_ports is not None: + pulumi.set(__self__, "src_ports", src_ports) + if src_region_codes is not None: + pulumi.set(__self__, "src_region_codes", src_region_codes) + if user_defined_fields is not None: + pulumi.set(__self__, "user_defined_fields", user_defined_fields) + + @property + @pulumi.getter(name="destIpRanges") + def dest_ip_ranges(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + """ + return pulumi.get(self, "dest_ip_ranges") + + @dest_ip_ranges.setter + def dest_ip_ranges(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "dest_ip_ranges", value) + + @property + @pulumi.getter(name="destPorts") + def dest_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + """ + return pulumi.get(self, "dest_ports") + + @dest_ports.setter + def dest_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "dest_ports", value) + + @property + @pulumi.getter(name="ipProtocols") + def ip_protocols(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + """ + return pulumi.get(self, "ip_protocols") + + @ip_protocols.setter + def ip_protocols(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "ip_protocols", value) + + @property + @pulumi.getter(name="srcAsns") + def src_asns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[int]]]]: + """ + BGP Autonomous System Number associated with the source IP address. + """ + return pulumi.get(self, "src_asns") + + @src_asns.setter + def src_asns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[int]]]]): + pulumi.set(self, "src_asns", value) + + @property + @pulumi.getter(name="srcIpRanges") + def src_ip_ranges(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + """ + return pulumi.get(self, "src_ip_ranges") + + @src_ip_ranges.setter + def src_ip_ranges(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "src_ip_ranges", value) + + @property + @pulumi.getter(name="srcPorts") + def src_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + """ + return pulumi.get(self, "src_ports") + + @src_ports.setter + def src_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "src_ports", value) + + @property + @pulumi.getter(name="srcRegionCodes") + def src_region_codes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + """ + return pulumi.get(self, "src_region_codes") + + @src_region_codes.setter + def src_region_codes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "src_region_codes", value) + + @property + @pulumi.getter(name="userDefinedFields") + def user_defined_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs']]]]: + """ + User-defined fields. Each element names a defined field and lists the matching values for that field. + Structure is documented below. + """ + return pulumi.get(self, "user_defined_fields") + + @user_defined_fields.setter + def user_defined_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs']]]]): + pulumi.set(self, "user_defined_fields", value) + + +@pulumi.input_type +class RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs: + def __init__(__self__, *, + name: Optional[pulumi.Input[str]] = None, + values: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): + """ + :param pulumi.Input[str] name: Name of the user-defined field, as given in the definition. + :param pulumi.Input[Sequence[pulumi.Input[str]]] values: Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + """ + if name is not None: + pulumi.set(__self__, "name", name) + if values is not None: + pulumi.set(__self__, "values", values) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + Name of the user-defined field, as given in the definition. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def values(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + """ + return pulumi.get(self, "values") + + @values.setter + def values(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "values", value) + + +@pulumi.input_type +class RegionSecurityPolicyUserDefinedFieldArgs: + def __init__(__self__, *, + base: pulumi.Input[str], + mask: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + offset: Optional[pulumi.Input[int]] = None, + size: Optional[pulumi.Input[int]] = None): + """ + :param pulumi.Input[str] base: The base relative to which 'offset' is measured. Possible values are: + - IPV4: Points to the beginning of the IPv4 header. + - IPV6: Points to the beginning of the IPv6 header. + - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + :param pulumi.Input[str] mask: If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + Encoded as a hexadecimal number (starting with "0x"). + The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + :param pulumi.Input[str] name: The name of this field. Must be unique within the policy. + :param pulumi.Input[int] offset: Offset of the first byte of the field (in network byte order) relative to 'base'. + :param pulumi.Input[int] size: Size of the field in bytes. Valid values: 1-4. + """ + pulumi.set(__self__, "base", base) + if mask is not None: + pulumi.set(__self__, "mask", mask) + if name is not None: + pulumi.set(__self__, "name", name) + if offset is not None: + pulumi.set(__self__, "offset", offset) + if size is not None: + pulumi.set(__self__, "size", size) + + @property + @pulumi.getter + def base(self) -> pulumi.Input[str]: + """ + The base relative to which 'offset' is measured. Possible values are: + - IPV4: Points to the beginning of the IPv4 header. + - IPV6: Points to the beginning of the IPv6 header. + - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + """ + return pulumi.get(self, "base") + + @base.setter + def base(self, value: pulumi.Input[str]): + pulumi.set(self, "base", value) + + @property + @pulumi.getter + def mask(self) -> Optional[pulumi.Input[str]]: + """ + If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + Encoded as a hexadecimal number (starting with "0x"). + The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + """ + return pulumi.get(self, "mask") + + @mask.setter + def mask(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "mask", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + The name of this field. Must be unique within the policy. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def offset(self) -> Optional[pulumi.Input[int]]: + """ + Offset of the first byte of the field (in network byte order) relative to 'base'. + """ + return pulumi.get(self, "offset") + + @offset.setter + def offset(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "offset", value) + + @property + @pulumi.getter + def size(self) -> Optional[pulumi.Input[int]]: + """ + Size of the field in bytes. Valid values: 1-4. + """ + return pulumi.get(self, "size") + + @size.setter + def size(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "size", value) + + @pulumi.input_type class RegionUrlMapDefaultRouteActionArgs: def __init__(__self__, *, @@ -27859,7 +28234,8 @@ class SecurityPolicyAdvancedOptionsConfigArgs: def __init__(__self__, *, json_custom_config: Optional[pulumi.Input['SecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs']] = None, json_parsing: Optional[pulumi.Input[str]] = None, - log_level: Optional[pulumi.Input[str]] = None): + log_level: Optional[pulumi.Input[str]] = None, + user_ip_request_headers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None): """ :param pulumi.Input['SecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs'] json_custom_config: Custom configuration to apply the JSON parsing. Only applicable when `json_parsing` is set to `STANDARD`. Structure is documented below. @@ -27869,6 +28245,7 @@ def __init__(__self__, *, :param pulumi.Input[str] log_level: Log level to use. Defaults to `NORMAL`. * NORMAL - Normal log level. * VERBOSE - Verbose log level. + :param pulumi.Input[Sequence[pulumi.Input[str]]] user_ip_request_headers: ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. """ if json_custom_config is not None: pulumi.set(__self__, "json_custom_config", json_custom_config) @@ -27876,6 +28253,8 @@ def __init__(__self__, *, pulumi.set(__self__, "json_parsing", json_parsing) if log_level is not None: pulumi.set(__self__, "log_level", log_level) + if user_ip_request_headers is not None: + pulumi.set(__self__, "user_ip_request_headers", user_ip_request_headers) @property @pulumi.getter(name="jsonCustomConfig") @@ -27918,6 +28297,18 @@ def log_level(self) -> Optional[pulumi.Input[str]]: def log_level(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "log_level", value) + @property + @pulumi.getter(name="userIpRequestHeaders") + def user_ip_request_headers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + """ + return pulumi.get(self, "user_ip_request_headers") + + @user_ip_request_headers.setter + def user_ip_request_headers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "user_ip_request_headers", value) + @pulumi.input_type class SecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs: diff --git a/sdk/python/pulumi_gcp/compute/network_edge_security_service.py b/sdk/python/pulumi_gcp/compute/network_edge_security_service.py index fc6239678a..39c7c30e98 100644 --- a/sdk/python/pulumi_gcp/compute/network_edge_security_service.py +++ b/sdk/python/pulumi_gcp/compute/network_edge_security_service.py @@ -305,7 +305,7 @@ def __init__(__self__, import pulumi_gcp as gcp default = gcp.compute.NetworkEdgeSecurityService("default", - region="asia-southeast1", + region="us-east1", description="My basic resource", opts=pulumi.ResourceOptions(provider=google_beta)) ``` @@ -357,7 +357,7 @@ def __init__(__self__, import pulumi_gcp as gcp default = gcp.compute.NetworkEdgeSecurityService("default", - region="asia-southeast1", + region="us-east1", description="My basic resource", opts=pulumi.ResourceOptions(provider=google_beta)) ``` diff --git a/sdk/python/pulumi_gcp/compute/outputs.py b/sdk/python/pulumi_gcp/compute/outputs.py index ffd399687c..51ca2978c7 100644 --- a/sdk/python/pulumi_gcp/compute/outputs.py +++ b/sdk/python/pulumi_gcp/compute/outputs.py @@ -312,6 +312,11 @@ 'RegionPerInstanceConfigPreservedStateInternalIp', 'RegionPerInstanceConfigPreservedStateInternalIpIpAddress', 'RegionSecurityPolicyDdosProtectionConfig', + 'RegionSecurityPolicyRuleMatch', + 'RegionSecurityPolicyRuleMatchConfig', + 'RegionSecurityPolicyRuleNetworkMatch', + 'RegionSecurityPolicyRuleNetworkMatchUserDefinedField', + 'RegionSecurityPolicyUserDefinedField', 'RegionUrlMapDefaultRouteAction', 'RegionUrlMapDefaultRouteActionCorsPolicy', 'RegionUrlMapDefaultRouteActionFaultInjectionPolicy', @@ -11205,6 +11210,8 @@ def __key_warning(key: str): suggest = "disk_size_gb" elif key == "diskType": suggest = "disk_type" + elif key == "provisionedIops": + suggest = "provisioned_iops" elif key == "resourcePolicies": suggest = "resource_policies" elif key == "sourceImage": @@ -11238,6 +11245,7 @@ def __init__(__self__, *, interface: Optional[str] = None, labels: Optional[Mapping[str, str]] = None, mode: Optional[str] = None, + provisioned_iops: Optional[int] = None, resource_policies: Optional[str] = None, source: Optional[str] = None, source_image: Optional[str] = None, @@ -11324,6 +11332,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if mode is not None: pulumi.set(__self__, "mode", mode) + if provisioned_iops is not None: + pulumi.set(__self__, "provisioned_iops", provisioned_iops) if resource_policies is not None: pulumi.set(__self__, "resource_policies", resource_policies) if source is not None: @@ -11440,6 +11450,11 @@ def mode(self) -> Optional[str]: """ return pulumi.get(self, "mode") + @property + @pulumi.getter(name="provisionedIops") + def provisioned_iops(self) -> Optional[int]: + return pulumi.get(self, "provisioned_iops") + @property @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Optional[str]: @@ -19068,6 +19083,8 @@ def __key_warning(key: str): suggest = "disk_size_gb" elif key == "diskType": suggest = "disk_type" + elif key == "provisionedIops": + suggest = "provisioned_iops" elif key == "resourcePolicies": suggest = "resource_policies" elif key == "sourceImage": @@ -19101,6 +19118,7 @@ def __init__(__self__, *, interface: Optional[str] = None, labels: Optional[Mapping[str, str]] = None, mode: Optional[str] = None, + provisioned_iops: Optional[int] = None, resource_policies: Optional[str] = None, source: Optional[str] = None, source_image: Optional[str] = None, @@ -19187,6 +19205,8 @@ def __init__(__self__, *, pulumi.set(__self__, "labels", labels) if mode is not None: pulumi.set(__self__, "mode", mode) + if provisioned_iops is not None: + pulumi.set(__self__, "provisioned_iops", provisioned_iops) if resource_policies is not None: pulumi.set(__self__, "resource_policies", resource_policies) if source is not None: @@ -19303,6 +19323,11 @@ def mode(self) -> Optional[str]: """ return pulumi.get(self, "mode") + @property + @pulumi.getter(name="provisionedIops") + def provisioned_iops(self) -> Optional[int]: + return pulumi.get(self, "provisioned_iops") + @property @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Optional[str]: @@ -21488,6 +21513,345 @@ def ddos_protection(self) -> str: return pulumi.get(self, "ddos_protection") +@pulumi.output_type +class RegionSecurityPolicyRuleMatch(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "versionedExpr": + suggest = "versioned_expr" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleMatch. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + RegionSecurityPolicyRuleMatch.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + RegionSecurityPolicyRuleMatch.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + config: Optional['outputs.RegionSecurityPolicyRuleMatchConfig'] = None, + versioned_expr: Optional[str] = None): + """ + :param 'RegionSecurityPolicyRuleMatchConfigArgs' config: The configuration options available when specifying versionedExpr. + This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + Structure is documented below. + :param str versioned_expr: Preconfigured versioned expression. If this field is specified, config must also be specified. + Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + Possible values are: `SRC_IPS_V1`. + """ + if config is not None: + pulumi.set(__self__, "config", config) + if versioned_expr is not None: + pulumi.set(__self__, "versioned_expr", versioned_expr) + + @property + @pulumi.getter + def config(self) -> Optional['outputs.RegionSecurityPolicyRuleMatchConfig']: + """ + The configuration options available when specifying versionedExpr. + This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified. + Structure is documented below. + """ + return pulumi.get(self, "config") + + @property + @pulumi.getter(name="versionedExpr") + def versioned_expr(self) -> Optional[str]: + """ + Preconfigured versioned expression. If this field is specified, config must also be specified. + Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config. + Possible values are: `SRC_IPS_V1`. + """ + return pulumi.get(self, "versioned_expr") + + +@pulumi.output_type +class RegionSecurityPolicyRuleMatchConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "srcIpRanges": + suggest = "src_ip_ranges" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleMatchConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + RegionSecurityPolicyRuleMatchConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + RegionSecurityPolicyRuleMatchConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + src_ip_ranges: Optional[Sequence[str]] = None): + """ + :param Sequence[str] src_ip_ranges: CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + """ + if src_ip_ranges is not None: + pulumi.set(__self__, "src_ip_ranges", src_ip_ranges) + + @property + @pulumi.getter(name="srcIpRanges") + def src_ip_ranges(self) -> Optional[Sequence[str]]: + """ + CIDR IP address range. Maximum number of srcIpRanges allowed is 10. + """ + return pulumi.get(self, "src_ip_ranges") + + +@pulumi.output_type +class RegionSecurityPolicyRuleNetworkMatch(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "destIpRanges": + suggest = "dest_ip_ranges" + elif key == "destPorts": + suggest = "dest_ports" + elif key == "ipProtocols": + suggest = "ip_protocols" + elif key == "srcAsns": + suggest = "src_asns" + elif key == "srcIpRanges": + suggest = "src_ip_ranges" + elif key == "srcPorts": + suggest = "src_ports" + elif key == "srcRegionCodes": + suggest = "src_region_codes" + elif key == "userDefinedFields": + suggest = "user_defined_fields" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in RegionSecurityPolicyRuleNetworkMatch. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + RegionSecurityPolicyRuleNetworkMatch.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + RegionSecurityPolicyRuleNetworkMatch.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + dest_ip_ranges: Optional[Sequence[str]] = None, + dest_ports: Optional[Sequence[str]] = None, + ip_protocols: Optional[Sequence[str]] = None, + src_asns: Optional[Sequence[int]] = None, + src_ip_ranges: Optional[Sequence[str]] = None, + src_ports: Optional[Sequence[str]] = None, + src_region_codes: Optional[Sequence[str]] = None, + user_defined_fields: Optional[Sequence['outputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedField']] = None): + """ + :param Sequence[str] dest_ip_ranges: Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + :param Sequence[str] dest_ports: Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + :param Sequence[str] ip_protocols: IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + :param Sequence[int] src_asns: BGP Autonomous System Number associated with the source IP address. + :param Sequence[str] src_ip_ranges: Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + :param Sequence[str] src_ports: Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + :param Sequence[str] src_region_codes: Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + :param Sequence['RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs'] user_defined_fields: User-defined fields. Each element names a defined field and lists the matching values for that field. + Structure is documented below. + """ + if dest_ip_ranges is not None: + pulumi.set(__self__, "dest_ip_ranges", dest_ip_ranges) + if dest_ports is not None: + pulumi.set(__self__, "dest_ports", dest_ports) + if ip_protocols is not None: + pulumi.set(__self__, "ip_protocols", ip_protocols) + if src_asns is not None: + pulumi.set(__self__, "src_asns", src_asns) + if src_ip_ranges is not None: + pulumi.set(__self__, "src_ip_ranges", src_ip_ranges) + if src_ports is not None: + pulumi.set(__self__, "src_ports", src_ports) + if src_region_codes is not None: + pulumi.set(__self__, "src_region_codes", src_region_codes) + if user_defined_fields is not None: + pulumi.set(__self__, "user_defined_fields", user_defined_fields) + + @property + @pulumi.getter(name="destIpRanges") + def dest_ip_ranges(self) -> Optional[Sequence[str]]: + """ + Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + """ + return pulumi.get(self, "dest_ip_ranges") + + @property + @pulumi.getter(name="destPorts") + def dest_ports(self) -> Optional[Sequence[str]]: + """ + Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + """ + return pulumi.get(self, "dest_ports") + + @property + @pulumi.getter(name="ipProtocols") + def ip_protocols(self) -> Optional[Sequence[str]]: + """ + IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. "6"), range (e.g. "253-254"), or one of the following protocol names: "tcp", "udp", "icmp", "esp", "ah", "ipip", or "sctp". + """ + return pulumi.get(self, "ip_protocols") + + @property + @pulumi.getter(name="srcAsns") + def src_asns(self) -> Optional[Sequence[int]]: + """ + BGP Autonomous System Number associated with the source IP address. + """ + return pulumi.get(self, "src_asns") + + @property + @pulumi.getter(name="srcIpRanges") + def src_ip_ranges(self) -> Optional[Sequence[str]]: + """ + Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format. + """ + return pulumi.get(self, "src_ip_ranges") + + @property + @pulumi.getter(name="srcPorts") + def src_ports(self) -> Optional[Sequence[str]]: + """ + Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. "80") or range (e.g. "0-1023"). + """ + return pulumi.get(self, "src_ports") + + @property + @pulumi.getter(name="srcRegionCodes") + def src_region_codes(self) -> Optional[Sequence[str]]: + """ + Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address. + """ + return pulumi.get(self, "src_region_codes") + + @property + @pulumi.getter(name="userDefinedFields") + def user_defined_fields(self) -> Optional[Sequence['outputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedField']]: + """ + User-defined fields. Each element names a defined field and lists the matching values for that field. + Structure is documented below. + """ + return pulumi.get(self, "user_defined_fields") + + +@pulumi.output_type +class RegionSecurityPolicyRuleNetworkMatchUserDefinedField(dict): + def __init__(__self__, *, + name: Optional[str] = None, + values: Optional[Sequence[str]] = None): + """ + :param str name: Name of the user-defined field, as given in the definition. + :param Sequence[str] values: Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + """ + if name is not None: + pulumi.set(__self__, "name", name) + if values is not None: + pulumi.set(__self__, "values", values) + + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + Name of the user-defined field, as given in the definition. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def values(self) -> Optional[Sequence[str]]: + """ + Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with "0x") number (e.g. "64") or range (e.g. "0x400-0x7ff"). + """ + return pulumi.get(self, "values") + + +@pulumi.output_type +class RegionSecurityPolicyUserDefinedField(dict): + def __init__(__self__, *, + base: str, + mask: Optional[str] = None, + name: Optional[str] = None, + offset: Optional[int] = None, + size: Optional[int] = None): + """ + :param str base: The base relative to which 'offset' is measured. Possible values are: + - IPV4: Points to the beginning of the IPv4 header. + - IPV6: Points to the beginning of the IPv6 header. + - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + :param str mask: If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + Encoded as a hexadecimal number (starting with "0x"). + The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + :param str name: The name of this field. Must be unique within the policy. + :param int offset: Offset of the first byte of the field (in network byte order) relative to 'base'. + :param int size: Size of the field in bytes. Valid values: 1-4. + """ + pulumi.set(__self__, "base", base) + if mask is not None: + pulumi.set(__self__, "mask", mask) + if name is not None: + pulumi.set(__self__, "name", name) + if offset is not None: + pulumi.set(__self__, "offset", offset) + if size is not None: + pulumi.set(__self__, "size", size) + + @property + @pulumi.getter + def base(self) -> str: + """ + The base relative to which 'offset' is measured. Possible values are: + - IPV4: Points to the beginning of the IPv4 header. + - IPV6: Points to the beginning of the IPv6 header. + - TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + - UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments. + Possible values are: `IPV4`, `IPV6`, `TCP`, `UDP`. + """ + return pulumi.get(self, "base") + + @property + @pulumi.getter + def mask(self) -> Optional[str]: + """ + If specified, apply this mask (bitwise AND) to the field to ignore bits before matching. + Encoded as a hexadecimal number (starting with "0x"). + The last byte of the field (in network byte order) corresponds to the least significant byte of the mask. + """ + return pulumi.get(self, "mask") + + @property + @pulumi.getter + def name(self) -> Optional[str]: + """ + The name of this field. Must be unique within the policy. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter + def offset(self) -> Optional[int]: + """ + Offset of the first byte of the field (in network byte order) relative to 'base'. + """ + return pulumi.get(self, "offset") + + @property + @pulumi.getter + def size(self) -> Optional[int]: + """ + Size of the field in bytes. Valid values: 1-4. + """ + return pulumi.get(self, "size") + + @pulumi.output_type class RegionUrlMapDefaultRouteAction(dict): @staticmethod @@ -28526,6 +28890,8 @@ def __key_warning(key: str): suggest = "json_parsing" elif key == "logLevel": suggest = "log_level" + elif key == "userIpRequestHeaders": + suggest = "user_ip_request_headers" if suggest: pulumi.log.warn(f"Key '{key}' not found in SecurityPolicyAdvancedOptionsConfig. Access the value via the '{suggest}' property getter instead.") @@ -28541,7 +28907,8 @@ def get(self, key: str, default = None) -> Any: def __init__(__self__, *, json_custom_config: Optional['outputs.SecurityPolicyAdvancedOptionsConfigJsonCustomConfig'] = None, json_parsing: Optional[str] = None, - log_level: Optional[str] = None): + log_level: Optional[str] = None, + user_ip_request_headers: Optional[Sequence[str]] = None): """ :param 'SecurityPolicyAdvancedOptionsConfigJsonCustomConfigArgs' json_custom_config: Custom configuration to apply the JSON parsing. Only applicable when `json_parsing` is set to `STANDARD`. Structure is documented below. @@ -28551,6 +28918,7 @@ def __init__(__self__, *, :param str log_level: Log level to use. Defaults to `NORMAL`. * NORMAL - Normal log level. * VERBOSE - Verbose log level. + :param Sequence[str] user_ip_request_headers: ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. """ if json_custom_config is not None: pulumi.set(__self__, "json_custom_config", json_custom_config) @@ -28558,6 +28926,8 @@ def __init__(__self__, *, pulumi.set(__self__, "json_parsing", json_parsing) if log_level is not None: pulumi.set(__self__, "log_level", log_level) + if user_ip_request_headers is not None: + pulumi.set(__self__, "user_ip_request_headers", user_ip_request_headers) @property @pulumi.getter(name="jsonCustomConfig") @@ -28588,6 +28958,14 @@ def log_level(self) -> Optional[str]: """ return pulumi.get(self, "log_level") + @property + @pulumi.getter(name="userIpRequestHeaders") + def user_ip_request_headers(self) -> Optional[Sequence[str]]: + """ + ) An optional list of case-insensitive request header names to use for resolving the callers client IP address. + """ + return pulumi.get(self, "user_ip_request_headers") + @pulumi.output_type class SecurityPolicyAdvancedOptionsConfigJsonCustomConfig(dict): @@ -39742,6 +40120,7 @@ def __init__(__self__, *, interface: str, labels: Mapping[str, str], mode: str, + provisioned_iops: int, resource_policies: Sequence[str], source: str, source_image: str, @@ -39796,6 +40175,7 @@ def __init__(__self__, *, pulumi.set(__self__, "interface", interface) pulumi.set(__self__, "labels", labels) pulumi.set(__self__, "mode", mode) + pulumi.set(__self__, "provisioned_iops", provisioned_iops) pulumi.set(__self__, "resource_policies", resource_policies) pulumi.set(__self__, "source", source) pulumi.set(__self__, "source_image", source_image) @@ -39897,6 +40277,11 @@ def mode(self) -> str: """ return pulumi.get(self, "mode") + @property + @pulumi.getter(name="provisionedIops") + def provisioned_iops(self) -> int: + return pulumi.get(self, "provisioned_iops") + @property @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Sequence[str]: @@ -40803,6 +41188,7 @@ def __init__(__self__, *, interface: str, labels: Mapping[str, str], mode: str, + provisioned_iops: int, resource_policies: Sequence[str], source: str, source_image: str, @@ -40857,6 +41243,7 @@ def __init__(__self__, *, pulumi.set(__self__, "interface", interface) pulumi.set(__self__, "labels", labels) pulumi.set(__self__, "mode", mode) + pulumi.set(__self__, "provisioned_iops", provisioned_iops) pulumi.set(__self__, "resource_policies", resource_policies) pulumi.set(__self__, "source", source) pulumi.set(__self__, "source_image", source_image) @@ -40958,6 +41345,11 @@ def mode(self) -> str: """ return pulumi.get(self, "mode") + @property + @pulumi.getter(name="provisionedIops") + def provisioned_iops(self) -> int: + return pulumi.get(self, "provisioned_iops") + @property @pulumi.getter(name="resourcePolicies") def resource_policies(self) -> Sequence[str]: diff --git a/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py b/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py index 79f46e40d2..d4e3806a13 100644 --- a/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py +++ b/sdk/python/pulumi_gcp/compute/region_network_endpoint_group.py @@ -615,7 +615,7 @@ def __init__(__self__, appengine_neg_bucket = gcp.storage.Bucket("appengineNegBucket", location="US") appengine_neg_bucket_object = gcp.storage.BucketObject("appengineNegBucketObject", bucket=appengine_neg_bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) appengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion("appengineNegFlexibleAppVersion", version_id="v1", service="appengine-network-endpoint-group", @@ -813,7 +813,7 @@ def __init__(__self__, appengine_neg_bucket = gcp.storage.Bucket("appengineNegBucket", location="US") appengine_neg_bucket_object = gcp.storage.BucketObject("appengineNegBucketObject", bucket=appengine_neg_bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) appengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion("appengineNegFlexibleAppVersion", version_id="v1", service="appengine-network-endpoint-group", diff --git a/sdk/python/pulumi_gcp/compute/region_security_policy.py b/sdk/python/pulumi_gcp/compute/region_security_policy.py index 1c43e35758..ef46cdf2e3 100644 --- a/sdk/python/pulumi_gcp/compute/region_security_policy.py +++ b/sdk/python/pulumi_gcp/compute/region_security_policy.py @@ -21,7 +21,8 @@ def __init__(__self__, *, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, - type: Optional[pulumi.Input[str]] = None): + type: Optional[pulumi.Input[str]] = None, + user_defined_fields: Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]]] = None): """ The set of arguments for constructing a RegionSecurityPolicy resource. :param pulumi.Input['RegionSecurityPolicyDdosProtectionConfigArgs'] ddos_protection_config: Configuration for Google Cloud Armor DDOS Proctection Config. @@ -42,6 +43,10 @@ def __init__(__self__, *, - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time. Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. + :param pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]] user_defined_fields: Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. """ if ddos_protection_config is not None: pulumi.set(__self__, "ddos_protection_config", ddos_protection_config) @@ -55,6 +60,8 @@ def __init__(__self__, *, pulumi.set(__self__, "region", region) if type is not None: pulumi.set(__self__, "type", type) + if user_defined_fields is not None: + pulumi.set(__self__, "user_defined_fields", user_defined_fields) @property @pulumi.getter(name="ddosProtectionConfig") @@ -140,6 +147,21 @@ def type(self) -> Optional[pulumi.Input[str]]: def type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "type", value) + @property + @pulumi.getter(name="userDefinedFields") + def user_defined_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]]]: + """ + Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. + """ + return pulumi.get(self, "user_defined_fields") + + @user_defined_fields.setter + def user_defined_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]]]): + pulumi.set(self, "user_defined_fields", value) + @pulumi.input_type class _RegionSecurityPolicyState: @@ -153,7 +175,8 @@ def __init__(__self__, *, region: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, self_link_with_policy_id: Optional[pulumi.Input[str]] = None, - type: Optional[pulumi.Input[str]] = None): + type: Optional[pulumi.Input[str]] = None, + user_defined_fields: Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]]] = None): """ Input properties used for looking up and filtering RegionSecurityPolicy resources. :param pulumi.Input['RegionSecurityPolicyDdosProtectionConfigArgs'] ddos_protection_config: Configuration for Google Cloud Armor DDOS Proctection Config. @@ -179,6 +202,10 @@ def __init__(__self__, *, - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time. Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. + :param pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]] user_defined_fields: Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. """ if ddos_protection_config is not None: pulumi.set(__self__, "ddos_protection_config", ddos_protection_config) @@ -200,6 +227,8 @@ def __init__(__self__, *, pulumi.set(__self__, "self_link_with_policy_id", self_link_with_policy_id) if type is not None: pulumi.set(__self__, "type", type) + if user_defined_fields is not None: + pulumi.set(__self__, "user_defined_fields", user_defined_fields) @property @pulumi.getter(name="ddosProtectionConfig") @@ -334,6 +363,21 @@ def type(self) -> Optional[pulumi.Input[str]]: def type(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "type", value) + @property + @pulumi.getter(name="userDefinedFields") + def user_defined_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]]]: + """ + Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. + """ + return pulumi.get(self, "user_defined_fields") + + @user_defined_fields.setter + def user_defined_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegionSecurityPolicyUserDefinedFieldArgs']]]]): + pulumi.set(self, "user_defined_fields", value) + class RegionSecurityPolicy(pulumi.CustomResource): @overload @@ -346,6 +390,7 @@ def __init__(__self__, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, + user_defined_fields: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionSecurityPolicyUserDefinedFieldArgs']]]]] = None, __props__=None): """ ## Example Usage @@ -374,6 +419,33 @@ def __init__(__self__, ), opts=pulumi.ResourceOptions(provider=google_beta)) ``` + ### Region Security Policy With User Defined Fields + + ```python + import pulumi + import pulumi_gcp as gcp + + region_sec_policy_user_defined_fields = gcp.compute.RegionSecurityPolicy("region-sec-policy-user-defined-fields", + description="with user defined fields", + type="CLOUD_ARMOR_NETWORK", + user_defined_fields=[ + gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs( + name="SIG1_AT_0", + base="UDP", + offset=8, + size=2, + mask="0x8F00", + ), + gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs( + name="SIG2_AT_8", + base="UDP", + offset=16, + size=4, + mask="0xFFFFFFFF", + ), + ], + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import @@ -415,6 +487,10 @@ def __init__(__self__, - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time. Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionSecurityPolicyUserDefinedFieldArgs']]]] user_defined_fields: Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. """ ... @overload @@ -449,6 +525,33 @@ def __init__(__self__, ), opts=pulumi.ResourceOptions(provider=google_beta)) ``` + ### Region Security Policy With User Defined Fields + + ```python + import pulumi + import pulumi_gcp as gcp + + region_sec_policy_user_defined_fields = gcp.compute.RegionSecurityPolicy("region-sec-policy-user-defined-fields", + description="with user defined fields", + type="CLOUD_ARMOR_NETWORK", + user_defined_fields=[ + gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs( + name="SIG1_AT_0", + base="UDP", + offset=8, + size=2, + mask="0x8F00", + ), + gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs( + name="SIG2_AT_8", + base="UDP", + offset=16, + size=4, + mask="0xFFFFFFFF", + ), + ], + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import @@ -491,6 +594,7 @@ def _internal_init(__self__, project: Optional[pulumi.Input[str]] = None, region: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, + user_defined_fields: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionSecurityPolicyUserDefinedFieldArgs']]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -506,6 +610,7 @@ def _internal_init(__self__, __props__.__dict__["project"] = project __props__.__dict__["region"] = region __props__.__dict__["type"] = type + __props__.__dict__["user_defined_fields"] = user_defined_fields __props__.__dict__["fingerprint"] = None __props__.__dict__["policy_id"] = None __props__.__dict__["self_link"] = None @@ -529,7 +634,8 @@ def get(resource_name: str, region: Optional[pulumi.Input[str]] = None, self_link: Optional[pulumi.Input[str]] = None, self_link_with_policy_id: Optional[pulumi.Input[str]] = None, - type: Optional[pulumi.Input[str]] = None) -> 'RegionSecurityPolicy': + type: Optional[pulumi.Input[str]] = None, + user_defined_fields: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionSecurityPolicyUserDefinedFieldArgs']]]]] = None) -> 'RegionSecurityPolicy': """ Get an existing RegionSecurityPolicy resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -560,6 +666,10 @@ def get(resource_name: str, - CLOUD_ARMOR_NETWORK: Cloud Armor network policies can be configured to filter packets targeting network load balancing resources such as backend services, target pools, target instances, and instances with external IPs. They filter requests before the request is served from the application. This field can be set only at resource creation time. Possible values are: `CLOUD_ARMOR`, `CLOUD_ARMOR_EDGE`, `CLOUD_ARMOR_NETWORK`. + :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['RegionSecurityPolicyUserDefinedFieldArgs']]]] user_defined_fields: Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -575,6 +685,7 @@ def get(resource_name: str, __props__.__dict__["self_link"] = self_link __props__.__dict__["self_link_with_policy_id"] = self_link_with_policy_id __props__.__dict__["type"] = type + __props__.__dict__["user_defined_fields"] = user_defined_fields return RegionSecurityPolicy(resource_name, opts=opts, __props__=__props__) @property @@ -670,3 +781,14 @@ def type(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "type") + @property + @pulumi.getter(name="userDefinedFields") + def user_defined_fields(self) -> pulumi.Output[Optional[Sequence['outputs.RegionSecurityPolicyUserDefinedField']]]: + """ + Definitions of user-defined fields for CLOUD_ARMOR_NETWORK policies. + A user-defined field consists of up to 4 bytes extracted from a fixed offset in the packet, relative to the IPv4, IPv6, TCP, or UDP header, with an optional mask to select certain bits. + Rules may then specify matching values for these fields. + Structure is documented below. + """ + return pulumi.get(self, "user_defined_fields") + diff --git a/sdk/python/pulumi_gcp/compute/region_security_policy_rule.py b/sdk/python/pulumi_gcp/compute/region_security_policy_rule.py new file mode 100644 index 0000000000..eb6250ddc4 --- /dev/null +++ b/sdk/python/pulumi_gcp/compute/region_security_policy_rule.py @@ -0,0 +1,952 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities +from . import outputs +from ._inputs import * + +__all__ = ['RegionSecurityPolicyRuleArgs', 'RegionSecurityPolicyRule'] + +@pulumi.input_type +class RegionSecurityPolicyRuleArgs: + def __init__(__self__, *, + action: pulumi.Input[str], + priority: pulumi.Input[int], + region: pulumi.Input[str], + security_policy: pulumi.Input[str], + description: Optional[pulumi.Input[str]] = None, + match: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchArgs']] = None, + network_match: Optional[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs']] = None, + preview: Optional[pulumi.Input[bool]] = None, + project: Optional[pulumi.Input[str]] = None): + """ + The set of arguments for constructing a RegionSecurityPolicyRule resource. + :param pulumi.Input[str] action: The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + :param pulumi.Input[int] priority: An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + :param pulumi.Input[str] region: The Region in which the created Region Security Policy rule should reside. + :param pulumi.Input[str] security_policy: The name of the security policy this rule belongs to. + + + - - - + :param pulumi.Input[str] description: An optional description of this resource. Provide this property when you create the resource. + :param pulumi.Input['RegionSecurityPolicyRuleMatchArgs'] match: A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + :param pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs'] network_match: A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + :param pulumi.Input[bool] preview: If set to true, the specified action is not enforced. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + pulumi.set(__self__, "action", action) + pulumi.set(__self__, "priority", priority) + pulumi.set(__self__, "region", region) + pulumi.set(__self__, "security_policy", security_policy) + if description is not None: + pulumi.set(__self__, "description", description) + if match is not None: + pulumi.set(__self__, "match", match) + if network_match is not None: + pulumi.set(__self__, "network_match", network_match) + if preview is not None: + pulumi.set(__self__, "preview", preview) + if project is not None: + pulumi.set(__self__, "project", project) + + @property + @pulumi.getter + def action(self) -> pulumi.Input[str]: + """ + The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + """ + return pulumi.get(self, "action") + + @action.setter + def action(self, value: pulumi.Input[str]): + pulumi.set(self, "action", value) + + @property + @pulumi.getter + def priority(self) -> pulumi.Input[int]: + """ + An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + """ + return pulumi.get(self, "priority") + + @priority.setter + def priority(self, value: pulumi.Input[int]): + pulumi.set(self, "priority", value) + + @property + @pulumi.getter + def region(self) -> pulumi.Input[str]: + """ + The Region in which the created Region Security Policy rule should reside. + """ + return pulumi.get(self, "region") + + @region.setter + def region(self, value: pulumi.Input[str]): + pulumi.set(self, "region", value) + + @property + @pulumi.getter(name="securityPolicy") + def security_policy(self) -> pulumi.Input[str]: + """ + The name of the security policy this rule belongs to. + + + - - - + """ + return pulumi.get(self, "security_policy") + + @security_policy.setter + def security_policy(self, value: pulumi.Input[str]): + pulumi.set(self, "security_policy", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + An optional description of this resource. Provide this property when you create the resource. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter + def match(self) -> Optional[pulumi.Input['RegionSecurityPolicyRuleMatchArgs']]: + """ + A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + """ + return pulumi.get(self, "match") + + @match.setter + def match(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchArgs']]): + pulumi.set(self, "match", value) + + @property + @pulumi.getter(name="networkMatch") + def network_match(self) -> Optional[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs']]: + """ + A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + """ + return pulumi.get(self, "network_match") + + @network_match.setter + def network_match(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs']]): + pulumi.set(self, "network_match", value) + + @property + @pulumi.getter + def preview(self) -> Optional[pulumi.Input[bool]]: + """ + If set to true, the specified action is not enforced. + """ + return pulumi.get(self, "preview") + + @preview.setter + def preview(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "preview", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + +@pulumi.input_type +class _RegionSecurityPolicyRuleState: + def __init__(__self__, *, + action: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + match: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchArgs']] = None, + network_match: Optional[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs']] = None, + preview: Optional[pulumi.Input[bool]] = None, + priority: Optional[pulumi.Input[int]] = None, + project: Optional[pulumi.Input[str]] = None, + region: Optional[pulumi.Input[str]] = None, + security_policy: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering RegionSecurityPolicyRule resources. + :param pulumi.Input[str] action: The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + :param pulumi.Input[str] description: An optional description of this resource. Provide this property when you create the resource. + :param pulumi.Input['RegionSecurityPolicyRuleMatchArgs'] match: A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + :param pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs'] network_match: A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + :param pulumi.Input[bool] preview: If set to true, the specified action is not enforced. + :param pulumi.Input[int] priority: An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] region: The Region in which the created Region Security Policy rule should reside. + :param pulumi.Input[str] security_policy: The name of the security policy this rule belongs to. + + + - - - + """ + if action is not None: + pulumi.set(__self__, "action", action) + if description is not None: + pulumi.set(__self__, "description", description) + if match is not None: + pulumi.set(__self__, "match", match) + if network_match is not None: + pulumi.set(__self__, "network_match", network_match) + if preview is not None: + pulumi.set(__self__, "preview", preview) + if priority is not None: + pulumi.set(__self__, "priority", priority) + if project is not None: + pulumi.set(__self__, "project", project) + if region is not None: + pulumi.set(__self__, "region", region) + if security_policy is not None: + pulumi.set(__self__, "security_policy", security_policy) + + @property + @pulumi.getter + def action(self) -> Optional[pulumi.Input[str]]: + """ + The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + """ + return pulumi.get(self, "action") + + @action.setter + def action(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "action", value) + + @property + @pulumi.getter + def description(self) -> Optional[pulumi.Input[str]]: + """ + An optional description of this resource. Provide this property when you create the resource. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter + def match(self) -> Optional[pulumi.Input['RegionSecurityPolicyRuleMatchArgs']]: + """ + A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + """ + return pulumi.get(self, "match") + + @match.setter + def match(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchArgs']]): + pulumi.set(self, "match", value) + + @property + @pulumi.getter(name="networkMatch") + def network_match(self) -> Optional[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs']]: + """ + A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + """ + return pulumi.get(self, "network_match") + + @network_match.setter + def network_match(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleNetworkMatchArgs']]): + pulumi.set(self, "network_match", value) + + @property + @pulumi.getter + def preview(self) -> Optional[pulumi.Input[bool]]: + """ + If set to true, the specified action is not enforced. + """ + return pulumi.get(self, "preview") + + @preview.setter + def preview(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "preview", value) + + @property + @pulumi.getter + def priority(self) -> Optional[pulumi.Input[int]]: + """ + An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + """ + return pulumi.get(self, "priority") + + @priority.setter + def priority(self, value: Optional[pulumi.Input[int]]): + pulumi.set(self, "priority", value) + + @property + @pulumi.getter + def project(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @project.setter + def project(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "project", value) + + @property + @pulumi.getter + def region(self) -> Optional[pulumi.Input[str]]: + """ + The Region in which the created Region Security Policy rule should reside. + """ + return pulumi.get(self, "region") + + @region.setter + def region(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "region", value) + + @property + @pulumi.getter(name="securityPolicy") + def security_policy(self) -> Optional[pulumi.Input[str]]: + """ + The name of the security policy this rule belongs to. + + + - - - + """ + return pulumi.get(self, "security_policy") + + @security_policy.setter + def security_policy(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "security_policy", value) + + +class RegionSecurityPolicyRule(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + action: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + match: Optional[pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleMatchArgs']]] = None, + network_match: Optional[pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleNetworkMatchArgs']]] = None, + preview: Optional[pulumi.Input[bool]] = None, + priority: Optional[pulumi.Input[int]] = None, + project: Optional[pulumi.Input[str]] = None, + region: Optional[pulumi.Input[str]] = None, + security_policy: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + ## Example Usage + ### Region Security Policy Rule Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + default = gcp.compute.RegionSecurityPolicy("default", + region="us-west2", + description="basic region security policy", + type="CLOUD_ARMOR", + opts=pulumi.ResourceOptions(provider=google_beta)) + policy_rule = gcp.compute.RegionSecurityPolicyRule("policyRule", + region="us-west2", + security_policy=default.name, + description="new rule", + priority=100, + match=gcp.compute.RegionSecurityPolicyRuleMatchArgs( + versioned_expr="SRC_IPS_V1", + config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs( + src_ip_ranges=["10.10.0.0/16"], + ), + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` + ### Region Security Policy Rule Multiple Rules + + ```python + import pulumi + import pulumi_gcp as gcp + + default = gcp.compute.RegionSecurityPolicy("default", + region="us-west2", + description="basic region security policy", + type="CLOUD_ARMOR", + opts=pulumi.ResourceOptions(provider=google_beta)) + policy_rule_one = gcp.compute.RegionSecurityPolicyRule("policyRuleOne", + region="us-west2", + security_policy=default.name, + description="new rule one", + priority=100, + match=gcp.compute.RegionSecurityPolicyRuleMatchArgs( + versioned_expr="SRC_IPS_V1", + config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs( + src_ip_ranges=["10.10.0.0/16"], + ), + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + policy_rule_two = gcp.compute.RegionSecurityPolicyRule("policyRuleTwo", + region="us-west2", + security_policy=default.name, + description="new rule two", + priority=101, + match=gcp.compute.RegionSecurityPolicyRuleMatchArgs( + versioned_expr="SRC_IPS_V1", + config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs( + src_ip_ranges=[ + "192.168.0.0/16", + "10.0.0.0/8", + ], + ), + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` + ### Region Security Policy Rule With Network Match + + ```python + import pulumi + import pulumi_gcp as gcp + + # First activate advanced network DDoS protection for the desired region + policyddosprotection = gcp.compute.RegionSecurityPolicy("policyddosprotection", + region="us-west2", + description="policy for activating network DDoS protection for the desired region", + type="CLOUD_ARMOR_NETWORK", + ddos_protection_config=gcp.compute.RegionSecurityPolicyDdosProtectionConfigArgs( + ddos_protection="ADVANCED_PREVIEW", + ), + opts=pulumi.ResourceOptions(provider=google_beta)) + edge_sec_service = gcp.compute.NetworkEdgeSecurityService("edgeSecService", + region="us-west2", + description="linking policy to edge security service", + security_policy=policyddosprotection.self_link, + opts=pulumi.ResourceOptions(provider=google_beta)) + # Add the desired policy and custom rule. + policynetworkmatch = gcp.compute.RegionSecurityPolicy("policynetworkmatch", + region="us-west2", + description="region security policy for network match", + type="CLOUD_ARMOR_NETWORK", + user_defined_fields=[gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs( + name="SIG1_AT_0", + base="TCP", + offset=8, + size=2, + mask="0x8F00", + )], + opts=pulumi.ResourceOptions(provider=google_beta, + depends_on=[edge_sec_service])) + policy_rule_network_match = gcp.compute.RegionSecurityPolicyRule("policyRuleNetworkMatch", + region="us-west2", + security_policy=policynetworkmatch.name, + description="custom rule for network match", + priority=100, + network_match=gcp.compute.RegionSecurityPolicyRuleNetworkMatchArgs( + src_ip_ranges=["10.10.0.0/16"], + user_defined_fields=[gcp.compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs( + name="SIG1_AT_0", + values=["0x8F00"], + )], + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` + + ## Import + + RegionSecurityPolicyRule can be imported using any of these accepted formats + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}} + ``` + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}} + ``` + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}} + ``` + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}} + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] action: The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + :param pulumi.Input[str] description: An optional description of this resource. Provide this property when you create the resource. + :param pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleMatchArgs']] match: A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + :param pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleNetworkMatchArgs']] network_match: A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + :param pulumi.Input[bool] preview: If set to true, the specified action is not enforced. + :param pulumi.Input[int] priority: An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] region: The Region in which the created Region Security Policy rule should reside. + :param pulumi.Input[str] security_policy: The name of the security policy this rule belongs to. + + + - - - + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: RegionSecurityPolicyRuleArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + ## Example Usage + ### Region Security Policy Rule Basic + + ```python + import pulumi + import pulumi_gcp as gcp + + default = gcp.compute.RegionSecurityPolicy("default", + region="us-west2", + description="basic region security policy", + type="CLOUD_ARMOR", + opts=pulumi.ResourceOptions(provider=google_beta)) + policy_rule = gcp.compute.RegionSecurityPolicyRule("policyRule", + region="us-west2", + security_policy=default.name, + description="new rule", + priority=100, + match=gcp.compute.RegionSecurityPolicyRuleMatchArgs( + versioned_expr="SRC_IPS_V1", + config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs( + src_ip_ranges=["10.10.0.0/16"], + ), + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` + ### Region Security Policy Rule Multiple Rules + + ```python + import pulumi + import pulumi_gcp as gcp + + default = gcp.compute.RegionSecurityPolicy("default", + region="us-west2", + description="basic region security policy", + type="CLOUD_ARMOR", + opts=pulumi.ResourceOptions(provider=google_beta)) + policy_rule_one = gcp.compute.RegionSecurityPolicyRule("policyRuleOne", + region="us-west2", + security_policy=default.name, + description="new rule one", + priority=100, + match=gcp.compute.RegionSecurityPolicyRuleMatchArgs( + versioned_expr="SRC_IPS_V1", + config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs( + src_ip_ranges=["10.10.0.0/16"], + ), + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + policy_rule_two = gcp.compute.RegionSecurityPolicyRule("policyRuleTwo", + region="us-west2", + security_policy=default.name, + description="new rule two", + priority=101, + match=gcp.compute.RegionSecurityPolicyRuleMatchArgs( + versioned_expr="SRC_IPS_V1", + config=gcp.compute.RegionSecurityPolicyRuleMatchConfigArgs( + src_ip_ranges=[ + "192.168.0.0/16", + "10.0.0.0/8", + ], + ), + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` + ### Region Security Policy Rule With Network Match + + ```python + import pulumi + import pulumi_gcp as gcp + + # First activate advanced network DDoS protection for the desired region + policyddosprotection = gcp.compute.RegionSecurityPolicy("policyddosprotection", + region="us-west2", + description="policy for activating network DDoS protection for the desired region", + type="CLOUD_ARMOR_NETWORK", + ddos_protection_config=gcp.compute.RegionSecurityPolicyDdosProtectionConfigArgs( + ddos_protection="ADVANCED_PREVIEW", + ), + opts=pulumi.ResourceOptions(provider=google_beta)) + edge_sec_service = gcp.compute.NetworkEdgeSecurityService("edgeSecService", + region="us-west2", + description="linking policy to edge security service", + security_policy=policyddosprotection.self_link, + opts=pulumi.ResourceOptions(provider=google_beta)) + # Add the desired policy and custom rule. + policynetworkmatch = gcp.compute.RegionSecurityPolicy("policynetworkmatch", + region="us-west2", + description="region security policy for network match", + type="CLOUD_ARMOR_NETWORK", + user_defined_fields=[gcp.compute.RegionSecurityPolicyUserDefinedFieldArgs( + name="SIG1_AT_0", + base="TCP", + offset=8, + size=2, + mask="0x8F00", + )], + opts=pulumi.ResourceOptions(provider=google_beta, + depends_on=[edge_sec_service])) + policy_rule_network_match = gcp.compute.RegionSecurityPolicyRule("policyRuleNetworkMatch", + region="us-west2", + security_policy=policynetworkmatch.name, + description="custom rule for network match", + priority=100, + network_match=gcp.compute.RegionSecurityPolicyRuleNetworkMatchArgs( + src_ip_ranges=["10.10.0.0/16"], + user_defined_fields=[gcp.compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs( + name="SIG1_AT_0", + values=["0x8F00"], + )], + ), + action="allow", + preview=True, + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` + + ## Import + + RegionSecurityPolicyRule can be imported using any of these accepted formats + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}} + ``` + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}} + ``` + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}} + ``` + + ```sh + $ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}} + ``` + + :param str resource_name: The name of the resource. + :param RegionSecurityPolicyRuleArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(RegionSecurityPolicyRuleArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + action: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + match: Optional[pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleMatchArgs']]] = None, + network_match: Optional[pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleNetworkMatchArgs']]] = None, + preview: Optional[pulumi.Input[bool]] = None, + priority: Optional[pulumi.Input[int]] = None, + project: Optional[pulumi.Input[str]] = None, + region: Optional[pulumi.Input[str]] = None, + security_policy: Optional[pulumi.Input[str]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = RegionSecurityPolicyRuleArgs.__new__(RegionSecurityPolicyRuleArgs) + + if action is None and not opts.urn: + raise TypeError("Missing required property 'action'") + __props__.__dict__["action"] = action + __props__.__dict__["description"] = description + __props__.__dict__["match"] = match + __props__.__dict__["network_match"] = network_match + __props__.__dict__["preview"] = preview + if priority is None and not opts.urn: + raise TypeError("Missing required property 'priority'") + __props__.__dict__["priority"] = priority + __props__.__dict__["project"] = project + if region is None and not opts.urn: + raise TypeError("Missing required property 'region'") + __props__.__dict__["region"] = region + if security_policy is None and not opts.urn: + raise TypeError("Missing required property 'security_policy'") + __props__.__dict__["security_policy"] = security_policy + super(RegionSecurityPolicyRule, __self__).__init__( + 'gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + action: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + match: Optional[pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleMatchArgs']]] = None, + network_match: Optional[pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleNetworkMatchArgs']]] = None, + preview: Optional[pulumi.Input[bool]] = None, + priority: Optional[pulumi.Input[int]] = None, + project: Optional[pulumi.Input[str]] = None, + region: Optional[pulumi.Input[str]] = None, + security_policy: Optional[pulumi.Input[str]] = None) -> 'RegionSecurityPolicyRule': + """ + Get an existing RegionSecurityPolicyRule resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] action: The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + :param pulumi.Input[str] description: An optional description of this resource. Provide this property when you create the resource. + :param pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleMatchArgs']] match: A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + :param pulumi.Input[pulumi.InputType['RegionSecurityPolicyRuleNetworkMatchArgs']] network_match: A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + :param pulumi.Input[bool] preview: If set to true, the specified action is not enforced. + :param pulumi.Input[int] priority: An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + :param pulumi.Input[str] project: The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + :param pulumi.Input[str] region: The Region in which the created Region Security Policy rule should reside. + :param pulumi.Input[str] security_policy: The name of the security policy this rule belongs to. + + + - - - + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _RegionSecurityPolicyRuleState.__new__(_RegionSecurityPolicyRuleState) + + __props__.__dict__["action"] = action + __props__.__dict__["description"] = description + __props__.__dict__["match"] = match + __props__.__dict__["network_match"] = network_match + __props__.__dict__["preview"] = preview + __props__.__dict__["priority"] = priority + __props__.__dict__["project"] = project + __props__.__dict__["region"] = region + __props__.__dict__["security_policy"] = security_policy + return RegionSecurityPolicyRule(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def action(self) -> pulumi.Output[str]: + """ + The Action to perform when the rule is matched. The following are the valid actions: + * allow: allow access to target. + * deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502. + * rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set. + * redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR. + * throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this. + """ + return pulumi.get(self, "action") + + @property + @pulumi.getter + def description(self) -> pulumi.Output[Optional[str]]: + """ + An optional description of this resource. Provide this property when you create the resource. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter + def match(self) -> pulumi.Output[Optional['outputs.RegionSecurityPolicyRuleMatch']]: + """ + A match condition that incoming traffic is evaluated against. + If it evaluates to true, the corresponding 'action' is enforced. + Structure is documented below. + """ + return pulumi.get(self, "match") + + @property + @pulumi.getter(name="networkMatch") + def network_match(self) -> pulumi.Output[Optional['outputs.RegionSecurityPolicyRuleNetworkMatch']]: + """ + A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced. + The match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields'). + Field values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds. + Each match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all. + For a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet. + Example: + networkMatch: srcIpRanges: - "192.0.2.0/24" - "198.51.100.0/24" userDefinedFields: - name: "ipv4_fragment_offset" values: - "1-0x1fff" + The above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named "ipv4_fragment_offset" with a value between 1 and 0x1fff inclusive + Structure is documented below. + """ + return pulumi.get(self, "network_match") + + @property + @pulumi.getter + def preview(self) -> pulumi.Output[Optional[bool]]: + """ + If set to true, the specified action is not enforced. + """ + return pulumi.get(self, "preview") + + @property + @pulumi.getter + def priority(self) -> pulumi.Output[int]: + """ + An integer indicating the priority of a rule in the list. + The priority must be a positive value between 0 and 2147483647. + Rules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority. + """ + return pulumi.get(self, "priority") + + @property + @pulumi.getter + def project(self) -> pulumi.Output[str]: + """ + The ID of the project in which the resource belongs. + If it is not provided, the provider project is used. + """ + return pulumi.get(self, "project") + + @property + @pulumi.getter + def region(self) -> pulumi.Output[str]: + """ + The Region in which the created Region Security Policy rule should reside. + """ + return pulumi.get(self, "region") + + @property + @pulumi.getter(name="securityPolicy") + def security_policy(self) -> pulumi.Output[str]: + """ + The name of the security policy this rule belongs to. + + + - - - + """ + return pulumi.get(self, "security_policy") + diff --git a/sdk/python/pulumi_gcp/compute/subnetwork.py b/sdk/python/pulumi_gcp/compute/subnetwork.py index 1558363076..068bd1e078 100644 --- a/sdk/python/pulumi_gcp/compute/subnetwork.py +++ b/sdk/python/pulumi_gcp/compute/subnetwork.py @@ -48,9 +48,10 @@ def __init__(__self__, *, or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. Possible values are: `EXTERNAL`, `INTERNAL`. - :param pulumi.Input['SubnetworkLogConfigArgs'] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + :param pulumi.Input['SubnetworkLogConfigArgs'] log_config: This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. :param pulumi.Input[str] name: The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and @@ -64,19 +65,18 @@ def __init__(__self__, *, :param pulumi.Input[str] private_ipv6_google_access: The private IPv6 google access type for the VMs in this subnet. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. :param pulumi.Input[str] region: The GCP region for this subnetwork. :param pulumi.Input[str] role: The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. :param pulumi.Input[Sequence[pulumi.Input['SubnetworkSecondaryIpRangeArgs']]] secondary_ip_ranges: An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong @@ -178,9 +178,10 @@ def ipv6_access_type(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="logConfig") def log_config(self) -> Optional[pulumi.Input['SubnetworkLogConfigArgs']]: """ - Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. """ return pulumi.get(self, "log_config") @@ -249,13 +250,12 @@ def project(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def purpose(self) -> Optional[pulumi.Input[str]]: """ - The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. """ return pulumi.get(self, "purpose") @@ -280,10 +280,10 @@ def region(self, value: Optional[pulumi.Input[str]]): def role(self) -> Optional[pulumi.Input[str]]: """ The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. """ return pulumi.get(self, "role") @@ -365,9 +365,10 @@ def __init__(__self__, *, cannot enable direct path. Possible values are: `EXTERNAL`, `INTERNAL`. :param pulumi.Input[str] ipv6_cidr_range: The range of internal IPv6 addresses that are owned by this subnetwork. - :param pulumi.Input['SubnetworkLogConfigArgs'] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + :param pulumi.Input['SubnetworkLogConfigArgs'] log_config: This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. :param pulumi.Input[str] name: The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and @@ -386,19 +387,18 @@ def __init__(__self__, *, :param pulumi.Input[str] private_ipv6_google_access: The private IPv6 google access type for the VMs in this subnet. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. :param pulumi.Input[str] region: The GCP region for this subnetwork. :param pulumi.Input[str] role: The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. :param pulumi.Input[Sequence[pulumi.Input['SubnetworkSecondaryIpRangeArgs']]] secondary_ip_ranges: An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong @@ -566,9 +566,10 @@ def ipv6_cidr_range(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="logConfig") def log_config(self) -> Optional[pulumi.Input['SubnetworkLogConfigArgs']]: """ - Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. """ return pulumi.get(self, "log_config") @@ -653,13 +654,12 @@ def project(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def purpose(self) -> Optional[pulumi.Input[str]]: """ - The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. """ return pulumi.get(self, "purpose") @@ -684,10 +684,10 @@ def region(self, value: Optional[pulumi.Input[str]]): def role(self) -> Optional[pulumi.Input[str]]: """ The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. """ return pulumi.get(self, "role") @@ -835,7 +835,7 @@ def __init__(__self__, network_for_l7lb = gcp.compute.Subnetwork("network-for-l7lb", ip_cidr_range="10.0.0.0/22", region="us-central1", - purpose="INTERNAL_HTTPS_LOAD_BALANCER", + purpose="REGIONAL_MANAGED_PROXY", role="ACTIVE", network=custom_test.id, opts=pulumi.ResourceOptions(provider=google_beta)) @@ -904,9 +904,10 @@ def __init__(__self__, or the first time the subnet is updated into IPV4_IPV6 dual stack. If the ipv6_type is EXTERNAL then this subnet cannot enable direct path. Possible values are: `EXTERNAL`, `INTERNAL`. - :param pulumi.Input[pulumi.InputType['SubnetworkLogConfigArgs']] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + :param pulumi.Input[pulumi.InputType['SubnetworkLogConfigArgs']] log_config: This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. :param pulumi.Input[str] name: The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and @@ -925,19 +926,18 @@ def __init__(__self__, :param pulumi.Input[str] private_ipv6_google_access: The private IPv6 google access type for the VMs in this subnet. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. :param pulumi.Input[str] region: The GCP region for this subnetwork. :param pulumi.Input[str] role: The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SubnetworkSecondaryIpRangeArgs']]]] secondary_ip_ranges: An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong @@ -1030,7 +1030,7 @@ def __init__(__self__, network_for_l7lb = gcp.compute.Subnetwork("network-for-l7lb", ip_cidr_range="10.0.0.0/22", region="us-central1", - purpose="INTERNAL_HTTPS_LOAD_BALANCER", + purpose="REGIONAL_MANAGED_PROXY", role="ACTIVE", network=custom_test.id, opts=pulumi.ResourceOptions(provider=google_beta)) @@ -1202,9 +1202,10 @@ def get(resource_name: str, cannot enable direct path. Possible values are: `EXTERNAL`, `INTERNAL`. :param pulumi.Input[str] ipv6_cidr_range: The range of internal IPv6 addresses that are owned by this subnetwork. - :param pulumi.Input[pulumi.InputType['SubnetworkLogConfigArgs']] log_config: Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + :param pulumi.Input[pulumi.InputType['SubnetworkLogConfigArgs']] log_config: This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. :param pulumi.Input[str] name: The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and @@ -1223,19 +1224,18 @@ def get(resource_name: str, :param pulumi.Input[str] private_ipv6_google_access: The private IPv6 google access type for the VMs in this subnet. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. - :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + :param pulumi.Input[str] purpose: The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. :param pulumi.Input[str] region: The GCP region for this subnetwork. :param pulumi.Input[str] role: The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SubnetworkSecondaryIpRangeArgs']]]] secondary_ip_ranges: An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong @@ -1353,9 +1353,10 @@ def ipv6_cidr_range(self) -> pulumi.Output[str]: @pulumi.getter(name="logConfig") def log_config(self) -> pulumi.Output[Optional['outputs.SubnetworkLogConfig']]: """ - Denotes the logging options for the subnetwork flow logs. If logging is enabled - logs will be exported to Stackdriver. This field cannot be set if the `purpose` of this - subnetwork is `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY` + This field denotes the VPC flow logging options for this subnetwork. If + logging is enabled, logs are exported to Cloud Logging. Flow logging + isn't supported if the subnet `purpose` field is set to subnetwork is + `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. Structure is documented below. """ return pulumi.get(self, "log_config") @@ -1416,13 +1417,12 @@ def project(self) -> pulumi.Output[str]: @pulumi.getter def purpose(self) -> pulumi.Output[str]: """ - The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `INTERNAL_HTTPS_LOAD_BALANCER`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY` or `PRIVATE_SERVICE_CONNECT`. - A subnetwork with purpose set to `INTERNAL_HTTPS_LOAD_BALANCER` is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. - A subnetwork in a given region with purpose set to `REGIONAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the regional Envoy-based load balancers. + The purpose of the resource. This field can be either `PRIVATE_RFC_1918`, `REGIONAL_MANAGED_PROXY`, `GLOBAL_MANAGED_PROXY`, or `PRIVATE_SERVICE_CONNECT`. + A subnet with purpose set to `REGIONAL_MANAGED_PROXY` is a user-created subnetwork that is reserved for regional Envoy-based load balancers. A subnetwork in a given region with purpose set to `GLOBAL_MANAGED_PROXY` is a proxy-only subnet and is shared between all the cross-regional Envoy-based load balancers. A subnetwork with purpose set to `PRIVATE_SERVICE_CONNECT` reserves the subnet for hosting a Private Service Connect published service. + Note that `REGIONAL_MANAGED_PROXY` is the preferred setting for all regional Envoy load balancers. If unspecified, the purpose defaults to `PRIVATE_RFC_1918`. - The enableFlowLogs field isn't supported with the purpose field set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY` or `GLOBAL_MANAGED_PROXY`. """ return pulumi.get(self, "purpose") @@ -1439,10 +1439,10 @@ def region(self) -> pulumi.Output[str]: def role(self) -> pulumi.Output[Optional[str]]: """ The role of subnetwork. + Currently, this field is only used when `purpose` is `REGIONAL_MANAGED_PROXY`. The value can be set to `ACTIVE` or `BACKUP`. - An `ACTIVE` subnetwork is one that is currently being used. + An `ACTIVE` subnetwork is one that is currently being used for Envoy-based load balancers in a region. A `BACKUP` subnetwork is one that is ready to be promoted to `ACTIVE` or is currently draining. - Subnetwork role must be specified when purpose is set to `INTERNAL_HTTPS_LOAD_BALANCER` or `REGIONAL_MANAGED_PROXY`. Possible values are: `ACTIVE`, `BACKUP`. """ return pulumi.get(self, "role") diff --git a/sdk/python/pulumi_gcp/config/__init__.pyi b/sdk/python/pulumi_gcp/config/__init__.pyi index 0d7a243619..ae08daabbc 100644 --- a/sdk/python/pulumi_gcp/config/__init__.pyi +++ b/sdk/python/pulumi_gcp/config/__init__.pyi @@ -32,6 +32,8 @@ artifactRegistryCustomEndpoint: Optional[str] assuredWorkloadsCustomEndpoint: Optional[str] +backupDrCustomEndpoint: Optional[str] + batching: Optional[str] beyondcorpCustomEndpoint: Optional[str] diff --git a/sdk/python/pulumi_gcp/config/vars.py b/sdk/python/pulumi_gcp/config/vars.py index 41013ca2a5..b30b82ed41 100644 --- a/sdk/python/pulumi_gcp/config/vars.py +++ b/sdk/python/pulumi_gcp/config/vars.py @@ -60,6 +60,10 @@ def artifact_registry_custom_endpoint(self) -> Optional[str]: def assured_workloads_custom_endpoint(self) -> Optional[str]: return __config__.get('assuredWorkloadsCustomEndpoint') + @property + def backup_dr_custom_endpoint(self) -> Optional[str]: + return __config__.get('backupDrCustomEndpoint') + @property def batching(self) -> Optional[str]: return __config__.get('batching') diff --git a/sdk/python/pulumi_gcp/container/aws_cluster.py b/sdk/python/pulumi_gcp/container/aws_cluster.py index 30d6d1a535..e7414be5ef 100644 --- a/sdk/python/pulumi_gcp/container/aws_cluster.py +++ b/sdk/python/pulumi_gcp/container/aws_cluster.py @@ -607,6 +607,156 @@ def __init__(__self__, ), project="my-project-name") ``` + ### Basic_enum_aws_cluster + A basic example of a containeraws cluster with lowercase enums + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(location="us-west1", + project="my-project-name") + primary = gcp.container.AwsCluster("primary", + annotations={ + "label-one": "value-one", + }, + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + subnet_ids=["subnet-00000000000000000"], + tags={ + "owner": "my@service-account.com", + }, + version=versions.valid_versions[0], + ), + description="A sample aws cluster", + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + project="my-project-name") + ``` + ### Beta_basic_enum_aws_cluster + A basic example of a containeraws cluster with lowercase enums (beta) + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(project="my-project-name", + location="us-west1") + primary = gcp.container.AwsCluster("primary", + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + subnet_ids=["subnet-00000000000000000"], + version=versions.valid_versions[0], + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "owner": "my@service-account.com", + }, + instance_placement=gcp.container.AwsClusterControlPlaneInstancePlacementArgs( + tenancy="dedicated", + ), + ), + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + annotations={ + "label-one": "value-one", + }, + description="A sample aws cluster", + project="my-project-name", + logging_config=gcp.container.AwsClusterLoggingConfigArgs( + component_config=gcp.container.AwsClusterLoggingConfigComponentConfigArgs( + enable_components=[ + "system_components", + "workloads", + ], + ), + ), + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import @@ -722,6 +872,156 @@ def __init__(__self__, ), project="my-project-name") ``` + ### Basic_enum_aws_cluster + A basic example of a containeraws cluster with lowercase enums + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(location="us-west1", + project="my-project-name") + primary = gcp.container.AwsCluster("primary", + annotations={ + "label-one": "value-one", + }, + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + subnet_ids=["subnet-00000000000000000"], + tags={ + "owner": "my@service-account.com", + }, + version=versions.valid_versions[0], + ), + description="A sample aws cluster", + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + project="my-project-name") + ``` + ### Beta_basic_enum_aws_cluster + A basic example of a containeraws cluster with lowercase enums (beta) + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(project="my-project-name", + location="us-west1") + primary = gcp.container.AwsCluster("primary", + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + subnet_ids=["subnet-00000000000000000"], + version=versions.valid_versions[0], + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "owner": "my@service-account.com", + }, + instance_placement=gcp.container.AwsClusterControlPlaneInstancePlacementArgs( + tenancy="dedicated", + ), + ), + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + annotations={ + "label-one": "value-one", + }, + description="A sample aws cluster", + project="my-project-name", + logging_config=gcp.container.AwsClusterLoggingConfigArgs( + component_config=gcp.container.AwsClusterLoggingConfigComponentConfigArgs( + enable_components=[ + "system_components", + "workloads", + ], + ), + ), + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import diff --git a/sdk/python/pulumi_gcp/container/aws_node_pool.py b/sdk/python/pulumi_gcp/container/aws_node_pool.py index 9ec3d873a6..11424ddfce 100644 --- a/sdk/python/pulumi_gcp/container/aws_node_pool.py +++ b/sdk/python/pulumi_gcp/container/aws_node_pool.py @@ -577,6 +577,246 @@ def __init__(__self__, }, project="my-project-name") ``` + ### Basic_enum_aws_cluster + A basic example of a containeraws node pool with lowercase enums + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(project="my-project-name", + location="us-west1") + primary_aws_cluster = gcp.container.AwsCluster("primaryAwsCluster", + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + subnet_ids=["subnet-00000000000000000"], + version=versions.valid_versions[0], + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "owner": "my@service-account.com", + }, + ), + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + annotations={ + "label-one": "value-one", + }, + description="A sample aws cluster", + project="my-project-name") + primary_aws_node_pool = gcp.container.AwsNodePool("primaryAwsNodePool", + autoscaling=gcp.container.AwsNodePoolAutoscalingArgs( + max_node_count=5, + min_node_count=1, + ), + cluster=primary_aws_cluster.name, + config=gcp.container.AwsNodePoolConfigArgs( + config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-nodepool", + instance_type="t3.medium", + labels={ + "label-one": "value-one", + }, + root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "tag-one": "value-one", + }, + taints=[gcp.container.AwsNodePoolConfigTaintArgs( + effect="prefer_no_schedule", + key="taint-key", + value="taint-value", + )], + ), + location="us-west1", + max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs( + max_pods_per_node=110, + ), + subnet_id="subnet-00000000000000000", + version=versions.valid_versions[0], + annotations={ + "label-one": "value-one", + }, + project="my-project-name") + ``` + ### Beta_basic_enum_aws_cluster + A basic example of a containeraws node pool with lowercase enums (beta) + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(project="my-project-name", + location="us-west1") + primary_aws_cluster = gcp.container.AwsCluster("primaryAwsCluster", + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + subnet_ids=["subnet-00000000000000000"], + version=versions.valid_versions[0], + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "owner": "my@service-account.com", + }, + ), + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + annotations={ + "label-one": "value-one", + }, + description="A sample aws cluster", + project="my-project-name", + opts=pulumi.ResourceOptions(provider=google_beta)) + primary_aws_node_pool = gcp.container.AwsNodePool("primaryAwsNodePool", + autoscaling=gcp.container.AwsNodePoolAutoscalingArgs( + max_node_count=5, + min_node_count=1, + ), + cluster=primary_aws_cluster.name, + config=gcp.container.AwsNodePoolConfigArgs( + config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-nodepool", + instance_type="t3.medium", + labels={ + "label-one": "value-one", + }, + root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "tag-one": "value-one", + }, + taints=[gcp.container.AwsNodePoolConfigTaintArgs( + effect="prefer_no_schedule", + key="taint-key", + value="taint-value", + )], + instance_placement=gcp.container.AwsNodePoolConfigInstancePlacementArgs( + tenancy="dedicated", + ), + image_type="ubuntu", + ), + location="us-west1", + max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs( + max_pods_per_node=110, + ), + subnet_id="subnet-00000000000000000", + version=versions.valid_versions[0], + annotations={ + "label-one": "value-one", + }, + project="my-project-name", + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import @@ -736,6 +976,246 @@ def __init__(__self__, }, project="my-project-name") ``` + ### Basic_enum_aws_cluster + A basic example of a containeraws node pool with lowercase enums + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(project="my-project-name", + location="us-west1") + primary_aws_cluster = gcp.container.AwsCluster("primaryAwsCluster", + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + subnet_ids=["subnet-00000000000000000"], + version=versions.valid_versions[0], + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "owner": "my@service-account.com", + }, + ), + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + annotations={ + "label-one": "value-one", + }, + description="A sample aws cluster", + project="my-project-name") + primary_aws_node_pool = gcp.container.AwsNodePool("primaryAwsNodePool", + autoscaling=gcp.container.AwsNodePoolAutoscalingArgs( + max_node_count=5, + min_node_count=1, + ), + cluster=primary_aws_cluster.name, + config=gcp.container.AwsNodePoolConfigArgs( + config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-nodepool", + instance_type="t3.medium", + labels={ + "label-one": "value-one", + }, + root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "tag-one": "value-one", + }, + taints=[gcp.container.AwsNodePoolConfigTaintArgs( + effect="prefer_no_schedule", + key="taint-key", + value="taint-value", + )], + ), + location="us-west1", + max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs( + max_pods_per_node=110, + ), + subnet_id="subnet-00000000000000000", + version=versions.valid_versions[0], + annotations={ + "label-one": "value-one", + }, + project="my-project-name") + ``` + ### Beta_basic_enum_aws_cluster + A basic example of a containeraws node pool with lowercase enums (beta) + ```python + import pulumi + import pulumi_gcp as gcp + + versions = gcp.container.get_aws_versions(project="my-project-name", + location="us-west1") + primary_aws_cluster = gcp.container.AwsCluster("primaryAwsCluster", + authorization=gcp.container.AwsClusterAuthorizationArgs( + admin_users=[gcp.container.AwsClusterAuthorizationAdminUserArgs( + username="my@service-account.com", + )], + ), + aws_region="my-aws-region", + control_plane=gcp.container.AwsClusterControlPlaneArgs( + aws_services_authentication=gcp.container.AwsClusterControlPlaneAwsServicesAuthenticationArgs( + role_arn="arn:aws:iam::012345678910:role/my--1p-dev-oneplatform", + role_session_name="my--1p-dev-session", + ), + config_encryption=gcp.container.AwsClusterControlPlaneConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + database_encryption=gcp.container.AwsClusterControlPlaneDatabaseEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-controlplane", + subnet_ids=["subnet-00000000000000000"], + version=versions.valid_versions[0], + instance_type="t3.medium", + main_volume=gcp.container.AwsClusterControlPlaneMainVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + proxy_config=gcp.container.AwsClusterControlPlaneProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + root_volume=gcp.container.AwsClusterControlPlaneRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="GP3", + ), + security_group_ids=["sg-00000000000000000"], + ssh_config=gcp.container.AwsClusterControlPlaneSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "owner": "my@service-account.com", + }, + ), + fleet=gcp.container.AwsClusterFleetArgs( + project="my-project-number", + ), + location="us-west1", + networking=gcp.container.AwsClusterNetworkingArgs( + pod_address_cidr_blocks=["10.2.0.0/16"], + service_address_cidr_blocks=["10.1.0.0/16"], + vpc_id="vpc-00000000000000000", + ), + annotations={ + "label-one": "value-one", + }, + description="A sample aws cluster", + project="my-project-name", + opts=pulumi.ResourceOptions(provider=google_beta)) + primary_aws_node_pool = gcp.container.AwsNodePool("primaryAwsNodePool", + autoscaling=gcp.container.AwsNodePoolAutoscalingArgs( + max_node_count=5, + min_node_count=1, + ), + cluster=primary_aws_cluster.name, + config=gcp.container.AwsNodePoolConfigArgs( + config_encryption=gcp.container.AwsNodePoolConfigConfigEncryptionArgs( + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + ), + iam_instance_profile="my--1p-dev-nodepool", + instance_type="t3.medium", + labels={ + "label-one": "value-one", + }, + root_volume=gcp.container.AwsNodePoolConfigRootVolumeArgs( + iops=3000, + kms_key_arn="arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111", + size_gib=10, + volume_type="gp3", + ), + security_group_ids=["sg-00000000000000000"], + proxy_config=gcp.container.AwsNodePoolConfigProxyConfigArgs( + secret_arn="arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF", + secret_version="12345678-ABCD-EFGH-IJKL-987654321098", + ), + ssh_config=gcp.container.AwsNodePoolConfigSshConfigArgs( + ec2_key_pair="my--1p-dev-ssh", + ), + tags={ + "tag-one": "value-one", + }, + taints=[gcp.container.AwsNodePoolConfigTaintArgs( + effect="prefer_no_schedule", + key="taint-key", + value="taint-value", + )], + instance_placement=gcp.container.AwsNodePoolConfigInstancePlacementArgs( + tenancy="dedicated", + ), + image_type="ubuntu", + ), + location="us-west1", + max_pods_constraint=gcp.container.AwsNodePoolMaxPodsConstraintArgs( + max_pods_per_node=110, + ), + subnet_id="subnet-00000000000000000", + version=versions.valid_versions[0], + annotations={ + "label-one": "value-one", + }, + project="my-project-name", + opts=pulumi.ResourceOptions(provider=google_beta)) + ``` ## Import diff --git a/sdk/python/pulumi_gcp/databasemigrationservice/_inputs.py b/sdk/python/pulumi_gcp/databasemigrationservice/_inputs.py index aa2c99ab5c..5d19c5e1bf 100644 --- a/sdk/python/pulumi_gcp/databasemigrationservice/_inputs.py +++ b/sdk/python/pulumi_gcp/databasemigrationservice/_inputs.py @@ -400,6 +400,7 @@ def __init__(__self__, *, data_disk_type: Optional[pulumi.Input[str]] = None, database_flags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, database_version: Optional[pulumi.Input[str]] = None, + edition: Optional[pulumi.Input[str]] = None, ip_config: Optional[pulumi.Input['ConnectionProfileCloudsqlSettingsIpConfigArgs']] = None, root_password: Optional[pulumi.Input[str]] = None, root_password_set: Optional[pulumi.Input[bool]] = None, @@ -421,6 +422,8 @@ def __init__(__self__, *, :param pulumi.Input[Mapping[str, pulumi.Input[str]]] database_flags: The database flags passed to the Cloud SQL instance at startup. :param pulumi.Input[str] database_version: The database engine type and version. Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion + :param pulumi.Input[str] edition: The edition of the given Cloud SQL instance. + Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. :param pulumi.Input['ConnectionProfileCloudsqlSettingsIpConfigArgs'] ip_config: The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. Structure is documented below. :param pulumi.Input[str] root_password: Input only. Initial root password. @@ -450,6 +453,8 @@ def __init__(__self__, *, pulumi.set(__self__, "database_flags", database_flags) if database_version is not None: pulumi.set(__self__, "database_version", database_version) + if edition is not None: + pulumi.set(__self__, "edition", edition) if ip_config is not None: pulumi.set(__self__, "ip_config", ip_config) if root_password is not None: @@ -577,6 +582,19 @@ def database_version(self) -> Optional[pulumi.Input[str]]: def database_version(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "database_version", value) + @property + @pulumi.getter + def edition(self) -> Optional[pulumi.Input[str]]: + """ + The edition of the given Cloud SQL instance. + Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + """ + return pulumi.get(self, "edition") + + @edition.setter + def edition(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "edition", value) + @property @pulumi.getter(name="ipConfig") def ip_config(self) -> Optional[pulumi.Input['ConnectionProfileCloudsqlSettingsIpConfigArgs']]: diff --git a/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py b/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py index 39b76a26e0..7b7e03b458 100644 --- a/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py +++ b/sdk/python/pulumi_gcp/databasemigrationservice/connection_profile.py @@ -515,6 +515,7 @@ def __init__(__self__, "cloudfoo": "cloudbar", }, tier="db-n1-standard-1", + edition="ENTERPRISE", storage_auto_resize_limit="0", activation_policy="ALWAYS", ip_config=gcp.databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs( @@ -685,6 +686,7 @@ def __init__(__self__, "cloudfoo": "cloudbar", }, tier="db-n1-standard-1", + edition="ENTERPRISE", storage_auto_resize_limit="0", activation_policy="ALWAYS", ip_config=gcp.databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs( diff --git a/sdk/python/pulumi_gcp/databasemigrationservice/outputs.py b/sdk/python/pulumi_gcp/databasemigrationservice/outputs.py index 93bd731632..1f1c23a42d 100644 --- a/sdk/python/pulumi_gcp/databasemigrationservice/outputs.py +++ b/sdk/python/pulumi_gcp/databasemigrationservice/outputs.py @@ -480,6 +480,7 @@ def __init__(__self__, *, data_disk_type: Optional[str] = None, database_flags: Optional[Mapping[str, str]] = None, database_version: Optional[str] = None, + edition: Optional[str] = None, ip_config: Optional['outputs.ConnectionProfileCloudsqlSettingsIpConfig'] = None, root_password: Optional[str] = None, root_password_set: Optional[bool] = None, @@ -501,6 +502,8 @@ def __init__(__self__, *, :param Mapping[str, str] database_flags: The database flags passed to the Cloud SQL instance at startup. :param str database_version: The database engine type and version. Currently supported values located at https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles#sqldatabaseversion + :param str edition: The edition of the given Cloud SQL instance. + Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. :param 'ConnectionProfileCloudsqlSettingsIpConfigArgs' ip_config: The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled. Structure is documented below. :param str root_password: Input only. Initial root password. @@ -530,6 +533,8 @@ def __init__(__self__, *, pulumi.set(__self__, "database_flags", database_flags) if database_version is not None: pulumi.set(__self__, "database_version", database_version) + if edition is not None: + pulumi.set(__self__, "edition", edition) if ip_config is not None: pulumi.set(__self__, "ip_config", ip_config) if root_password is not None: @@ -621,6 +626,15 @@ def database_version(self) -> Optional[str]: """ return pulumi.get(self, "database_version") + @property + @pulumi.getter + def edition(self) -> Optional[str]: + """ + The edition of the given Cloud SQL instance. + Possible values are: `ENTERPRISE`, `ENTERPRISE_PLUS`. + """ + return pulumi.get(self, "edition") + @property @pulumi.getter(name="ipConfig") def ip_config(self) -> Optional['outputs.ConnectionProfileCloudsqlSettingsIpConfig']: diff --git a/sdk/python/pulumi_gcp/dataloss/prevention_stored_info_type.py b/sdk/python/pulumi_gcp/dataloss/prevention_stored_info_type.py index a42af0cd76..9045268642 100644 --- a/sdk/python/pulumi_gcp/dataloss/prevention_stored_info_type.py +++ b/sdk/python/pulumi_gcp/dataloss/prevention_stored_info_type.py @@ -384,7 +384,7 @@ def __init__(__self__, force_destroy=True) object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/dlp/words.txt")) + source=pulumi.FileAsset("./test-fixtures/words.txt")) large = gcp.dataloss.PreventionStoredInfoType("large", parent="projects/my-project-name", description="Description", @@ -510,7 +510,7 @@ def __init__(__self__, force_destroy=True) object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/dlp/words.txt")) + source=pulumi.FileAsset("./test-fixtures/words.txt")) large = gcp.dataloss.PreventionStoredInfoType("large", parent="projects/my-project-name", description="Description", diff --git a/sdk/python/pulumi_gcp/dataproc/_inputs.py b/sdk/python/pulumi_gcp/dataproc/_inputs.py index 0ccd35aa86..433a1bd795 100644 --- a/sdk/python/pulumi_gcp/dataproc/_inputs.py +++ b/sdk/python/pulumi_gcp/dataproc/_inputs.py @@ -87,6 +87,7 @@ 'MetastoreServiceMetadataIntegrationDataCatalogConfigArgs', 'MetastoreServiceNetworkConfigArgs', 'MetastoreServiceNetworkConfigConsumerArgs', + 'MetastoreServiceScalingConfigArgs', 'MetastoreServiceTelemetryConfigArgs', 'WorkflowTemplateJobArgs', 'WorkflowTemplateJobHadoopJobArgs', @@ -5158,6 +5159,47 @@ def endpoint_uri(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "endpoint_uri", value) +@pulumi.input_type +class MetastoreServiceScalingConfigArgs: + def __init__(__self__, *, + instance_size: Optional[pulumi.Input[str]] = None, + scaling_factor: Optional[pulumi.Input[float]] = None): + """ + :param pulumi.Input[str] instance_size: Metastore instance sizes. + Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + :param pulumi.Input[float] scaling_factor: Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + """ + if instance_size is not None: + pulumi.set(__self__, "instance_size", instance_size) + if scaling_factor is not None: + pulumi.set(__self__, "scaling_factor", scaling_factor) + + @property + @pulumi.getter(name="instanceSize") + def instance_size(self) -> Optional[pulumi.Input[str]]: + """ + Metastore instance sizes. + Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + """ + return pulumi.get(self, "instance_size") + + @instance_size.setter + def instance_size(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "instance_size", value) + + @property + @pulumi.getter(name="scalingFactor") + def scaling_factor(self) -> Optional[pulumi.Input[float]]: + """ + Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + """ + return pulumi.get(self, "scaling_factor") + + @scaling_factor.setter + def scaling_factor(self, value: Optional[pulumi.Input[float]]): + pulumi.set(self, "scaling_factor", value) + + @pulumi.input_type class MetastoreServiceTelemetryConfigArgs: def __init__(__self__, *, diff --git a/sdk/python/pulumi_gcp/dataproc/metastore_service.py b/sdk/python/pulumi_gcp/dataproc/metastore_service.py index e09b7e01d4..5207a09a9f 100644 --- a/sdk/python/pulumi_gcp/dataproc/metastore_service.py +++ b/sdk/python/pulumi_gcp/dataproc/metastore_service.py @@ -29,6 +29,7 @@ def __init__(__self__, *, port: Optional[pulumi.Input[int]] = None, project: Optional[pulumi.Input[str]] = None, release_channel: Optional[pulumi.Input[str]] = None, + scaling_config: Optional[pulumi.Input['MetastoreServiceScalingConfigArgs']] = None, telemetry_config: Optional[pulumi.Input['MetastoreServiceTelemetryConfigArgs']] = None, tier: Optional[pulumi.Input[str]] = None): """ @@ -65,6 +66,8 @@ def __init__(__self__, *, :param pulumi.Input[str] release_channel: The release channel of the service. If unspecified, defaults to `STABLE`. Default value is `STABLE`. Possible values are: `CANARY`, `STABLE`. + :param pulumi.Input['MetastoreServiceScalingConfigArgs'] scaling_config: Represents the scaling configuration of a metastore service. + Structure is documented below. :param pulumi.Input['MetastoreServiceTelemetryConfigArgs'] telemetry_config: The configuration specifying telemetry settings for the Dataproc Metastore service. If unspecified defaults to JSON. Structure is documented below. :param pulumi.Input[str] tier: The tier of the service. @@ -95,6 +98,8 @@ def __init__(__self__, *, pulumi.set(__self__, "project", project) if release_channel is not None: pulumi.set(__self__, "release_channel", release_channel) + if scaling_config is not None: + pulumi.set(__self__, "scaling_config", scaling_config) if telemetry_config is not None: pulumi.set(__self__, "telemetry_config", telemetry_config) if tier is not None: @@ -275,6 +280,19 @@ def release_channel(self) -> Optional[pulumi.Input[str]]: def release_channel(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "release_channel", value) + @property + @pulumi.getter(name="scalingConfig") + def scaling_config(self) -> Optional[pulumi.Input['MetastoreServiceScalingConfigArgs']]: + """ + Represents the scaling configuration of a metastore service. + Structure is documented below. + """ + return pulumi.get(self, "scaling_config") + + @scaling_config.setter + def scaling_config(self, value: Optional[pulumi.Input['MetastoreServiceScalingConfigArgs']]): + pulumi.set(self, "scaling_config", value) + @property @pulumi.getter(name="telemetryConfig") def telemetry_config(self) -> Optional[pulumi.Input['MetastoreServiceTelemetryConfigArgs']]: @@ -320,6 +338,7 @@ def __init__(__self__, *, port: Optional[pulumi.Input[int]] = None, project: Optional[pulumi.Input[str]] = None, release_channel: Optional[pulumi.Input[str]] = None, + scaling_config: Optional[pulumi.Input['MetastoreServiceScalingConfigArgs']] = None, service_id: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, state_message: Optional[pulumi.Input[str]] = None, @@ -358,6 +377,8 @@ def __init__(__self__, *, :param pulumi.Input[str] release_channel: The release channel of the service. If unspecified, defaults to `STABLE`. Default value is `STABLE`. Possible values are: `CANARY`, `STABLE`. + :param pulumi.Input['MetastoreServiceScalingConfigArgs'] scaling_config: Represents the scaling configuration of a metastore service. + Structure is documented below. :param pulumi.Input[str] service_id: The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 63 characters. @@ -402,6 +423,8 @@ def __init__(__self__, *, pulumi.set(__self__, "project", project) if release_channel is not None: pulumi.set(__self__, "release_channel", release_channel) + if scaling_config is not None: + pulumi.set(__self__, "scaling_config", scaling_config) if service_id is not None: pulumi.set(__self__, "service_id", service_id) if state is not None: @@ -610,6 +633,19 @@ def release_channel(self) -> Optional[pulumi.Input[str]]: def release_channel(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "release_channel", value) + @property + @pulumi.getter(name="scalingConfig") + def scaling_config(self) -> Optional[pulumi.Input['MetastoreServiceScalingConfigArgs']]: + """ + Represents the scaling configuration of a metastore service. + Structure is documented below. + """ + return pulumi.get(self, "scaling_config") + + @scaling_config.setter + def scaling_config(self, value: Optional[pulumi.Input['MetastoreServiceScalingConfigArgs']]): + pulumi.set(self, "scaling_config", value) + @property @pulumi.getter(name="serviceId") def service_id(self) -> Optional[pulumi.Input[str]]: @@ -707,6 +743,7 @@ def __init__(__self__, port: Optional[pulumi.Input[int]] = None, project: Optional[pulumi.Input[str]] = None, release_channel: Optional[pulumi.Input[str]] = None, + scaling_config: Optional[pulumi.Input[pulumi.InputType['MetastoreServiceScalingConfigArgs']]] = None, service_id: Optional[pulumi.Input[str]] = None, telemetry_config: Optional[pulumi.Input[pulumi.InputType['MetastoreServiceTelemetryConfigArgs']]] = None, tier: Optional[pulumi.Input[str]] = None, @@ -786,6 +823,40 @@ def __init__(__self__, )], )) ``` + ### Dataproc Metastore Service Dpms2 + + ```python + import pulumi + import pulumi_gcp as gcp + + dpms2 = gcp.dataproc.MetastoreService("dpms2", + database_type="SPANNER", + hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs( + version="3.1.2", + ), + location="us-central1", + scaling_config=gcp.dataproc.MetastoreServiceScalingConfigArgs( + instance_size="EXTRA_SMALL", + ), + service_id="dpms2") + ``` + ### Dataproc Metastore Service Dpms2 Scaling Factor + + ```python + import pulumi + import pulumi_gcp as gcp + + dpms2_scaling_factor = gcp.dataproc.MetastoreService("dpms2ScalingFactor", + database_type="SPANNER", + hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs( + version="3.1.2", + ), + location="us-central1", + scaling_config=gcp.dataproc.MetastoreServiceScalingConfigArgs( + scaling_factor=2, + ), + service_id="dpms2sf") + ``` ## Import @@ -831,6 +902,8 @@ def __init__(__self__, :param pulumi.Input[str] release_channel: The release channel of the service. If unspecified, defaults to `STABLE`. Default value is `STABLE`. Possible values are: `CANARY`, `STABLE`. + :param pulumi.Input[pulumi.InputType['MetastoreServiceScalingConfigArgs']] scaling_config: Represents the scaling configuration of a metastore service. + Structure is documented below. :param pulumi.Input[str] service_id: The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 63 characters. @@ -923,6 +996,40 @@ def __init__(__self__, )], )) ``` + ### Dataproc Metastore Service Dpms2 + + ```python + import pulumi + import pulumi_gcp as gcp + + dpms2 = gcp.dataproc.MetastoreService("dpms2", + database_type="SPANNER", + hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs( + version="3.1.2", + ), + location="us-central1", + scaling_config=gcp.dataproc.MetastoreServiceScalingConfigArgs( + instance_size="EXTRA_SMALL", + ), + service_id="dpms2") + ``` + ### Dataproc Metastore Service Dpms2 Scaling Factor + + ```python + import pulumi + import pulumi_gcp as gcp + + dpms2_scaling_factor = gcp.dataproc.MetastoreService("dpms2ScalingFactor", + database_type="SPANNER", + hive_metastore_config=gcp.dataproc.MetastoreServiceHiveMetastoreConfigArgs( + version="3.1.2", + ), + location="us-central1", + scaling_config=gcp.dataproc.MetastoreServiceScalingConfigArgs( + scaling_factor=2, + ), + service_id="dpms2sf") + ``` ## Import @@ -967,6 +1074,7 @@ def _internal_init(__self__, port: Optional[pulumi.Input[int]] = None, project: Optional[pulumi.Input[str]] = None, release_channel: Optional[pulumi.Input[str]] = None, + scaling_config: Optional[pulumi.Input[pulumi.InputType['MetastoreServiceScalingConfigArgs']]] = None, service_id: Optional[pulumi.Input[str]] = None, telemetry_config: Optional[pulumi.Input[pulumi.InputType['MetastoreServiceTelemetryConfigArgs']]] = None, tier: Optional[pulumi.Input[str]] = None, @@ -991,6 +1099,7 @@ def _internal_init(__self__, __props__.__dict__["port"] = port __props__.__dict__["project"] = project __props__.__dict__["release_channel"] = release_channel + __props__.__dict__["scaling_config"] = scaling_config if service_id is None and not opts.urn: raise TypeError("Missing required property 'service_id'") __props__.__dict__["service_id"] = service_id @@ -1027,6 +1136,7 @@ def get(resource_name: str, port: Optional[pulumi.Input[int]] = None, project: Optional[pulumi.Input[str]] = None, release_channel: Optional[pulumi.Input[str]] = None, + scaling_config: Optional[pulumi.Input[pulumi.InputType['MetastoreServiceScalingConfigArgs']]] = None, service_id: Optional[pulumi.Input[str]] = None, state: Optional[pulumi.Input[str]] = None, state_message: Optional[pulumi.Input[str]] = None, @@ -1070,6 +1180,8 @@ def get(resource_name: str, :param pulumi.Input[str] release_channel: The release channel of the service. If unspecified, defaults to `STABLE`. Default value is `STABLE`. Possible values are: `CANARY`, `STABLE`. + :param pulumi.Input[pulumi.InputType['MetastoreServiceScalingConfigArgs']] scaling_config: Represents the scaling configuration of a metastore service. + Structure is documented below. :param pulumi.Input[str] service_id: The ID of the metastore service. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 63 characters. @@ -1103,6 +1215,7 @@ def get(resource_name: str, __props__.__dict__["port"] = port __props__.__dict__["project"] = project __props__.__dict__["release_channel"] = release_channel + __props__.__dict__["scaling_config"] = scaling_config __props__.__dict__["service_id"] = service_id __props__.__dict__["state"] = state __props__.__dict__["state_message"] = state_message @@ -1246,6 +1359,15 @@ def release_channel(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "release_channel") + @property + @pulumi.getter(name="scalingConfig") + def scaling_config(self) -> pulumi.Output[Optional['outputs.MetastoreServiceScalingConfig']]: + """ + Represents the scaling configuration of a metastore service. + Structure is documented below. + """ + return pulumi.get(self, "scaling_config") + @property @pulumi.getter(name="serviceId") def service_id(self) -> pulumi.Output[str]: diff --git a/sdk/python/pulumi_gcp/dataproc/outputs.py b/sdk/python/pulumi_gcp/dataproc/outputs.py index e1c94ad509..f06302efc6 100644 --- a/sdk/python/pulumi_gcp/dataproc/outputs.py +++ b/sdk/python/pulumi_gcp/dataproc/outputs.py @@ -88,6 +88,7 @@ 'MetastoreServiceMetadataIntegrationDataCatalogConfig', 'MetastoreServiceNetworkConfig', 'MetastoreServiceNetworkConfigConsumer', + 'MetastoreServiceScalingConfig', 'MetastoreServiceTelemetryConfig', 'WorkflowTemplateJob', 'WorkflowTemplateJobHadoopJob', @@ -5438,6 +5439,58 @@ def endpoint_uri(self) -> Optional[str]: return pulumi.get(self, "endpoint_uri") +@pulumi.output_type +class MetastoreServiceScalingConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "instanceSize": + suggest = "instance_size" + elif key == "scalingFactor": + suggest = "scaling_factor" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in MetastoreServiceScalingConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + MetastoreServiceScalingConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + MetastoreServiceScalingConfig.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + instance_size: Optional[str] = None, + scaling_factor: Optional[float] = None): + """ + :param str instance_size: Metastore instance sizes. + Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + :param float scaling_factor: Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + """ + if instance_size is not None: + pulumi.set(__self__, "instance_size", instance_size) + if scaling_factor is not None: + pulumi.set(__self__, "scaling_factor", scaling_factor) + + @property + @pulumi.getter(name="instanceSize") + def instance_size(self) -> Optional[str]: + """ + Metastore instance sizes. + Possible values are: `EXTRA_SMALL`, `SMALL`, `MEDIUM`, `LARGE`, `EXTRA_LARGE`. + """ + return pulumi.get(self, "instance_size") + + @property + @pulumi.getter(name="scalingFactor") + def scaling_factor(self) -> Optional[float]: + """ + Scaling factor, in increments of 0.1 for values less than 1.0, and increments of 1.0 for values greater than 1.0. + """ + return pulumi.get(self, "scaling_factor") + + @pulumi.output_type class MetastoreServiceTelemetryConfig(dict): @staticmethod diff --git a/sdk/python/pulumi_gcp/dns/_inputs.py b/sdk/python/pulumi_gcp/dns/_inputs.py index 99c11e953b..51e180c05d 100644 --- a/sdk/python/pulumi_gcp/dns/_inputs.py +++ b/sdk/python/pulumi_gcp/dns/_inputs.py @@ -441,24 +441,16 @@ def network_url(self, value: pulumi.Input[str]): @pulumi.input_type class ManagedZonePrivateVisibilityConfigArgs: def __init__(__self__, *, - networks: pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigNetworkArgs']]], - gke_clusters: Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigGkeClusterArgs']]]] = None): + gke_clusters: Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigGkeClusterArgs']]]] = None, + networks: Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigNetworkArgs']]]] = None): """ :param pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigGkeClusterArgs']]] gke_clusters: The list of Google Kubernetes Engine clusters that can see this zone. Structure is documented below. """ - pulumi.set(__self__, "networks", networks) if gke_clusters is not None: pulumi.set(__self__, "gke_clusters", gke_clusters) - - @property - @pulumi.getter - def networks(self) -> pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigNetworkArgs']]]: - return pulumi.get(self, "networks") - - @networks.setter - def networks(self, value: pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigNetworkArgs']]]): - pulumi.set(self, "networks", value) + if networks is not None: + pulumi.set(__self__, "networks", networks) @property @pulumi.getter(name="gkeClusters") @@ -473,6 +465,15 @@ def gke_clusters(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZo def gke_clusters(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigGkeClusterArgs']]]]): pulumi.set(self, "gke_clusters", value) + @property + @pulumi.getter + def networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigNetworkArgs']]]]: + return pulumi.get(self, "networks") + + @networks.setter + def networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ManagedZonePrivateVisibilityConfigNetworkArgs']]]]): + pulumi.set(self, "networks", value) + @pulumi.input_type class ManagedZonePrivateVisibilityConfigGkeClusterArgs: @@ -848,7 +849,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] ip_address: The frontend IP address of the load balancer. :param pulumi.Input[str] ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param pulumi.Input[str] network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param pulumi.Input[str] port: The configured port of the load balancer. :param pulumi.Input[str] project: The ID of the project in which the load balancer belongs. @@ -891,7 +892,7 @@ def ip_protocol(self, value: pulumi.Input[str]): @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> pulumi.Input[str]: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") @@ -1114,7 +1115,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] ip_address: The frontend IP address of the load balancer. :param pulumi.Input[str] ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param pulumi.Input[str] network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param pulumi.Input[str] port: The configured port of the load balancer. :param pulumi.Input[str] project: The ID of the project in which the load balancer belongs. @@ -1157,7 +1158,7 @@ def ip_protocol(self, value: pulumi.Input[str]): @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> pulumi.Input[str]: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") @@ -1251,7 +1252,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] ip_address: The frontend IP address of the load balancer. :param pulumi.Input[str] ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param pulumi.Input[str] network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param pulumi.Input[str] port: The configured port of the load balancer. :param pulumi.Input[str] project: The ID of the project in which the load balancer belongs. @@ -1294,7 +1295,7 @@ def ip_protocol(self, value: pulumi.Input[str]): @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> pulumi.Input[str]: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") @@ -1444,7 +1445,7 @@ def __init__(__self__, *, """ :param pulumi.Input[str] ip_address: The frontend IP address of the load balancer. :param pulumi.Input[str] ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param pulumi.Input[str] load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param pulumi.Input[str] network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param pulumi.Input[str] port: The configured port of the load balancer. :param pulumi.Input[str] project: The ID of the project in which the load balancer belongs. @@ -1487,7 +1488,7 @@ def ip_protocol(self, value: pulumi.Input[str]): @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> pulumi.Input[str]: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") diff --git a/sdk/python/pulumi_gcp/dns/managed_zone.py b/sdk/python/pulumi_gcp/dns/managed_zone.py index ea5ac2ee7f..af77209f34 100644 --- a/sdk/python/pulumi_gcp/dns/managed_zone.py +++ b/sdk/python/pulumi_gcp/dns/managed_zone.py @@ -52,7 +52,7 @@ def __init__(__self__, *, zone. The value of this field contains the network to peer with. Structure is documented below. :param pulumi.Input['ManagedZonePrivateVisibilityConfigArgs'] private_visibility_config: For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. @@ -219,7 +219,7 @@ def peering_config(self, value: Optional[pulumi.Input['ManagedZonePeeringConfigA def private_visibility_config(self) -> Optional[pulumi.Input['ManagedZonePrivateVisibilityConfigArgs']]: """ For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. """ return pulumi.get(self, "private_visibility_config") @@ -331,7 +331,7 @@ def __init__(__self__, *, zone. The value of this field contains the network to peer with. Structure is documented below. :param pulumi.Input['ManagedZonePrivateVisibilityConfigArgs'] private_visibility_config: For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. @@ -543,7 +543,7 @@ def peering_config(self, value: Optional[pulumi.Input['ManagedZonePeeringConfigA def private_visibility_config(self) -> Optional[pulumi.Input['ManagedZonePrivateVisibilityConfigArgs']]: """ For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. """ return pulumi.get(self, "private_visibility_config") @@ -767,9 +767,6 @@ def __init__(__self__, }, visibility="private", private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs( - networks=[gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs( - network_url=network_1.id, - )], gke_clusters=[gcp.dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs( gke_cluster_name=cluster_1.id, )], @@ -876,7 +873,7 @@ def __init__(__self__, zone. The value of this field contains the network to peer with. Structure is documented below. :param pulumi.Input[pulumi.InputType['ManagedZonePrivateVisibilityConfigArgs']] private_visibility_config: For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. @@ -1035,9 +1032,6 @@ def __init__(__self__, }, visibility="private", private_visibility_config=gcp.dns.ManagedZonePrivateVisibilityConfigArgs( - networks=[gcp.dns.ManagedZonePrivateVisibilityConfigNetworkArgs( - network_url=network_1.id, - )], gke_clusters=[gcp.dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs( gke_cluster_name=cluster_1.id, )], @@ -1240,7 +1234,7 @@ def get(resource_name: str, zone. The value of this field contains the network to peer with. Structure is documented below. :param pulumi.Input[pulumi.InputType['ManagedZonePrivateVisibilityConfigArgs']] private_visibility_config: For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. @@ -1390,7 +1384,7 @@ def peering_config(self) -> pulumi.Output[Optional['outputs.ManagedZonePeeringCo def private_visibility_config(self) -> pulumi.Output[Optional['outputs.ManagedZonePrivateVisibilityConfig']]: """ For privately visible zones, the set of Virtual Private Cloud - resources that the zone is visible from. + resources that the zone is visible from. At least one of `gke_clusters` or `networks` must be specified. Structure is documented below. """ return pulumi.get(self, "private_visibility_config") diff --git a/sdk/python/pulumi_gcp/dns/outputs.py b/sdk/python/pulumi_gcp/dns/outputs.py index 95c9c8b047..7d6f4fe329 100644 --- a/sdk/python/pulumi_gcp/dns/outputs.py +++ b/sdk/python/pulumi_gcp/dns/outputs.py @@ -508,20 +508,16 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, - networks: Sequence['outputs.ManagedZonePrivateVisibilityConfigNetwork'], - gke_clusters: Optional[Sequence['outputs.ManagedZonePrivateVisibilityConfigGkeCluster']] = None): + gke_clusters: Optional[Sequence['outputs.ManagedZonePrivateVisibilityConfigGkeCluster']] = None, + networks: Optional[Sequence['outputs.ManagedZonePrivateVisibilityConfigNetwork']] = None): """ :param Sequence['ManagedZonePrivateVisibilityConfigGkeClusterArgs'] gke_clusters: The list of Google Kubernetes Engine clusters that can see this zone. Structure is documented below. """ - pulumi.set(__self__, "networks", networks) if gke_clusters is not None: pulumi.set(__self__, "gke_clusters", gke_clusters) - - @property - @pulumi.getter - def networks(self) -> Sequence['outputs.ManagedZonePrivateVisibilityConfigNetwork']: - return pulumi.get(self, "networks") + if networks is not None: + pulumi.set(__self__, "networks", networks) @property @pulumi.getter(name="gkeClusters") @@ -532,6 +528,11 @@ def gke_clusters(self) -> Optional[Sequence['outputs.ManagedZonePrivateVisibilit """ return pulumi.get(self, "gke_clusters") + @property + @pulumi.getter + def networks(self) -> Optional[Sequence['outputs.ManagedZonePrivateVisibilityConfigNetwork']]: + return pulumi.get(self, "networks") + @pulumi.output_type class ManagedZonePrivateVisibilityConfigGkeCluster(dict): @@ -1023,7 +1024,7 @@ def __init__(__self__, *, """ :param str ip_address: The frontend IP address of the load balancer. :param str ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param str network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param str port: The configured port of the load balancer. :param str project: The ID of the project in which the load balancer belongs. @@ -1058,7 +1059,7 @@ def ip_protocol(self) -> str: @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> str: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") @@ -1307,7 +1308,7 @@ def __init__(__self__, *, """ :param str ip_address: The frontend IP address of the load balancer. :param str ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param str network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param str port: The configured port of the load balancer. :param str project: The ID of the project in which the load balancer belongs. @@ -1342,7 +1343,7 @@ def ip_protocol(self) -> str: @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> str: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") @@ -1452,7 +1453,7 @@ def __init__(__self__, *, """ :param str ip_address: The frontend IP address of the load balancer. :param str ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param str network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param str port: The configured port of the load balancer. :param str project: The ID of the project in which the load balancer belongs. @@ -1487,7 +1488,7 @@ def ip_protocol(self) -> str: @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> str: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") @@ -1658,7 +1659,7 @@ def __init__(__self__, *, """ :param str ip_address: The frontend IP address of the load balancer. :param str ip_protocol: The configured IP protocol of the load balancer. This value is case-sensitive. Possible values: ["tcp", "udp"] - :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + :param str load_balancer_type: The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] :param str network_url: The fully qualified url of the network in which the load balancer belongs. This should be formatted like `projects/{project}/global/networks/{network}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`. :param str port: The configured port of the load balancer. :param str project: The ID of the project in which the load balancer belongs. @@ -1693,7 +1694,7 @@ def ip_protocol(self) -> str: @pulumi.getter(name="loadBalancerType") def load_balancer_type(self) -> str: """ - The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb"] + The type of load balancer. This value is case-sensitive. Possible values: ["regionalL4ilb", "regionalL7ilb", "globalL7ilb"] """ return pulumi.get(self, "load_balancer_type") diff --git a/sdk/python/pulumi_gcp/gkeonprem/_inputs.py b/sdk/python/pulumi_gcp/gkeonprem/_inputs.py index 991522ff9f..ba74cb1ea8 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/_inputs.py +++ b/sdk/python/pulumi_gcp/gkeonprem/_inputs.py @@ -4326,15 +4326,20 @@ def enabled(self, value: pulumi.Input[bool]): @pulumi.input_type class VMwareClusterControlPlaneNodeVsphereConfigArgs: def __init__(__self__, *, - datastore: Optional[pulumi.Input[str]] = None): + datastore: Optional[pulumi.Input[str]] = None, + storage_policy_name: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] datastore: (Output) The Vsphere datastore used by the Control Plane Node. + :param pulumi.Input[str] storage_policy_name: (Output) + The Vsphere storage policy used by the control plane Node. - - - """ if datastore is not None: pulumi.set(__self__, "datastore", datastore) + if storage_policy_name is not None: + pulumi.set(__self__, "storage_policy_name", storage_policy_name) @property @pulumi.getter @@ -4342,8 +4347,6 @@ def datastore(self) -> Optional[pulumi.Input[str]]: """ (Output) The Vsphere datastore used by the Control Plane Node. - - - - - """ return pulumi.get(self, "datastore") @@ -4351,6 +4354,21 @@ def datastore(self) -> Optional[pulumi.Input[str]]: def datastore(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "datastore", value) + @property + @pulumi.getter(name="storagePolicyName") + def storage_policy_name(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The Vsphere storage policy used by the control plane Node. + + - - - + """ + return pulumi.get(self, "storage_policy_name") + + @storage_policy_name.setter + def storage_policy_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "storage_policy_name", value) + @pulumi.input_type class VMwareClusterDataplaneV2Args: @@ -5628,7 +5646,8 @@ def __init__(__self__, *, datacenter: Optional[pulumi.Input[str]] = None, datastore: Optional[pulumi.Input[str]] = None, folder: Optional[pulumi.Input[str]] = None, - resource_pool: Optional[pulumi.Input[str]] = None): + resource_pool: Optional[pulumi.Input[str]] = None, + storage_policy_name: Optional[pulumi.Input[str]] = None): """ :param pulumi.Input[str] address: The load balancer's IP address. :param pulumi.Input[str] ca_cert_data: (Output) @@ -5639,12 +5658,14 @@ def __init__(__self__, *, The name of the vCenter datacenter for the user cluster. :param pulumi.Input[str] datastore: (Output) The Vsphere datastore used by the Control Plane Node. - - - - - :param pulumi.Input[str] folder: (Output) The name of the vCenter folder for the user cluster. :param pulumi.Input[str] resource_pool: (Output) The name of the vCenter resource pool for the user cluster. + :param pulumi.Input[str] storage_policy_name: (Output) + The Vsphere storage policy used by the control plane Node. + + - - - """ if address is not None: pulumi.set(__self__, "address", address) @@ -5660,6 +5681,8 @@ def __init__(__self__, *, pulumi.set(__self__, "folder", folder) if resource_pool is not None: pulumi.set(__self__, "resource_pool", resource_pool) + if storage_policy_name is not None: + pulumi.set(__self__, "storage_policy_name", storage_policy_name) @property @pulumi.getter @@ -5718,8 +5741,6 @@ def datastore(self) -> Optional[pulumi.Input[str]]: """ (Output) The Vsphere datastore used by the Control Plane Node. - - - - - """ return pulumi.get(self, "datastore") @@ -5753,6 +5774,21 @@ def resource_pool(self) -> Optional[pulumi.Input[str]]: def resource_pool(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "resource_pool", value) + @property + @pulumi.getter(name="storagePolicyName") + def storage_policy_name(self) -> Optional[pulumi.Input[str]]: + """ + (Output) + The Vsphere storage policy used by the control plane Node. + + - - - + """ + return pulumi.get(self, "storage_policy_name") + + @storage_policy_name.setter + def storage_policy_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "storage_policy_name", value) + @pulumi.input_type class VMwareNodePoolConfigArgs: diff --git a/sdk/python/pulumi_gcp/gkeonprem/outputs.py b/sdk/python/pulumi_gcp/gkeonprem/outputs.py index e361651f40..24ec932c02 100644 --- a/sdk/python/pulumi_gcp/gkeonprem/outputs.py +++ b/sdk/python/pulumi_gcp/gkeonprem/outputs.py @@ -4684,16 +4684,38 @@ def enabled(self) -> bool: @pulumi.output_type class VMwareClusterControlPlaneNodeVsphereConfig(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "storagePolicyName": + suggest = "storage_policy_name" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in VMwareClusterControlPlaneNodeVsphereConfig. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + VMwareClusterControlPlaneNodeVsphereConfig.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + VMwareClusterControlPlaneNodeVsphereConfig.__key_warning(key) + return super().get(key, default) + def __init__(__self__, *, - datastore: Optional[str] = None): + datastore: Optional[str] = None, + storage_policy_name: Optional[str] = None): """ :param str datastore: (Output) The Vsphere datastore used by the Control Plane Node. + :param str storage_policy_name: (Output) + The Vsphere storage policy used by the control plane Node. - - - """ if datastore is not None: pulumi.set(__self__, "datastore", datastore) + if storage_policy_name is not None: + pulumi.set(__self__, "storage_policy_name", storage_policy_name) @property @pulumi.getter @@ -4701,10 +4723,19 @@ def datastore(self) -> Optional[str]: """ (Output) The Vsphere datastore used by the Control Plane Node. + """ + return pulumi.get(self, "datastore") + + @property + @pulumi.getter(name="storagePolicyName") + def storage_policy_name(self) -> Optional[str]: + """ + (Output) + The Vsphere storage policy used by the control plane Node. - - - """ - return pulumi.get(self, "datastore") + return pulumi.get(self, "storage_policy_name") @pulumi.output_type @@ -6009,6 +6040,8 @@ def __key_warning(key: str): suggest = "ca_cert_data" elif key == "resourcePool": suggest = "resource_pool" + elif key == "storagePolicyName": + suggest = "storage_policy_name" if suggest: pulumi.log.warn(f"Key '{key}' not found in VMwareClusterVcenter. Access the value via the '{suggest}' property getter instead.") @@ -6028,7 +6061,8 @@ def __init__(__self__, *, datacenter: Optional[str] = None, datastore: Optional[str] = None, folder: Optional[str] = None, - resource_pool: Optional[str] = None): + resource_pool: Optional[str] = None, + storage_policy_name: Optional[str] = None): """ :param str address: The load balancer's IP address. :param str ca_cert_data: (Output) @@ -6039,12 +6073,14 @@ def __init__(__self__, *, The name of the vCenter datacenter for the user cluster. :param str datastore: (Output) The Vsphere datastore used by the Control Plane Node. - - - - - :param str folder: (Output) The name of the vCenter folder for the user cluster. :param str resource_pool: (Output) The name of the vCenter resource pool for the user cluster. + :param str storage_policy_name: (Output) + The Vsphere storage policy used by the control plane Node. + + - - - """ if address is not None: pulumi.set(__self__, "address", address) @@ -6060,6 +6096,8 @@ def __init__(__self__, *, pulumi.set(__self__, "folder", folder) if resource_pool is not None: pulumi.set(__self__, "resource_pool", resource_pool) + if storage_policy_name is not None: + pulumi.set(__self__, "storage_policy_name", storage_policy_name) @property @pulumi.getter @@ -6102,8 +6140,6 @@ def datastore(self) -> Optional[str]: """ (Output) The Vsphere datastore used by the Control Plane Node. - - - - - """ return pulumi.get(self, "datastore") @@ -6125,6 +6161,17 @@ def resource_pool(self) -> Optional[str]: """ return pulumi.get(self, "resource_pool") + @property + @pulumi.getter(name="storagePolicyName") + def storage_policy_name(self) -> Optional[str]: + """ + (Output) + The Vsphere storage policy used by the control plane Node. + + - - - + """ + return pulumi.get(self, "storage_policy_name") + @pulumi.output_type class VMwareNodePoolConfig(dict): diff --git a/sdk/python/pulumi_gcp/healthcare/fhir_store.py b/sdk/python/pulumi_gcp/healthcare/fhir_store.py index 80d67cfeb1..8db9155b94 100644 --- a/sdk/python/pulumi_gcp/healthcare/fhir_store.py +++ b/sdk/python/pulumi_gcp/healthcare/fhir_store.py @@ -18,6 +18,7 @@ class FhirStoreArgs: def __init__(__self__, *, dataset: pulumi.Input[str], complex_data_type_reference_parsing: Optional[pulumi.Input[str]] = None, + default_search_handling_strict: Optional[pulumi.Input[bool]] = None, disable_referential_integrity: Optional[pulumi.Input[bool]] = None, disable_resource_versioning: Optional[pulumi.Input[bool]] = None, enable_history_import: Optional[pulumi.Input[bool]] = None, @@ -37,6 +38,9 @@ def __init__(__self__, *, - - - :param pulumi.Input[str] complex_data_type_reference_parsing: Enable parsing of references within complex FHIR data types such as Extensions. If this value is set to ENABLED, then features like referential integrity and Bundle reference rewriting apply to all references. If this flag has not been specified the behavior of the FHIR store will not change, references in complex data types will not be parsed. New stores will have this value set to ENABLED by default after a notification period. Warning: turning on this flag causes processing existing resources to fail if they contain references to non-existent resources. Possible values are: `COMPLEX_DATA_TYPE_REFERENCE_PARSING_UNSPECIFIED`, `DISABLED`, `ENABLED`. + :param pulumi.Input[bool] default_search_handling_strict: If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. :param pulumi.Input[bool] disable_referential_integrity: Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API will enforce referential integrity and fail the requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -88,6 +92,8 @@ def __init__(__self__, *, pulumi.set(__self__, "dataset", dataset) if complex_data_type_reference_parsing is not None: pulumi.set(__self__, "complex_data_type_reference_parsing", complex_data_type_reference_parsing) + if default_search_handling_strict is not None: + pulumi.set(__self__, "default_search_handling_strict", default_search_handling_strict) if disable_referential_integrity is not None: pulumi.set(__self__, "disable_referential_integrity", disable_referential_integrity) if disable_resource_versioning is not None: @@ -138,6 +144,20 @@ def complex_data_type_reference_parsing(self) -> Optional[pulumi.Input[str]]: def complex_data_type_reference_parsing(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "complex_data_type_reference_parsing", value) + @property + @pulumi.getter(name="defaultSearchHandlingStrict") + def default_search_handling_strict(self) -> Optional[pulumi.Input[bool]]: + """ + If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + """ + return pulumi.get(self, "default_search_handling_strict") + + @default_search_handling_strict.setter + def default_search_handling_strict(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "default_search_handling_strict", value) + @property @pulumi.getter(name="disableReferentialIntegrity") def disable_referential_integrity(self) -> Optional[pulumi.Input[bool]]: @@ -301,6 +321,7 @@ class _FhirStoreState: def __init__(__self__, *, complex_data_type_reference_parsing: Optional[pulumi.Input[str]] = None, dataset: Optional[pulumi.Input[str]] = None, + default_search_handling_strict: Optional[pulumi.Input[bool]] = None, disable_referential_integrity: Optional[pulumi.Input[bool]] = None, disable_resource_versioning: Optional[pulumi.Input[bool]] = None, enable_history_import: Optional[pulumi.Input[bool]] = None, @@ -321,6 +342,9 @@ def __init__(__self__, *, - - - + :param pulumi.Input[bool] default_search_handling_strict: If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. :param pulumi.Input[bool] disable_referential_integrity: Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API will enforce referential integrity and fail the requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -374,6 +398,8 @@ def __init__(__self__, *, pulumi.set(__self__, "complex_data_type_reference_parsing", complex_data_type_reference_parsing) if dataset is not None: pulumi.set(__self__, "dataset", dataset) + if default_search_handling_strict is not None: + pulumi.set(__self__, "default_search_handling_strict", default_search_handling_strict) if disable_referential_integrity is not None: pulumi.set(__self__, "disable_referential_integrity", disable_referential_integrity) if disable_resource_versioning is not None: @@ -426,6 +452,20 @@ def dataset(self) -> Optional[pulumi.Input[str]]: def dataset(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "dataset", value) + @property + @pulumi.getter(name="defaultSearchHandlingStrict") + def default_search_handling_strict(self) -> Optional[pulumi.Input[bool]]: + """ + If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + """ + return pulumi.get(self, "default_search_handling_strict") + + @default_search_handling_strict.setter + def default_search_handling_strict(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "default_search_handling_strict", value) + @property @pulumi.getter(name="disableReferentialIntegrity") def disable_referential_integrity(self) -> Optional[pulumi.Input[bool]]: @@ -603,6 +643,7 @@ def __init__(__self__, opts: Optional[pulumi.ResourceOptions] = None, complex_data_type_reference_parsing: Optional[pulumi.Input[str]] = None, dataset: Optional[pulumi.Input[str]] = None, + default_search_handling_strict: Optional[pulumi.Input[bool]] = None, disable_referential_integrity: Optional[pulumi.Input[bool]] = None, disable_resource_versioning: Optional[pulumi.Input[bool]] = None, enable_history_import: Optional[pulumi.Input[bool]] = None, @@ -641,6 +682,7 @@ def __init__(__self__, disable_referential_integrity=False, disable_resource_versioning=False, enable_history_import=False, + default_search_handling_strict=False, notification_config=gcp.healthcare.FhirStoreNotificationConfigArgs( pubsub_topic=topic.id, ), @@ -756,6 +798,9 @@ def __init__(__self__, - - - + :param pulumi.Input[bool] default_search_handling_strict: If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. :param pulumi.Input[bool] disable_referential_integrity: Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API will enforce referential integrity and fail the requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -837,6 +882,7 @@ def __init__(__self__, disable_referential_integrity=False, disable_resource_versioning=False, enable_history_import=False, + default_search_handling_strict=False, notification_config=gcp.healthcare.FhirStoreNotificationConfigArgs( pubsub_topic=topic.id, ), @@ -960,6 +1006,7 @@ def _internal_init(__self__, opts: Optional[pulumi.ResourceOptions] = None, complex_data_type_reference_parsing: Optional[pulumi.Input[str]] = None, dataset: Optional[pulumi.Input[str]] = None, + default_search_handling_strict: Optional[pulumi.Input[bool]] = None, disable_referential_integrity: Optional[pulumi.Input[bool]] = None, disable_resource_versioning: Optional[pulumi.Input[bool]] = None, enable_history_import: Optional[pulumi.Input[bool]] = None, @@ -983,6 +1030,7 @@ def _internal_init(__self__, if dataset is None and not opts.urn: raise TypeError("Missing required property 'dataset'") __props__.__dict__["dataset"] = dataset + __props__.__dict__["default_search_handling_strict"] = default_search_handling_strict __props__.__dict__["disable_referential_integrity"] = disable_referential_integrity __props__.__dict__["disable_resource_versioning"] = disable_resource_versioning __props__.__dict__["enable_history_import"] = enable_history_import @@ -1006,6 +1054,7 @@ def get(resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, complex_data_type_reference_parsing: Optional[pulumi.Input[str]] = None, dataset: Optional[pulumi.Input[str]] = None, + default_search_handling_strict: Optional[pulumi.Input[bool]] = None, disable_referential_integrity: Optional[pulumi.Input[bool]] = None, disable_resource_versioning: Optional[pulumi.Input[bool]] = None, enable_history_import: Optional[pulumi.Input[bool]] = None, @@ -1031,6 +1080,9 @@ def get(resource_name: str, - - - + :param pulumi.Input[bool] default_search_handling_strict: If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. :param pulumi.Input[bool] disable_referential_integrity: Whether to disable referential integrity in this FHIR store. This field is immutable after FHIR store creation. The default value is false, meaning that the API will enforce referential integrity and fail the requests that will result in inconsistent state in the FHIR store. When this field is set to true, the API @@ -1086,6 +1138,7 @@ def get(resource_name: str, __props__.__dict__["complex_data_type_reference_parsing"] = complex_data_type_reference_parsing __props__.__dict__["dataset"] = dataset + __props__.__dict__["default_search_handling_strict"] = default_search_handling_strict __props__.__dict__["disable_referential_integrity"] = disable_referential_integrity __props__.__dict__["disable_resource_versioning"] = disable_resource_versioning __props__.__dict__["enable_history_import"] = enable_history_import @@ -1120,6 +1173,16 @@ def dataset(self) -> pulumi.Output[str]: """ return pulumi.get(self, "dataset") + @property + @pulumi.getter(name="defaultSearchHandlingStrict") + def default_search_handling_strict(self) -> pulumi.Output[Optional[bool]]: + """ + If true, overrides the default search behavior for this FHIR store to handling=strict which returns an error for unrecognized search parameters. + If false, uses the FHIR specification default handling=lenient which ignores unrecognized search parameters. + The handling can always be changed from the default on an individual API call by setting the HTTP header Prefer: handling=strict or Prefer: handling=lenient. + """ + return pulumi.get(self, "default_search_handling_strict") + @property @pulumi.getter(name="disableReferentialIntegrity") def disable_referential_integrity(self) -> pulumi.Output[Optional[bool]]: diff --git a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py index b854b0a306..8f38e40f9f 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py @@ -146,7 +146,7 @@ def get_app_engine_service(module_id: Optional[str] = None, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) myapp = gcp.appengine.StandardAppVersion("myapp", version_id="v1", service="myapp", @@ -222,7 +222,7 @@ def get_app_engine_service_output(module_id: Optional[pulumi.Input[str]] = None, bucket = gcp.storage.Bucket("bucket", location="US") object = gcp.storage.BucketObject("object", bucket=bucket.name, - source=pulumi.FileAsset("./test-fixtures/appengine/hello-world.zip")) + source=pulumi.FileAsset("./test-fixtures/hello-world.zip")) myapp = gcp.appengine.StandardAppVersion("myapp", version_id="v1", service="myapp", diff --git a/sdk/python/pulumi_gcp/networkservices/gateway.py b/sdk/python/pulumi_gcp/networkservices/gateway.py index 0873f6c2a9..807b642244 100644 --- a/sdk/python/pulumi_gcp/networkservices/gateway.py +++ b/sdk/python/pulumi_gcp/networkservices/gateway.py @@ -708,8 +708,8 @@ def __init__(__self__, default_certificate = gcp.certificatemanager.Certificate("defaultCertificate", location="us-central1", self_managed=gcp.certificatemanager.CertificateSelfManagedArgs( - pem_certificate=(lambda path: open(path).read())("test-fixtures/certificatemanager/cert.pem"), - pem_private_key=(lambda path: open(path).read())("test-fixtures/certificatemanager/private-key.pem"), + pem_certificate=(lambda path: open(path).read())("test-fixtures/cert.pem"), + pem_private_key=(lambda path: open(path).read())("test-fixtures/private-key.pem"), )) default_network = gcp.compute.Network("defaultNetwork", routing_mode="REGIONAL", @@ -756,8 +756,8 @@ def __init__(__self__, default_certificate = gcp.certificatemanager.Certificate("defaultCertificate", location="us-south1", self_managed=gcp.certificatemanager.CertificateSelfManagedArgs( - pem_certificate=(lambda path: open(path).read())("test-fixtures/certificatemanager/cert.pem"), - pem_private_key=(lambda path: open(path).read())("test-fixtures/certificatemanager/private-key.pem"), + pem_certificate=(lambda path: open(path).read())("test-fixtures/cert.pem"), + pem_private_key=(lambda path: open(path).read())("test-fixtures/private-key.pem"), )) default_network = gcp.compute.Network("defaultNetwork", routing_mode="REGIONAL", @@ -916,8 +916,8 @@ def __init__(__self__, default_certificate = gcp.certificatemanager.Certificate("defaultCertificate", location="us-central1", self_managed=gcp.certificatemanager.CertificateSelfManagedArgs( - pem_certificate=(lambda path: open(path).read())("test-fixtures/certificatemanager/cert.pem"), - pem_private_key=(lambda path: open(path).read())("test-fixtures/certificatemanager/private-key.pem"), + pem_certificate=(lambda path: open(path).read())("test-fixtures/cert.pem"), + pem_private_key=(lambda path: open(path).read())("test-fixtures/private-key.pem"), )) default_network = gcp.compute.Network("defaultNetwork", routing_mode="REGIONAL", @@ -964,8 +964,8 @@ def __init__(__self__, default_certificate = gcp.certificatemanager.Certificate("defaultCertificate", location="us-south1", self_managed=gcp.certificatemanager.CertificateSelfManagedArgs( - pem_certificate=(lambda path: open(path).read())("test-fixtures/certificatemanager/cert.pem"), - pem_private_key=(lambda path: open(path).read())("test-fixtures/certificatemanager/private-key.pem"), + pem_certificate=(lambda path: open(path).read())("test-fixtures/cert.pem"), + pem_private_key=(lambda path: open(path).read())("test-fixtures/private-key.pem"), )) default_network = gcp.compute.Network("defaultNetwork", routing_mode="REGIONAL", diff --git a/sdk/python/pulumi_gcp/provider.py b/sdk/python/pulumi_gcp/provider.py index 75625a7a2d..d20bc3cdb6 100644 --- a/sdk/python/pulumi_gcp/provider.py +++ b/sdk/python/pulumi_gcp/provider.py @@ -26,6 +26,7 @@ def __init__(__self__, *, app_engine_custom_endpoint: Optional[pulumi.Input[str]] = None, artifact_registry_custom_endpoint: Optional[pulumi.Input[str]] = None, assured_workloads_custom_endpoint: Optional[pulumi.Input[str]] = None, + backup_dr_custom_endpoint: Optional[pulumi.Input[str]] = None, batching: Optional[pulumi.Input['ProviderBatchingArgs']] = None, beyondcorp_custom_endpoint: Optional[pulumi.Input[str]] = None, big_query_custom_endpoint: Optional[pulumi.Input[str]] = None, @@ -185,6 +186,8 @@ def __init__(__self__, *, pulumi.set(__self__, "artifact_registry_custom_endpoint", artifact_registry_custom_endpoint) if assured_workloads_custom_endpoint is not None: pulumi.set(__self__, "assured_workloads_custom_endpoint", assured_workloads_custom_endpoint) + if backup_dr_custom_endpoint is not None: + pulumi.set(__self__, "backup_dr_custom_endpoint", backup_dr_custom_endpoint) if batching is not None: pulumi.set(__self__, "batching", batching) if beyondcorp_custom_endpoint is not None: @@ -559,6 +562,15 @@ def assured_workloads_custom_endpoint(self) -> Optional[pulumi.Input[str]]: def assured_workloads_custom_endpoint(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "assured_workloads_custom_endpoint", value) + @property + @pulumi.getter(name="backupDrCustomEndpoint") + def backup_dr_custom_endpoint(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "backup_dr_custom_endpoint") + + @backup_dr_custom_endpoint.setter + def backup_dr_custom_endpoint(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "backup_dr_custom_endpoint", value) + @property @pulumi.getter def batching(self) -> Optional[pulumi.Input['ProviderBatchingArgs']]: @@ -1782,6 +1794,7 @@ def __init__(__self__, app_engine_custom_endpoint: Optional[pulumi.Input[str]] = None, artifact_registry_custom_endpoint: Optional[pulumi.Input[str]] = None, assured_workloads_custom_endpoint: Optional[pulumi.Input[str]] = None, + backup_dr_custom_endpoint: Optional[pulumi.Input[str]] = None, batching: Optional[pulumi.Input[pulumi.InputType['ProviderBatchingArgs']]] = None, beyondcorp_custom_endpoint: Optional[pulumi.Input[str]] = None, big_query_custom_endpoint: Optional[pulumi.Input[str]] = None, @@ -1964,6 +1977,7 @@ def _internal_init(__self__, app_engine_custom_endpoint: Optional[pulumi.Input[str]] = None, artifact_registry_custom_endpoint: Optional[pulumi.Input[str]] = None, assured_workloads_custom_endpoint: Optional[pulumi.Input[str]] = None, + backup_dr_custom_endpoint: Optional[pulumi.Input[str]] = None, batching: Optional[pulumi.Input[pulumi.InputType['ProviderBatchingArgs']]] = None, beyondcorp_custom_endpoint: Optional[pulumi.Input[str]] = None, big_query_custom_endpoint: Optional[pulumi.Input[str]] = None, @@ -2118,6 +2132,7 @@ def _internal_init(__self__, __props__.__dict__["app_engine_custom_endpoint"] = app_engine_custom_endpoint __props__.__dict__["artifact_registry_custom_endpoint"] = artifact_registry_custom_endpoint __props__.__dict__["assured_workloads_custom_endpoint"] = assured_workloads_custom_endpoint + __props__.__dict__["backup_dr_custom_endpoint"] = backup_dr_custom_endpoint __props__.__dict__["batching"] = pulumi.Output.from_input(batching).apply(pulumi.runtime.to_json) if batching is not None else None __props__.__dict__["beyondcorp_custom_endpoint"] = beyondcorp_custom_endpoint __props__.__dict__["big_query_custom_endpoint"] = big_query_custom_endpoint @@ -2319,6 +2334,11 @@ def artifact_registry_custom_endpoint(self) -> pulumi.Output[Optional[str]]: def assured_workloads_custom_endpoint(self) -> pulumi.Output[Optional[str]]: return pulumi.get(self, "assured_workloads_custom_endpoint") + @property + @pulumi.getter(name="backupDrCustomEndpoint") + def backup_dr_custom_endpoint(self) -> pulumi.Output[Optional[str]]: + return pulumi.get(self, "backup_dr_custom_endpoint") + @property @pulumi.getter(name="beyondcorpCustomEndpoint") def beyondcorp_custom_endpoint(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_gcp/secretmanager/get_secret.py b/sdk/python/pulumi_gcp/secretmanager/get_secret.py index e15f05443c..b99a1433b4 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_secret.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_secret.py @@ -22,7 +22,7 @@ class GetSecretResult: """ A collection of values returned by getSecret. """ - def __init__(__self__, annotations=None, create_time=None, expire_time=None, id=None, labels=None, name=None, project=None, replications=None, rotations=None, secret_id=None, topics=None, ttl=None): + def __init__(__self__, annotations=None, create_time=None, expire_time=None, id=None, labels=None, name=None, project=None, replications=None, rotations=None, secret_id=None, topics=None, ttl=None, version_aliases=None): if annotations and not isinstance(annotations, dict): raise TypeError("Expected argument 'annotations' to be a dict") pulumi.set(__self__, "annotations", annotations) @@ -59,6 +59,9 @@ def __init__(__self__, annotations=None, create_time=None, expire_time=None, id= if ttl and not isinstance(ttl, str): raise TypeError("Expected argument 'ttl' to be a str") pulumi.set(__self__, "ttl", ttl) + if version_aliases and not isinstance(version_aliases, dict): + raise TypeError("Expected argument 'version_aliases' to be a dict") + pulumi.set(__self__, "version_aliases", version_aliases) @property @pulumi.getter @@ -123,6 +126,11 @@ def topics(self) -> Sequence['outputs.GetSecretTopicResult']: def ttl(self) -> str: return pulumi.get(self, "ttl") + @property + @pulumi.getter(name="versionAliases") + def version_aliases(self) -> Mapping[str, str]: + return pulumi.get(self, "version_aliases") + class AwaitableGetSecretResult(GetSecretResult): # pylint: disable=using-constant-test @@ -141,7 +149,8 @@ def __await__(self): rotations=self.rotations, secret_id=self.secret_id, topics=self.topics, - ttl=self.ttl) + ttl=self.ttl, + version_aliases=self.version_aliases) def get_secret(project: Optional[str] = None, @@ -181,7 +190,8 @@ def get_secret(project: Optional[str] = None, rotations=pulumi.get(__ret__, 'rotations'), secret_id=pulumi.get(__ret__, 'secret_id'), topics=pulumi.get(__ret__, 'topics'), - ttl=pulumi.get(__ret__, 'ttl')) + ttl=pulumi.get(__ret__, 'ttl'), + version_aliases=pulumi.get(__ret__, 'version_aliases')) @_utilities.lift_output_func(get_secret) diff --git a/sdk/python/pulumi_gcp/secretmanager/secret.py b/sdk/python/pulumi_gcp/secretmanager/secret.py index d0676ea0ca..a4478f9576 100644 --- a/sdk/python/pulumi_gcp/secretmanager/secret.py +++ b/sdk/python/pulumi_gcp/secretmanager/secret.py @@ -24,7 +24,8 @@ def __init__(__self__, *, project: Optional[pulumi.Input[str]] = None, rotation: Optional[pulumi.Input['SecretRotationArgs']] = None, topics: Optional[pulumi.Input[Sequence[pulumi.Input['SecretTopicArgs']]]] = None, - ttl: Optional[pulumi.Input[str]] = None): + ttl: Optional[pulumi.Input[str]] = None, + version_aliases: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ The set of arguments for constructing a Secret resource. :param pulumi.Input['SecretReplicationArgs'] replication: The replication policy of the secret data attached to the Secret. It cannot be changed @@ -59,6 +60,13 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input[str] ttl: The TTL for the Secret. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] version_aliases: Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. """ pulumi.set(__self__, "replication", replication) pulumi.set(__self__, "secret_id", secret_id) @@ -76,6 +84,8 @@ def __init__(__self__, *, pulumi.set(__self__, "topics", topics) if ttl is not None: pulumi.set(__self__, "ttl", ttl) + if version_aliases is not None: + pulumi.set(__self__, "version_aliases", version_aliases) @property @pulumi.getter @@ -208,6 +218,24 @@ def ttl(self) -> Optional[pulumi.Input[str]]: def ttl(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "ttl", value) + @property + @pulumi.getter(name="versionAliases") + def version_aliases(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. + """ + return pulumi.get(self, "version_aliases") + + @version_aliases.setter + def version_aliases(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "version_aliases", value) + @pulumi.input_type class _SecretState: @@ -222,7 +250,8 @@ def __init__(__self__, *, rotation: Optional[pulumi.Input['SecretRotationArgs']] = None, secret_id: Optional[pulumi.Input[str]] = None, topics: Optional[pulumi.Input[Sequence[pulumi.Input['SecretTopicArgs']]]] = None, - ttl: Optional[pulumi.Input[str]] = None): + ttl: Optional[pulumi.Input[str]] = None, + version_aliases: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None): """ Input properties used for looking up and filtering Secret resources. :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Custom metadata about the secret. @@ -260,6 +289,13 @@ def __init__(__self__, *, Structure is documented below. :param pulumi.Input[str] ttl: The TTL for the Secret. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] version_aliases: Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. """ if annotations is not None: pulumi.set(__self__, "annotations", annotations) @@ -283,6 +319,8 @@ def __init__(__self__, *, pulumi.set(__self__, "topics", topics) if ttl is not None: pulumi.set(__self__, "ttl", ttl) + if version_aliases is not None: + pulumi.set(__self__, "version_aliases", version_aliases) @property @pulumi.getter @@ -440,6 +478,24 @@ def ttl(self) -> Optional[pulumi.Input[str]]: def ttl(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "ttl", value) + @property + @pulumi.getter(name="versionAliases") + def version_aliases(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]: + """ + Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. + """ + return pulumi.get(self, "version_aliases") + + @version_aliases.setter + def version_aliases(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]): + pulumi.set(self, "version_aliases", value) + class Secret(pulumi.CustomResource): @overload @@ -455,6 +511,7 @@ def __init__(__self__, secret_id: Optional[pulumi.Input[str]] = None, topics: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecretTopicArgs']]]]] = None, ttl: Optional[pulumi.Input[str]] = None, + version_aliases: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): """ A Secret is a logical secret whose value and versions can be accessed. @@ -561,6 +618,13 @@ def __init__(__self__, Structure is documented below. :param pulumi.Input[str] ttl: The TTL for the Secret. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] version_aliases: Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. """ ... @overload @@ -663,6 +727,7 @@ def _internal_init(__self__, secret_id: Optional[pulumi.Input[str]] = None, topics: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecretTopicArgs']]]]] = None, ttl: Optional[pulumi.Input[str]] = None, + version_aliases: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, __props__=None): opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) if not isinstance(opts, pulumi.ResourceOptions): @@ -685,6 +750,7 @@ def _internal_init(__self__, __props__.__dict__["secret_id"] = secret_id __props__.__dict__["topics"] = topics __props__.__dict__["ttl"] = ttl + __props__.__dict__["version_aliases"] = version_aliases __props__.__dict__["create_time"] = None __props__.__dict__["name"] = None super(Secret, __self__).__init__( @@ -707,7 +773,8 @@ def get(resource_name: str, rotation: Optional[pulumi.Input[pulumi.InputType['SecretRotationArgs']]] = None, secret_id: Optional[pulumi.Input[str]] = None, topics: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['SecretTopicArgs']]]]] = None, - ttl: Optional[pulumi.Input[str]] = None) -> 'Secret': + ttl: Optional[pulumi.Input[str]] = None, + version_aliases: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Secret': """ Get an existing Secret resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -750,6 +817,13 @@ def get(resource_name: str, Structure is documented below. :param pulumi.Input[str] ttl: The TTL for the Secret. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s". + :param pulumi.Input[Mapping[str, pulumi.Input[str]]] version_aliases: Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -766,6 +840,7 @@ def get(resource_name: str, __props__.__dict__["secret_id"] = secret_id __props__.__dict__["topics"] = topics __props__.__dict__["ttl"] = ttl + __props__.__dict__["version_aliases"] = version_aliases return Secret(resource_name, opts=opts, __props__=__props__) @property @@ -880,3 +955,17 @@ def ttl(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "ttl") + @property + @pulumi.getter(name="versionAliases") + def version_aliases(self) -> pulumi.Output[Optional[Mapping[str, str]]]: + """ + Mapping from version alias to version name. + A version alias is a string with a maximum length of 63 characters and can contain + uppercase and lowercase letters, numerals, and the hyphen (-) and underscore ('_') + characters. An alias string must start with a letter and cannot be the string + 'latest' or 'NEW'. No more than 50 aliases can be assigned to a given secret. + An object containing a list of "key": value pairs. Example: + { "name": "wrench", "mass": "1.3kg", "count": "3" }. + """ + return pulumi.get(self, "version_aliases") + diff --git a/upstream b/upstream index c6eecee53b..d63d0df55a 160000 --- a/upstream +++ b/upstream @@ -1 +1 @@ -Subproject commit c6eecee53b495c585720044010790846d5f463ce +Subproject commit d63d0df55a4291c0798fae4c8b94e15003689a3e